+ 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 );