001/* 002 * $Id: GenVectorTest.java 5688 2017-01-03 08:45:09Z kredel $ 003 */ 004 005package edu.jas.vector; 006 007 008import junit.framework.Test; 009import junit.framework.TestCase; 010import junit.framework.TestSuite; 011 012import edu.jas.arith.BigRational; 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 */ 127 public void testAddition() { 128 BigRational cfac = new BigRational(1); 129 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 130 GenVector<BigRational> a, b, c, d, e; 131 132 a = mfac.random(kl, q); 133 b = mfac.random(kl, q); 134 //System.out.println("a = " + a); 135 //System.out.println("b = " + b); 136 137 c = a.sum(b); 138 d = c.subtract(b); 139 //System.out.println("c = " + c); 140 //System.out.println("d = " + d); 141 assertEquals("a+b-b = a", a, d); 142 143 c = a.sum(b); 144 d = c.sum(b.negate()); 145 //System.out.println("c = " + c); 146 //System.out.println("d = " + d); 147 assertEquals("a+b+(-b) = a", a, d); 148 149 c = a.sum(b); 150 d = b.sum(a); 151 //System.out.println("c = " + c); 152 //System.out.println("d = " + d); 153 assertEquals("a+b = b+a", c, d); 154 155 c = mfac.random(kl, q); 156 d = a.sum(b).sum(c); 157 e = a.sum(b.sum(c)); 158 //System.out.println("d = " + d); 159 //System.out.println("e = " + e); 160 assertEquals("a+(b+c) = (a+b)+c", d, e); 161 } 162 163 164 /** 165 * Test scalar multiplication. 166 * 167 */ 168 public void testMultiplication() { 169 BigRational cfac = new BigRational(1); 170 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 171 BigRational r, s, t; 172 GenVector<BigRational> a, b, c, d; 173 174 r = cfac.random(kl); 175 if (r.isZERO()) { 176 r = cfac.getONE(); 177 } 178 //System.out.println("r = " + r); 179 s = r.inverse(); 180 //System.out.println("s = " + s); 181 182 a = mfac.random(kl, q); 183 //System.out.println("a = " + a); 184 185 c = a.scalarMultiply(r); 186 d = c.scalarMultiply(s); 187 //System.out.println("c = " + c); 188 //System.out.println("d = " + d); 189 assertEquals("a*b*(1/b) = a " + r, a, d); 190 191 192 b = mfac.random(kl, q); 193 //System.out.println("b = " + b); 194 195 t = cfac.getONE(); 196 //System.out.println("t = " + t); 197 c = a.linearCombination(b, t); 198 d = b.linearCombination(a, t); 199 //System.out.println("c = " + c); 200 //System.out.println("d = " + d); 201 assertEquals("a+1*b = b+1*a", c, d); 202 203 c = a.linearCombination(b, t); 204 d = a.sum(b); 205 //System.out.println("c = " + c); 206 //System.out.println("d = " + d); 207 assertEquals("a+1*b = b+1*a", c, d); 208 209 s = t.negate(); 210 //System.out.println("s = " + s); 211 c = a.linearCombination(b, t); 212 d = c.linearCombination(b, s); 213 //System.out.println("c = " + c); 214 //System.out.println("d = " + d); 215 assertEquals("a+1*b+(-1)*b = a", a, d); 216 217 c = a.linearCombination(t, b, t); 218 d = c.linearCombination(t, b, s); 219 //System.out.println("c = " + c); 220 //System.out.println("d = " + d); 221 assertEquals("a*1+b*1+b*(-1) = a", a, d); 222 223 t = cfac.getZERO(); 224 //System.out.println("t = " + t); 225 c = a.linearCombination(b, t); 226 //System.out.println("c = " + c); 227 assertEquals("a+0*b = a", a, c); 228 229 d = a.linearCombination(t, b, t); 230 //System.out.println("d = " + d); 231 assertEquals("0*a+0*b = 0", mfac.getZERO(), d); 232 233 r = a.scalarProduct(b); 234 s = b.scalarProduct(a); 235 //System.out.println("r = " + r); 236 //System.out.println("s = " + s); 237 assertEquals("a.b = b.a", r, s); 238 } 239 240 241 /** 242 * Test parse vector. 243 * 244 */ 245 public void testParse() { 246 BigRational cfac = new BigRational(1); 247 GenVectorModul<BigRational> mfac = new GenVectorModul<BigRational>(cfac, ll); 248 249 GenVector<BigRational> a, c; 250 251 a = mfac.random(kl, q); 252 //System.out.println("a = " + a); 253 if (!a.isZERO()) { 254 //return; 255 assertTrue(" not isZERO( a )", !a.isZERO()); 256 } 257 String s = a.toString(); 258 //System.out.println("s = " + s); 259 c = mfac.parse(s); 260 //System.out.println("c = " + c); 261 assertEquals("parse(toStirng(a) == a ", a, c); 262 } 263 264}