printf( "Starting the assignment test...\n" );
assert = function( t ) {
if ( !test(t) ) {
printf( "...failed.\a\n" );
exception();
}
};
ck = function( a; b )
{
ck1( a; 1:a.nr; 1:a.nc; b );
ck1( a; a.nr:1; 1:a.nc; b );
ck1( a; 1:a.nr; a.nc:1; b );
};
ck1 = function( a; r; c; b )
{
local( d );
a[r;c] = b;
d = a[r;c]-b;
if ( d )
{
for ( i in seq(d.nr) )
{
if ( norm( d[i;] ) )
{
q = find( r[i]; r );
assert( q.ne > 1 & i != q[q.ne] );
}
}
for ( j in seq(d.nc) )
{
if ( norm( d[;j] ) )
{
q = find( c[j]; c );
assert( q.ne > 1 & i != q[q.ne] );
}
}
}
};
ck( rand(5,3); rand(5,3) );
ck( magic(10); diag(1:10) );
ck( sparse(bdiag(diag(1:12);4;4));bdiag(diag(101:112);4;4) );
v=1:5; v[3,2,3]=9;
assert( equal( v; 1,9,9,4,5 ) );
v=zero(9); v[2]=1; v[8,4]=2,3;
assert( equal( v; 0,1,0,3,0,0,0,2,0 ) );
m = { i = { y = 1, 2 } };
m.i.y.eid = 1, 2;
d = function( v ) {
v.eid[1] = v.eid[1] + 1;
return v.eid;
};
t = function() {
local( i );
i = m.i;
d( i.y );
};
t();
a = { v = 1,2 };
q = a;
q.v[1] = 99;
b = { m = [ 1, 2 ] };
q = b;
q.m[1;1] = 99;
if ( m.i.y.eid[1] != 1 |
a.v[1] != 1 |
b.m[1;1] != 1 ) {
printf( "...failed!\a\n" );
exception();
else
printf( "...passed.\n" );
}
syntax highlighted by Code2HTML, v. 0.9.1