OSDN Git Service

add testcase for TR_CONT.
authorornse01 <ornse01@users.sourceforge.jp>
Thu, 28 Jun 2012 15:23:28 +0000 (15:23 +0000)
committerornse01 <ornse01@users.sourceforge.jp>
Thu, 28 Jun 2012 15:23:28 +0000 (15:23 +0000)
and fix bug.

git-svn-id: http://svn.sourceforge.jp/svnroot/bchan/bchanf/trunk@513 20a0b8eb-f62a-4a12-8fe1-b598822500fb

src/tad/test_traydata_iterator.c
src/tad/traydata_iterator.c

index 0e02498..c00784f 100644 (file)
@@ -353,6 +353,37 @@ LOCAL UNITTEST_RESULT test_traydata_6()
        return test_traydata_iterator_common(rec, len, expected, expected_len);
 }
 
+LOCAL UNITTEST_RESULT test_traydata_7()
+{
+       TRAYREC rec[] = {
+               {TS_INFO, 6, testdata_infoseg},
+               {TS_TEXT|TR_CONT, 10, testdata_textseg},
+               {TS_TEXT, 24-10, testdata_textseg+10},
+               {TR_VOBJ, sizeof(testdata_vobjrec), (UB*)&testdata_vobjrec},
+               {TR_TEXT, sizeof(testdata_text), (UB*)testdata_text},
+       };
+       W len = sizeof(rec)/sizeof(TRAYREC);
+       test_traydata_iterator_expected_t *expected = test_traydata_expected02;
+       W expected_len = sizeof(test_traydata_expected02)/sizeof(test_traydata_iterator_expected_t);
+       return test_traydata_iterator_common(rec, len, expected, expected_len);
+}
+
+LOCAL UNITTEST_RESULT test_traydata_8()
+{
+       TRAYREC rec[] = {
+               {TS_INFO, 6, testdata_infoseg},
+               {TS_TEXT|TR_CONT, 10, testdata_textseg},
+               {TS_TEXT|TR_CONT, 10, testdata_textseg+10},
+               {TS_TEXT, 24-20, testdata_textseg+20},
+               {TR_VOBJ, sizeof(testdata_vobjrec), (UB*)&testdata_vobjrec},
+               {TR_TEXT, sizeof(testdata_text), (UB*)testdata_text},
+       };
+       W len = sizeof(rec)/sizeof(TRAYREC);
+       test_traydata_iterator_expected_t *expected = test_traydata_expected02;
+       W expected_len = sizeof(test_traydata_expected02)/sizeof(test_traydata_iterator_expected_t);
+       return test_traydata_iterator_common(rec, len, expected, expected_len);
+}
+
 EXPORT VOID test_traydata_iterator_main(unittest_driver_t *driver)
 {
        UNITTEST_DRIVER_REGIST(driver, test_traydata_1);
@@ -361,4 +392,6 @@ EXPORT VOID test_traydata_iterator_main(unittest_driver_t *driver)
        UNITTEST_DRIVER_REGIST(driver, test_traydata_4);
        UNITTEST_DRIVER_REGIST(driver, test_traydata_5);
        UNITTEST_DRIVER_REGIST(driver, test_traydata_6);
+       UNITTEST_DRIVER_REGIST(driver, test_traydata_7);
+       UNITTEST_DRIVER_REGIST(driver, test_traydata_8);
 }
index a47307b..1411611 100644 (file)
@@ -77,6 +77,7 @@ LOCAL W traydata_iterator_inputTRAYREC(traydata_iterator_t *iterator, TRAYREC *r
                        break;
                } else if ((rec->id & TR_CONT) != 0) {
                        iterator->state = TRAYDATA_ITERATOR_STATE_REC_DEVIDE;
+                       iterator->status.devide.id = rec->id & (~TR_CONT);
                        result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT_CONT;
                        result->val.seg.id = rec->id;
                        result->val.seg.seglen = rec->len;
@@ -227,6 +228,7 @@ LOCAL W traydata_iterator_inputTRAYREC(traydata_iterator_t *iterator, TRAYREC *r
        case TRAYDATA_ITERATOR_STATE_REC_DEVIDE:
                DP_STATE("TRAYDATA_ITERATOR_STATE_REC_DEVIDE");
                if (rec->id == iterator->status.devide.id) {
+                       iterator->state = TRAYDATA_ITERATOR_STATE_REC_START;
                        result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT;
                } else {
                        result->type = TRAYDATA_ITERATOR_RESULTTYPE_VARIABLE_SEGMENT_CONT;
@@ -235,7 +237,7 @@ LOCAL W traydata_iterator_inputTRAYREC(traydata_iterator_t *iterator, TRAYREC *r
                result->val.seg.seglen = -1; /* TODO */
                result->val.seg.chunk_data = rec->dt;
                result->val.seg.chunk_data_len = rec->len;
-               ret = 1;
+               ret = 2;
                break;
        }