/* * test2300 - 2300 series of the regress.cal test suite * * Copyright (C) 1999 Landon Curt Noll * * Calc is open software; you can redistribute it and/or modify it under * the terms of the version 2.1 of the GNU Lesser General Public License * as published by the Free Software Foundation. * * Calc is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General * Public License for more details. * * A copy of version 2.1 of the GNU Lesser General Public License is * distributed with calc under the filename COPYING-LGPL. You should have * received a copy with calc; if not, write to Free Software Foundation, Inc. * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * @(#) $Revision: 29.2 $ * @(#) $Id: test2300.cal,v 29.2 2000/06/07 14:02:25 chongo Exp $ * @(#) $Source: /usr/local/src/cmd/calc/cal/RCS/test2300.cal,v $ * * Under source code control: 1995/07/09 06:12:13 * File existed as early as: 1995 * * chongo /\oo/\ http://www.isthe.com/chongo/ * Share and enjoy! :-) http://www.isthe.com/chongo/tech/comp/calc/ */ obj matrix {m} /* * matrix_inc - increment the matrix inside the object */ define matrix_inc(a) { local i; /* increment each matrix member */ for (i= 0; i < size(a.m); i++) ++a.m[[i]]; return a; } /* * matrix_dec - decrement the matrix inside the object */ define matrix_dec(a) { local i; /* decrement each matrix member */ for (i= 0; i < size(a.m); i++) --a.m[[i]]; return a; } /* * mkmat - load the matrix inside the object */ define mkmat() { local s, M, i, v; /* firewall */ s = param(0); if (s == 0) quit "Need at least one argument"; /* create the matrix */ mat M[s]; /* load the matrix with the args */ for (i = 0; i < s; i++) M[i] = param(i + 1); /* create the object with the matrix */ obj matrix v; v.m = M; return v; } /* * ckmat - check if the matrix inside an object has a set of given values */ define ckmat() { local s, a, i; /* firewall */ s = param(0); if (s < 2) quit "Need at least two arguments"; /* get the object to test */ a = param(1); /* verify the matrix in the object is the right size */ if (size(a.m) != s-1) { return 0; } /* check each matrix element with the args passed */ for (i = 2; i <= s; i++) { if (a.m[i-2] != param(i)) { /* args do not match */ return 0; } } /* args match the matrix in the object */ return 1; }