001/* 002 * $Id$ 003 */ 004 005package edu.jas.vector; 006 007 008import edu.jas.arith.BigRational; 009 010import junit.framework.Test; 011import junit.framework.TestCase; 012import junit.framework.TestSuite; 013 014 015/** 016 * GenVector tests with JUnit 017 * @author Heinz Kredel 018 */ 019 020public class GenVectorTest extends TestCase { 021 022 023 /** 024 * main. 025 */ 026 public static void main(String[] args) { 027 junit.textui.TestRunner.run(suite()); 028 } 029 030 031 /** 032 * Constructs a <CODE>RatGenVectorTest</CODE> object. 033 * @param name String. 034 */ 035 public GenVectorTest(String name) { 036 super(name); 037 } 038 039 040 /** 041 */ 042 public static Test suite() { 043 TestSuite suite = new TestSuite(GenVectorTest.class); 044 return suite; 045 } 046 047 048 int rl = 5; 049 050 051 int kl = 10; 052 053 054 int ll = 10; 055 056 057 float q = 0.5f; 058 059 060 @Override 061 protected void setUp() { 062 } 063 064 065 @Override 066 protected void tearDown() { 067 } 068 069 070 /** 071 * Test constructor and toString. 072 */ 073 public void testConstruction() { 074 BigRational cfac = new BigRational(1); 075 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 076 077 assertTrue("#columns = " + ll, mfac.cols == ll); 078 assertTrue("cfac == coFac ", cfac == mfac.coFac); 079 080 GenVector<BigRational> a; 081 a = mfac.getZERO(); 082 //System.out.println("a = " + a); 083 assertTrue("isZERO( a )", a.isZERO()); 084 085 GenVector<BigRational> b = new GenVector<BigRational>(mfac); 086 //System.out.println("b = " + b); 087 assertTrue("isZERO( b )", b.isZERO()); 088 089 assertTrue("a == b ", a.equals(b)); 090 091 GenVector<BigRational> c = b.copy(); 092 //System.out.println("c = " + c); 093 assertTrue("isZERO( c )", c.isZERO()); 094 assertTrue("a == c ", a.equals(c)); 095 096 GenVector<BigRational> d = mfac.copy(b); 097 //System.out.println("d = " + d); 098 assertTrue("isZERO( d )", d.isZERO()); 099 assertTrue("a == d ", a.equals(d)); 100 } 101 102 103 /** 104 * Test random vector. 105 * 106 */ 107 public void testRandom() { 108 BigRational cfac = new BigRational(1); 109 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 110 GenVector<BigRational> a; 111 112 for (int i = 0; i < 7; i++) { 113 a = mfac.random(kl, q); 114 //System.out.println("a = " + a); 115 if (a.isZERO()) { 116 continue; 117 } 118 assertTrue(" not isZERO( a" + i + " )", !a.isZERO()); 119 } 120 } 121 122 123 /** 124 * Test addition. 125 */ 126 public void testAddition() { 127 BigRational cfac = new BigRational(1); 128 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 129 GenVector<BigRational> a, b, c, d, e; 130 131 a = mfac.random(kl, q); 132 b = mfac.random(kl, q); 133 //System.out.println("a = " + a); 134 //System.out.println("b = " + b); 135 136 c = a.sum(b); 137 d = c.subtract(b); 138 //System.out.println("c = " + c); 139 //System.out.println("d = " + d); 140 assertEquals("a+b-b = a", a, d); 141 142 c = a.sum(b); 143 d = c.sum(b.negate()); 144 //System.out.println("c = " + c); 145 //System.out.println("d = " + d); 146 assertEquals("a+b+(-b) = a", a, d); 147 148 c = a.sum(b); 149 d = b.sum(a); 150 //System.out.println("c = " + c); 151 //System.out.println("d = " + d); 152 assertEquals("a+b = b+a", c, d); 153 154 c = mfac.random(kl, q); 155 d = a.sum(b).sum(c); 156 e = a.sum(b.sum(c)); 157 //System.out.println("d = " + d); 158 //System.out.println("e = " + e); 159 assertEquals("a+(b+c) = (a+b)+c", d, e); 160 } 161 162 163 /** 164 * Test scalar multiplication. 165 */ 166 public void testMultiplication() { 167 BigRational cfac = new BigRational(1); 168 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 169 BigRational r, s, t; 170 GenVector<BigRational> a, b, c, d; 171 172 r = cfac.random(kl); 173 if (r.isZERO()) { 174 r = cfac.getONE(); 175 } 176 //System.out.println("r = " + r); 177 s = r.inverse(); 178 //System.out.println("s = " + s); 179 180 a = mfac.random(kl, q); 181 //System.out.println("a = " + a); 182 183 c = a.scalarMultiply(r); 184 d = c.scalarMultiply(s); 185 //System.out.println("c = " + c); 186 //System.out.println("d = " + d); 187 assertEquals("a*b*(1/b) = a " + r, a, d); 188 189 190 b = mfac.random(kl, q); 191 //System.out.println("b = " + b); 192 193 t = cfac.getONE(); 194 //System.out.println("t = " + t); 195 c = a.linearCombination(b, t); 196 d = b.linearCombination(a, t); 197 //System.out.println("c = " + c); 198 //System.out.println("d = " + d); 199 assertEquals("a+1*b = b+1*a", c, d); 200 201 c = a.linearCombination(b, t); 202 d = a.sum(b); 203 //System.out.println("c = " + c); 204 //System.out.println("d = " + d); 205 assertEquals("a+1*b = b+1*a", c, d); 206 207 s = t.negate(); 208 //System.out.println("s = " + s); 209 c = a.linearCombination(b, t); 210 d = c.linearCombination(b, s); 211 //System.out.println("c = " + c); 212 //System.out.println("d = " + d); 213 assertEquals("a+1*b+(-1)*b = a", a, d); 214 215 c = a.linearCombination(t, b, t); 216 d = c.linearCombination(t, b, s); 217 //System.out.println("c = " + c); 218 //System.out.println("d = " + d); 219 assertEquals("a*1+b*1+b*(-1) = a", a, d); 220 221 t = cfac.getZERO(); 222 //System.out.println("t = " + t); 223 c = a.linearCombination(b, t); 224 //System.out.println("c = " + c); 225 assertEquals("a+0*b = a", a, c); 226 227 d = a.linearCombination(t, b, t); 228 //System.out.println("d = " + d); 229 assertEquals("0*a+0*b = 0", mfac.getZERO(), d); 230 231 r = a.scalarProduct(b); 232 s = b.scalarProduct(a); 233 //System.out.println("r = " + r); 234 //System.out.println("s = " + s); 235 assertEquals("a.b = b.a", r, s); 236 } 237 238 239 /** 240 * Test parse vector. 241 */ 242 public void testParse() { 243 BigRational cfac = new BigRational(1); 244 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 245 246 GenVector<BigRational> a, c; 247 248 a = mfac.random(kl, q); 249 //System.out.println("a = " + a); 250 if (!a.isZERO()) { 251 //return; 252 assertTrue(" not isZERO( a )", !a.isZERO()); 253 } 254 String s = a.toString(); 255 //System.out.println("s = " + s); 256 c = mfac.parse(s); 257 //System.out.println("c = " + c); 258 assertEquals("parse(toStirng(a) == a ", a, c); 259 } 260 261}