7d64a280e5958ec8db24070875df2ec8ea4f4cbf
[jalview.git] / test / jalview / ext / android / SparseDoubleArrayTest.java
1 package jalview.ext.android;
2
3 import static org.testng.Assert.assertEquals;
4
5 import org.testng.annotations.Test;
6
7 public class SparseDoubleArrayTest
8 {
9
10   @Test
11   public void testConstructor()
12   {
13     double[] d = new double[] { 0d, 0d, 1.2d, 0d, 0d, 3.4d };
14     SparseDoubleArray s = new SparseDoubleArray(d);
15     for (int i = 0; i < d.length; i++)
16     {
17       assertEquals(s.get(i), d[i], "At [" + i + "]");
18     }
19   }
20
21   @Test
22   public void testAdd()
23   {
24     double[] d = new double[] { 0d, 0d, 1.2d, 0d, 0d, 3.4d };
25     SparseDoubleArray s = new SparseDoubleArray(d);
26     // add to zero (absent)
27     s.add(0, 3.2d);
28     assertEquals(s.get(0), 3.2d);
29     // add to non-zero
30     s.add(0, 2.5d);
31     assertEquals(s.get(0), 5.7d);
32     // add negative value
33     s.add(2, -5.3d);
34     assertEquals(s.get(2), -4.1d);
35     // add to unset value
36     s.add(12, 9.8d);
37     assertEquals(s.get(12), 9.8d);
38   }
39
40   @Test
41   public void testDivide()
42   {
43     double delta = 1.0e-10;
44     double[] d = new double[] { 0d, 2.4d, 1.2d, 0d, -4.8d, -3.6d };
45     SparseDoubleArray s = new SparseDoubleArray(d);
46     assertEquals(s.divide(0, 1d), 0d); // no such entry
47     assertEquals(s.divide(2, 0d), 0d); // zero divisor
48     assertEquals(s.divide(1, 2d), 1.2d, delta); // + / +
49     assertEquals(s.divide(2, -2d), -0.6d, delta); // + / -
50     assertEquals(s.divide(4, 3d), -1.6d, delta); // - / +
51     assertEquals(s.divide(5, -3d), 1.2d, delta); // - / -
52   }
53 }