@Test public void testMultiplyRandom() { Random r = new Random(); DOK2Dint dok = new DOK2Dint(10 + r.nextInt(10), 10 + r.nextInt(10)); // random matrix for (int l = 0; l < dok.nlines(); l++) { for (int c = 0; c < dok.ncols(); c++) { // 50% chance of random element if (r.nextBoolean()) { dok.set(l, c, r.nextInt()); } } } DOK1Dint vec = new DOK1Dint(dok.ncols()); // random vec for (int l = 0; l < vec.nlines(); l++) { if (r.nextBoolean()) { vec.set(l, r.nextInt()); } } // expected result DOK1Dint expected = dok.multiply(vec); assertEquals(expected, new CSC2Dint(dok).multiply(vec)); }
@Test public void testGet() { assertEquals(1, m.get(1, 1), 0); DOK2Dint dok = new DOK2Dint(10, 10); // first line == [0 1 2 3 4 5 ... ] for (int c = 0; c < dok.ncols(); c++) { dok.set(0, c, c); } // first col == [0 1.5 2.5 3.5 ...] for (int l = 1; l < dok.nlines(); l++) { dok.set(l, 0, (int) (l + 0.5)); } Matrix2Dint m = new CSC2Dint(dok); for (int l = 0; l < m.nlines(); l++) { for (int c = 0; c < m.ncols(); c++) { // print line and column number on error assertArrayEquals( new Integer[] {(int) l, (int) c, dok.get(l, c)}, new Integer[] {(int) l, (int) c, m.get(l, c)}); } } }