1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.giraph.aggregators.matrix.dense;
20
21 import org.apache.giraph.aggregators.matrix.dense.DoubleDenseVector;
22 import static org.junit.Assert.assertEquals;
23
24 import org.apache.giraph.utils.WritableUtils;
25 import org.junit.Test;
26
27 public class TestDoubleDenseMatrix {
28 private static double E = 0.0001f;
29
30 @Test
31 public void testVectorSingleton() {
32 DoubleDenseVector vec1 = new DoubleDenseVector(10);
33 vec1.set(0, 0.1);
34 vec1.set(6, 1.4);
35
36 DoubleDenseVector vec2 = new DoubleDenseVector();
37 vec2.setSingleton(6, 1.0);
38 vec1.add(vec2);
39 assertEquals(2.4, vec1.get(6), E);
40
41 vec2.setSingleton(15, 1.5);
42 vec1.add(vec2);
43 assertEquals(1.5, vec1.get(15), E);
44 }
45
46 @Test
47 public void testVectorAdd() {
48
49 DoubleDenseVector vec1 = new DoubleDenseVector(10);
50 assertEquals(0.0, vec1.get(0), E);
51
52
53 vec1.set(0, 0.1);
54 vec1.set(6, 1.4);
55 assertEquals(0.1, vec1.get(0), E);
56 assertEquals(0.0, vec1.get(4), E);
57 assertEquals(1.4, vec1.get(6), E);
58 assertEquals(0.0, vec1.get(15), E);
59
60
61 DoubleDenseVector vec2 = new DoubleDenseVector(20);
62 vec2.set(0, 0.5);
63 vec2.set(5, 1.7);
64
65 vec1.add(vec2);
66 assertEquals(0.6, vec1.get(0), E);
67 assertEquals(1.7, vec1.get(5), E);
68 assertEquals(1.4, vec1.get(6), E);
69 assertEquals(0.0, vec1.get(15), E);
70 }
71
72 @Test
73 public void testVectorSerialize() throws Exception {
74 int size = 100;
75
76
77 DoubleDenseVector from = new DoubleDenseVector(size);
78 from.set(0, 10.0);
79 from.set(10, 5.0);
80 from.set(12, 1.0);
81 byte[] data = WritableUtils.writeToByteArray(from, from);
82
83
84 DoubleDenseVector to1 = new DoubleDenseVector();
85 DoubleDenseVector to2 = new DoubleDenseVector();
86 WritableUtils.readFieldsFromByteArray(data, to1, to2);
87
88
89 for (int i = 0; i < size; ++i) {
90 assertEquals(from.get(i), to1.get(i), E);
91 assertEquals(from.get(i), to2.get(i), E);
92 }
93 }
94
95 @Test
96 public void testVectorSerializeSingleton() throws Exception {
97 DoubleDenseVector from = new DoubleDenseVector();
98 from.setSingleton(3, 10.0);
99
100 byte[] data = WritableUtils.writeToByteArray(from, from);
101
102 DoubleDenseVector to1 = new DoubleDenseVector();
103 DoubleDenseVector to2 = new DoubleDenseVector();
104 WritableUtils.readFieldsFromByteArray(data, to1, to2);
105
106 assertEquals(from.getSingletonIndex(), to1.getSingletonIndex());
107 assertEquals(from.getSingletonIndex(), to2.getSingletonIndex());
108 assertEquals(from.getSingletonValue(), to2.getSingletonValue(), E);
109 assertEquals(from.getSingletonValue(), to2.getSingletonValue(), E);
110 }
111 }