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 }