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