]> git.donarmstrong.com Git - biopieces.git/blobdiff - code_c/Maasha/src/test/test_mem.c
unit test of mem.c done
[biopieces.git] / code_c / Maasha / src / test / test_mem.c
index 29ef64d9b4c991c1a00434a312247dde0ce8ebfb..faa6a9108133a20ed6ccffce1c577c3e5bcefc55 100644 (file)
@@ -3,6 +3,9 @@
 
 static void test_mem_get();
 static void test_mem_get_zero();
+static void test_mem_resize();
+static void test_mem_resize_zero();
+static void test_mem_clone();
 static void test_mem_free();
 
 
@@ -12,6 +15,9 @@ int main()
 
     test_mem_get();
     test_mem_get_zero();
+    test_mem_resize();
+    test_mem_resize_zero();
+    test_mem_clone();
     test_mem_free();
 
     fprintf( stderr, "Done\n\n" );
@@ -27,7 +33,7 @@ void test_mem_get()
     size_t  len = 1000000000;
     char   *pt  = mem_get( len );
 
-    mem_free( pt );
+    mem_free( ( void * ) &pt );
 
     fprintf( stderr, "OK\n" );
 }
@@ -45,7 +51,85 @@ void test_mem_get_zero()
         assert( pt[ i ] == '\0' );
     }
 
-    mem_free( pt );
+    mem_free( ( void * ) &pt );
+
+    fprintf( stderr, "OK\n" );
+}
+
+
+void test_mem_resize()
+{
+    fprintf( stderr, "   Testing mem_resize ... " );
+
+    char *pt0 = "foo";
+    char *pt1 = NULL;
+
+    pt1 = mem_get( 3 + 1 );
+
+    memcpy( pt1, pt0, 3 );
+
+    pt1 = mem_resize( pt1, 1 );
+
+    mem_free( ( void * ) &pt1 );
+
+    fprintf( stderr, "OK\n" );
+}
+
+
+void test_mem_resize_zero()
+{
+    fprintf( stderr, "   Testing mem_resize_zero ... " );
+
+    size_t i;
+    size_t size_before = 10;
+    size_t size_after  = 100000;
+
+    char *pt = NULL;
+
+    pt = mem_get( size_before );
+
+    memset( pt, '1', size_before );
+
+    assert( strlen( pt ) == size_before );
+
+    pt = mem_resize_zero( pt, size_before, size_after );
+
+    assert( strlen( pt ) == size_before );
+
+    for ( i = size_before; i <= size_after; i++ ) {
+        assert( pt[ i ] == '\0' );
+    }
+
+    mem_free( ( void * ) &pt );
+
+    fprintf( stderr, "OK\n" );
+}
+
+
+void test_mem_clone()
+{
+    fprintf( stderr, "   Testing mem_clone ... " );
+
+    char   *pt;
+    char   *pt_clone;
+    size_t  pt_size = 10000;
+    size_t  i;
+
+    pt = mem_get( pt_size );
+
+    memset( pt, 'X', pt_size );
+
+    pt_clone = mem_clone( pt, pt_size );
+
+    assert( pt_clone != pt );
+    assert( &pt_clone != &pt );
+
+    for ( i = 0; i < pt_size; i++ ) {
+        assert( pt[ i ] == pt_clone[ i ] );
+    }
+
+    mem_free( ( void * ) &pt );
+    mem_free( ( void * ) &pt_clone );
 
     fprintf( stderr, "OK\n" );
 }
@@ -55,13 +139,29 @@ void test_mem_free()
 {
     fprintf( stderr, "   Testing mem_free ... " );
 
-    void *pt = mem_get( 100 );
+    char *pt0 = "foo";
+    void *pt1 = NULL;
+    char *pt2 = NULL;
+
+    assert( pt0 != NULL );
+    assert( pt1 == NULL );
+    assert( pt2 == NULL );
+
+    pt1 = mem_get( 100 );
+    pt2 = mem_get( 100 );
+
+    assert( pt1 != NULL );
+    assert( pt2 != NULL );
 
-    mem_free( pt );
+    memcpy( pt2, pt0, 3 );
 
-    printf( "pt: %s\n", ( char * ) pt );
+    mem_free( &pt1 );
+    mem_free( &pt1 );
+    mem_free( ( void * ) &pt1 );
+    mem_free( ( void * ) &pt2 );
 
-    assert( pt == NULL );
+    assert( pt1 == NULL );
+    assert( pt2 == NULL );
 
     fprintf( stderr, "OK\n" );
 }