add testcase for TR_CONT.
and fix bug.
@@ -353,6 +353,37 @@ | ||
353 | 353 | return test_traydata_iterator_common(rec, len, expected, expected_len); |
354 | 354 | } |
355 | 355 | |
356 | +LOCAL UNITTEST_RESULT test_traydata_7() | |
357 | +{ | |
358 | + TRAYREC rec[] = { | |
359 | + {TS_INFO, 6, testdata_infoseg}, | |
360 | + {TS_TEXT|TR_CONT, 10, testdata_textseg}, | |
361 | + {TS_TEXT, 24-10, testdata_textseg+10}, | |
362 | + {TR_VOBJ, sizeof(testdata_vobjrec), (UB*)&testdata_vobjrec}, | |
363 | + {TR_TEXT, sizeof(testdata_text), (UB*)testdata_text}, | |
364 | + }; | |
365 | + W len = sizeof(rec)/sizeof(TRAYREC); | |
366 | + test_traydata_iterator_expected_t *expected = test_traydata_expected02; | |
367 | + W expected_len = sizeof(test_traydata_expected02)/sizeof(test_traydata_iterator_expected_t); | |
368 | + return test_traydata_iterator_common(rec, len, expected, expected_len); | |
369 | +} | |
370 | + | |
371 | +LOCAL UNITTEST_RESULT test_traydata_8() | |
372 | +{ | |
373 | + TRAYREC rec[] = { | |
374 | + {TS_INFO, 6, testdata_infoseg}, | |
375 | + {TS_TEXT|TR_CONT, 10, testdata_textseg}, | |
376 | + {TS_TEXT|TR_CONT, 10, testdata_textseg+10}, | |
377 | + {TS_TEXT, 24-20, testdata_textseg+20}, | |
378 | + {TR_VOBJ, sizeof(testdata_vobjrec), (UB*)&testdata_vobjrec}, | |
379 | + {TR_TEXT, sizeof(testdata_text), (UB*)testdata_text}, | |
380 | + }; | |
381 | + W len = sizeof(rec)/sizeof(TRAYREC); | |
382 | + test_traydata_iterator_expected_t *expected = test_traydata_expected02; | |
383 | + W expected_len = sizeof(test_traydata_expected02)/sizeof(test_traydata_iterator_expected_t); | |
384 | + return test_traydata_iterator_common(rec, len, expected, expected_len); | |
385 | +} | |
386 | + | |
356 | 387 | EXPORT VOID test_traydata_iterator_main(unittest_driver_t *driver) |
357 | 388 | { |
358 | 389 | UNITTEST_DRIVER_REGIST(driver, test_traydata_1); |
@@ -361,4 +392,6 @@ | ||
361 | 392 | UNITTEST_DRIVER_REGIST(driver, test_traydata_4); |
362 | 393 | UNITTEST_DRIVER_REGIST(driver, test_traydata_5); |
363 | 394 | UNITTEST_DRIVER_REGIST(driver, test_traydata_6); |
395 | + UNITTEST_DRIVER_REGIST(driver, test_traydata_7); | |
396 | + UNITTEST_DRIVER_REGIST(driver, test_traydata_8); | |
364 | 397 | } |
@@ -77,6 +77,7 @@ | ||
77 | 77 | break; |
78 | 78 | } else if ((rec->id & TR_CONT) != 0) { |
79 | 79 | iterator->state = TRAYDATA_ITERATOR_STATE_REC_DEVIDE; |
80 | + iterator->status.devide.id = rec->id & (~TR_CONT); | |
80 | 81 | result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT_CONT; |
81 | 82 | result->val.seg.id = rec->id; |
82 | 83 | result->val.seg.seglen = rec->len; |
@@ -227,6 +228,7 @@ | ||
227 | 228 | case TRAYDATA_ITERATOR_STATE_REC_DEVIDE: |
228 | 229 | DP_STATE("TRAYDATA_ITERATOR_STATE_REC_DEVIDE"); |
229 | 230 | if (rec->id == iterator->status.devide.id) { |
231 | + iterator->state = TRAYDATA_ITERATOR_STATE_REC_START; | |
230 | 232 | result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT; |
231 | 233 | } else { |
232 | 234 | result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT_CONT; |
@@ -235,7 +237,7 @@ | ||
235 | 237 | result->val.seg.seglen = -1; /* TODO */ |
236 | 238 | result->val.seg.chunk_data = rec->dt; |
237 | 239 | result->val.seg.chunk_data_len = rec->len; |
238 | - ret = 1; | |
240 | + ret = 2; | |
239 | 241 | break; |
240 | 242 | } |
241 | 243 |