Index: tests/alloc.cfa
===================================================================
--- tests/alloc.cfa	(revision 45444c3fd70b6b54538ca16b790d78e084e0822e)
+++ tests/alloc.cfa	(revision 55acc3a4fa45a500fa88a39b850dd11a68275702)
@@ -208,5 +208,14 @@
 
 
+	int const_count, dest_count;
 	struct Struct { int x; double y; };
+	void  ?{}( Struct & a ) {					// construct
+		a.[ x, y ] = [ -1, -1.0 ];
+	}
+	void  ?{}( Struct & a, int x, double y ) {	// initialize
+		a.[ x, y ] = [ x, y ];
+		const_count++;
+	}
+	void ^?{}( Struct & a ) {  dest_count++; }	// destruct
 	Struct st, st1, sta[dim], sta1[dim], * stp, * stp1;
 
@@ -329,18 +338,27 @@
 	printf( "\n" );
 
+	const_count = dest_count = 0;
 	stp = new( 42, 42.5 );
+	assert( const_count == 1 && dest_count == 0 );						// assertion for testing
 	stp1 = new( 42, 42.5 );
+	assert( const_count == 2 && dest_count == 0 );						// assertion for testing
+
 	printf( "CFA new initialize\n%d %g %d %g\n", stp->x, stp->y, stp1->x, stp1->y );
 	delete( stp, stp1 );
+	assert( const_count == 2 && dest_count == 2 );						// assertion for testing
 
 	// new, array types
 	stp = anew( dim, 42, 42.5 );
+	assert( const_count == 2 + dim && dest_count == 2 );				// assertion for testing
 	printf( "CFA array new initialize\n" );
 	for ( i; dim ) { printf( "%d %g, ", stp[i].x, stp[i].y ); }
 	printf( "\n" );
+
 	stp1 = anew( dim, 42, 42.5 );
+	assert( const_count == 2 + 2 * dim && dest_count == 2 );			// assertion for testing
 	for ( i; dim ) { printf( "%d %g, ", stp1[i].x, stp1[i].y ); }
 	printf( "\n" );
 	adelete( stp, stp1 );
+	assert( const_count == 2 + 2 * dim && dest_count == 2 + 2 * dim);	// assertion for testing
 
 	// extras
@@ -354,5 +372,8 @@
 	*ip = 0xdeadbeef;
 	printf( "CFA deep malloc %#x\n", *ip );
-	free( ip );
+
+	dp = alloc(5.0`fill); // just for testing multiple free
+	assert(*dp == 5.0);
+	free( ip, dp );
 
 #ifdef ERR1
