package mikera.matrixx; import static org.junit.Assert.*; import mikera.matrixx.impl.BandedMatrix; import mikera.matrixx.impl.DiagonalMatrix; import mikera.vectorz.Vector; import mikera.vectorz.Vectorz; import org.junit.Test; public class TestBands { @Test public void testFilledMatrix() { Matrix m=Matrix.create(3, 3); Vectorz.fillIndexes(m.asVector()); assertEquals(2,m.upperBandwidth()); assertEquals(2,m.upperBandwidthLimit()); assertEquals(2,m.lowerBandwidth()); assertEquals(2,m.lowerBandwidthLimit()); assertEquals(Vector.of(1,5),m.getBand(1)); assertEquals(Vector.of(6),m.getBand(-2)); assertEquals(m.getBand(0),m.getBandWrapped(0)); assertEquals(Vector.of(1,5,6),m.getBandWrapped(-2)); } @Test public void testDiagonalMatrix() { DiagonalMatrix m=DiagonalMatrix.create(Vector.of(0,1,2)); assertEquals(0,m.upperBandwidth()); assertEquals(0,m.upperBandwidthLimit()); assertEquals(0,m.lowerBandwidth()); assertEquals(0,m.lowerBandwidthLimit()); } @Test public void testBandLength() { Matrix m=Matrix.create(3, 4); assertEquals(3,m.upperBandwidthLimit()); assertEquals(2,m.lowerBandwidthLimit()); assertEquals(0,m.bandLength(4)); assertEquals(1,m.bandLength(3)); assertEquals(2,m.bandLength(2)); assertEquals(3,m.bandLength(1)); assertEquals(3,m.bandLength(0)); assertEquals(2,m.bandLength(-1)); assertEquals(1,m.bandLength(-2)); assertEquals(0,m.bandLength(-3)); assertEquals(4,m.getBandWrapped(1).length()); } @Test public void testWrappedBand() { Matrix m=Matrix.create(3, 2); assertEquals(3,m.getBandWrapped(0).length()); } @Test public void testBandedMatrix() { BandedMatrix bm=BandedMatrix.create(4, 4, 0, 0); bm.getBand(0).fill(1.0); assertEquals(Matrixx.createIdentityMatrix(4),bm); } @Test public void testBandedCase() { AMatrix m=BandedMatrix.create(3, 3, 0, 1); assertTrue(m.isSymmetric()); m.getBand(1).fill(2.0); assertFalse(m.isSymmetric()); assertEquals(Vector.of(4,6,0),m.transform(Vector.of(1,2,3))); m.getBand(0).add(1.0); assertEquals(Vector.of(5,8,3),m.transform(Vector.of(1,2,3))); } }