printf( "Starting the append tests...\n" );
single_row = {
is = 777;
rs = 62.4;
cs = 1.2 + 3.4*sqrt(-1);
ss = "Scott";
iv0 = fill(0;1);
rv0 = fill(0;3.1415);
cv0 = fill(0;sqrt(-1));
sv0 = fill(0;"");
iv = 7:4;
rv = 1.2:7.77:.9;
cv = 1,sqrt(-1),2,sqrt(-2);
sv = "Arizona", "Utah", "Idaho";
im0 = fill(1,0;99);
rm0 = fill(1,0;8.765);
cm0 = fill(1,0;sqrt(-1));
sm0 = fill(1,0;"");
im = [9:20];
rm = [1/(9:25)];
cm = asin(2:6);
sm = [ "bottles", "of", "beer", "on", "the", "wall" ];
};
multiple_row = {
im00 = fill(0,0;1);
im0x = fill(0,6;1);
imx0 = fill(22,0;1);
imxx = fill(22,4;magic(5));
rm00 = fill(0,0;1.23);
rm0x = fill(0,6;1.23);
rmx0 = fill(22,0;1.23);
rmxx = fill(22,4;magic(5)+1.23);
cm00 = fill(0,0;sqrt(-4));
cm0x = fill(0,6;sqrt(-4));
cmx0 = fill(22,0;sqrt(-4));
cmxx = fill(22,4;magic(5)+sqrt(-4));
sm00 = fill(0,0;"");
sm0x = fill(0,6;"");
smx0 = fill(22,0;"");
smxx = fill(22,4;members($$));
};
assert = function( t ) {
if ( !test(t) ) {
printf( "...failed.\a\n" );
exception();
}
};
rev = function( x )
{
if ( class(x) == "matrix" )
{
if ( x.nc > 0 )
{
return x[;x.nc:1];
else
return x;
}
elseif ( class(x) == "vector" )
if ( x.ne > 0 )
{
return x[x.ne:1];
else
return x;
}
else
return x;
}
};
cks = function( a; b )
{
if ( sum((a.type,b.type)=="character")%2 ) { return }
assert( equal( a,b; rev(rev(b),rev(a)) ) );
if ( a.type == "character" ) {
assert( equal( a+"z",b; rev(rev(b),rev(a+"z")) ) );
assert( equal( a,"*"+b; rev(rev("*"+b),rev(a)) ) );
else
assert( equal( a+1,b; rev(rev(b),rev(a+1)) ) );
assert( equal( a,1+b; rev(rev(1+b),rev(a)) ) );
}
};
ckm = function( a; b )
{
if ( a.nr != b.nr ) { return }
if ( sum((a.type,b.type)=="character")%2 ) { return }
assert( equal( a,b; rev(rev(b),rev(a)) ) );
if ( a.type == "character" ) {
assert( equal( a+"z",b; rev(rev(b),rev(a+"z")) ) );
assert( equal( a,"*"+b; rev(rev("*"+b),rev(a)) ) );
else
assert( equal( a+1,b; rev(rev(b),rev(a+1)) ) );
assert( equal( a,1+b; rev(rev(1+b),rev(a)) ) );
}
};
for ( a in members( single_row ) ) {
for ( b in members( single_row ) ) {
cks( single_row.(a); single_row.(b) );
}
}
for ( a in members( multiple_row ) ) {
for ( b in members( multiple_row ) ) {
ckm( multiple_row.(a); multiple_row.(b) );
}
}
printf( "...passed.\n" );
syntax highlighted by Code2HTML, v. 0.9.1