001/* 002 * $Id: JLAdapterTest.java 4850 2014-06-28 18:26:08Z kredel $ 003 */ 004 005package edu.jas.jlinalg; 006 007 008import java.util.Arrays; 009 010import junit.framework.Test; 011import junit.framework.TestCase; 012import junit.framework.TestSuite; 013 014import edu.jas.arith.BigRational; 015import edu.jas.structure.RingElem; 016import edu.jas.structure.RingFactory; 017 018 019/** 020 * JLAdapter tests with JUnit 021 * @author Heinz Kredel. 022 */ 023 024public class JLAdapterTest extends TestCase { 025 026 027 /** 028 * main. 029 */ 030 public static void main(String[] args) { 031 junit.textui.TestRunner.run(suite()); 032 } 033 034 035 /** 036 * Constructs a <CODE>JLAdapterTest</CODE> object. 037 * @param name String. 038 */ 039 public JLAdapterTest(String name) { 040 super(name); 041 } 042 043 044 /** 045 */ 046 public static Test suite() { 047 TestSuite suite = new TestSuite(JLAdapterTest.class); 048 return suite; 049 } 050 051 052 int rl = 5; 053 054 055 int kl = 10; 056 057 058 int ll = 10; 059 060 061 float q = 0.5f; 062 063 064 @Override 065 protected void setUp() { 066 } 067 068 069 @Override 070 protected void tearDown() { 071 } 072 073 074 /** 075 * Test constructor and toString. 076 */ 077 public void testConstruction() { 078 BigRational z = new BigRational(0); 079 080 JLAdapter<BigRational> a = new JLAdapter<BigRational>(z); 081 //System.out.println("a = " + a); 082 assertTrue("isZero( a )", a.isZero()); 083 084 BigRational o = new BigRational(1); 085 JLAdapter<BigRational> b = new JLAdapter<BigRational>(o); 086 //System.out.println("b = " + b); 087 assertTrue("isOne( b )", b.isOne()); 088 089 JLAdapter<BigRational> c = b.subtract(b); 090 //System.out.println("c = " + c); 091 assertTrue("isZero( c )", c.isZero()); 092 093 assertEquals("a == c ", a, c); 094 095 c = new JLAdapter<BigRational>(new BigRational(1, 2)); 096 //System.out.println("c = " + c); 097 assertTrue("!isZero( c )", !c.isZero()); 098 099 JLAdapter<BigRational> d = c.invert(); 100 //System.out.println("d = " + d); 101 assertTrue("!isZero( d )", !d.isZero()); 102 103 assertTrue("isOne( 1/2 * 2 ) ", d.multiply(c).isOne()); 104 105 JLAdapter<BigRational> e = b.divide(d); 106 //System.out.println("e = " + e); 107 assertEquals("1/2 == 1 / (2) ", c, e); 108 } 109 110 111 /** 112 * Test factory and toString. 113 */ 114 public void testFactory() { 115 RingFactory<BigRational> z = new BigRational(0); 116 117 JLAdapterFactory<BigRational> fac = new JLAdapterFactory<BigRational>(z); 118 //System.out.println("fac = " + fac); 119 120 JLAdapter<BigRational> a = fac.zero(); 121 //System.out.println("a = " + a); 122 assertTrue("isZero( a )", a.isZero()); 123 124 JLAdapter<BigRational> b = fac.one(); 125 //System.out.println("b = " + b); 126 assertTrue("isOne( b )", b.isOne()); 127 128 } 129 130 131 /** 132 * Test matrix solve. 133 */ 134 public void xtestGenMatrixSolv() { 135 //MatrixExamples gms = new MatrixExamples(); 136 MatrixExamples.main(null); 137 } 138 139 140 /** 141 * Test vector conversions. 142 */ 143 public void testVectorConversion() { 144 RingFactory<BigRational> z = new BigRational(0); 145 JLAdapterFactory<BigRational> fac = new JLAdapterFactory<BigRational>(z); 146 147 JLAdapter<BigRational>[] vec1 = fac.getArray(ll); 148 //System.out.println("vec1 =" + Arrays.toString(vec1)); 149 150 RingElem<BigRational>[] v1 = JLAdapterUtil.<BigRational> fromJLAdapter(vec1); 151 //System.out.println("v1 =" + Arrays.toString(v1)); 152 153 JLAdapter<BigRational>[] vec2 = JLAdapterUtil.<BigRational> toJLAdapterRE(v1); 154 //System.out.println("vec2 =" + Arrays.toString(vec2)); 155 156 assertTrue("v1[] == v2[] ", Arrays.equals(vec1, vec2)); 157 158 159 BigRational[] v2 = new BigRational[ll]; 160 for (int i = 0; i < v2.length; i++) { 161 v2[i] = z.random(kl); 162 } 163 //System.out.println("v2 =" + Arrays.toString(v2)); 164 165 JLAdapter<BigRational>[] vec3 = JLAdapterUtil.<BigRational> toJLAdapter(v2); 166 //System.out.println("vec3 =" + Arrays.toString(vec3)); 167 168 RingElem<BigRational>[] v3 = JLAdapterUtil.<BigRational> fromJLAdapter(vec3); 169 //System.out.println("v3 =" + Arrays.toString(v3)); 170 171 assertTrue("v2[] == v3[] ", Arrays.equals(v2, v3)); 172 } 173 174 175 /** 176 * Test matrix conversions. 177 */ 178 public void testMatrixConversion() { 179 RingFactory<BigRational> z = new BigRational(0); 180 JLAdapterFactory<BigRational> fac = new JLAdapterFactory<BigRational>(z); 181 182 JLAdapter<BigRational>[][] vec1 = fac.getArray(ll, ll); 183 //System.out.println("vec1 =" + matrixToString(vec1)); 184 185 RingElem<BigRational>[][] v1 = JLAdapterUtil.<BigRational> fromJLAdapter(vec1); 186 //System.out.println("v1 =" + matrixToString(v1)); 187 188 JLAdapter<BigRational>[][] vec2 = JLAdapterUtil.<BigRational> toJLAdapterRE(v1); 189 //System.out.println("vec2 =" + matrixToString(vec2)); 190 191 assertMatrixEquals(vec1, vec2); 192 193 194 BigRational[][] v2 = new BigRational[ll][]; 195 for (int i = 0; i < v2.length; i++) { 196 v2[i] = new BigRational[ll]; 197 for (int j = 0; j < v2.length; j++) { 198 v2[i][j] = z.random(kl); 199 } 200 } 201 //System.out.println("v2 =" + matrixToString(v2)); 202 203 JLAdapter<BigRational>[][] vec3 = JLAdapterUtil.<BigRational> toJLAdapter(v2); 204 //System.out.println("vec1 =" + matrixToString(vec3)); 205 206 RingElem<BigRational>[][] v3 = JLAdapterUtil.<BigRational> fromJLAdapter(vec3); 207 //System.out.println("v3 =" + matrixToString(v3)); 208 209 //v3[0][0] = v3[1][1]; 210 assertMatrixEquals(v2, v3); 211 } 212 213 214 public String matrixToString(Object[][] m) { 215 StringBuffer s = new StringBuffer("["); 216 for (int i = 0; i < m.length; i++) { 217 if (i != 0) { 218 s.append(", "); 219 } 220 s.append(Arrays.toString(m[i])); 221 } 222 s.append("]"); 223 return s.toString(); 224 } 225 226 227 public void assertMatrixEquals(Object[][] m1, Object[][] m2) { 228 for (int i = 0; i < m1.length; i++) { 229 assertTrue("m1[][] == m2[][] ", Arrays.equals(m1[i], m2[i])); 230 } 231 } 232 233}