Added casefilter structure to assist with missing values. Changed T-TEST
[pspp-builds.git] / src / language / tests / casefile-test.c
index a1927ddb98dc3009820ed3b5200ca7a416997c44..c6885c61d9289533acad9df4540ce949ca92bcb7 100644 (file)
@@ -45,7 +45,7 @@ static void test_casereader_clone (struct casereader *reader1, size_t case_cnt);
 static void fail_test (const char *message, ...);
 
 int
-cmd_debug_casefile (void
+cmd_debug_casefile (struct dataset *ds UNUSED
 {
   static const size_t sizes[] =
     {
@@ -101,8 +101,8 @@ test_casefile (int pattern, size_t value_cnt, size_t case_cnt)
     write_random_case (cf, i);
   if (pattern == 5)
     casefile_sleep (cf);
-  r1 = casefile_get_reader (cf);
-  r2 = casefile_get_reader (cf);
+  r1 = casefile_get_reader (cf, NULL);
+  r2 = casefile_get_reader (cf, NULL);
   switch (pattern) 
     {
     case 0:
@@ -232,18 +232,21 @@ test_casereader_clone (struct casereader *reader1, size_t case_cnt)
 
   /* Read a 3rd of the cases */
   for ( i = 0 ; i < case_cnt / 3 ; ++i ) 
-    casereader_read (reader1, &c1);
+    {
+      casereader_read (reader1, &c1);
+      case_destroy (&c1);
+    }
 
   clone = casereader_clone (reader1);
 
   /* Copy all the cases into a new file */
   while( casereader_read (reader1, &c1))
     { 
-      casefile_append (newfile, &c1);
+      casefile_append_xfer (newfile, &c1);
       cases ++;
     }
 
-  newreader = casefile_get_reader (newfile);
+  newreader = casefile_get_reader (newfile, NULL);
 
   /* Make sure that the new file's are identical to those returned from 
      the cloned reader */
@@ -254,13 +257,19 @@ test_casereader_clone (struct casereader *reader1, size_t case_cnt)
       cases --;
 
       if ( ! casereader_read_xfer (newreader, &c2) ) 
-       break;
+        {
+          case_destroy (&c1);
+          break; 
+        }
       
       v1 = case_data_all (&c1) ;
       v2 = case_data_all (&c2) ;
 
       if ( 0 != memcmp (v1, v2, value_cnt * MAX_SHORT_STRING))
        fail_test ("Cloned reader read different value at case %ld", cases);
+
+      case_destroy (&c1);
+      case_destroy (&c2);
     }
 
   if ( cases > 0 )