This project has retired. For details please refer to its Attic page.
TestLongDenseMatrix xref
View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.giraph.aggregators.matrix.dense;
20  
21  import org.apache.giraph.aggregators.matrix.dense.LongDenseVector;
22  import static org.junit.Assert.assertEquals;
23  
24  import org.apache.giraph.utils.WritableUtils;
25  import org.junit.Test;
26  
27  public class TestLongDenseMatrix {
28  
29    @Test
30    public void testVectorSingleton() {
31      LongDenseVector vec1 = new LongDenseVector(10);
32      vec1.set(0, 1);
33      vec1.set(6, 14);
34  
35      LongDenseVector vec2 = new LongDenseVector();
36      vec2.setSingleton(6, 10);
37      vec1.add(vec2);
38      assertEquals(24, vec1.get(6));
39  
40      vec2.setSingleton(15, 15);
41      vec1.add(vec2);
42      assertEquals(15, vec1.get(15));
43    }
44  
45    @Test
46    public void testVectorAdd() {
47      // The default value should be 0
48      LongDenseVector vec1 = new LongDenseVector(10);
49      assertEquals(0, vec1.get(0));
50  
51      // Basic get/set
52      vec1.set(0, 1);
53      vec1.set(6, 14);
54      assertEquals(1, vec1.get(0));
55      assertEquals(0, vec1.get(4));
56      assertEquals(14, vec1.get(6));
57      assertEquals(0, vec1.get(15));
58  
59      // Add another vector
60      LongDenseVector vec2 = new LongDenseVector(20);
61      vec2.set(0, 5);
62      vec2.set(5, 17);
63  
64      vec1.add(vec2);
65      assertEquals(6, vec1.get(0));
66      assertEquals(17, vec1.get(5));
67      assertEquals(14, vec1.get(6));
68      assertEquals(0, vec1.get(15));
69    }
70  
71    @Test
72    public void testVectorSerialize() throws Exception {
73      int size = 100;
74  
75      // Serialize from
76      LongDenseVector from = new LongDenseVector(size);
77      from.set(0, 100);
78      from.set(10, 50);
79      from.set(12, 10);
80      byte[] data = WritableUtils.writeToByteArray(from, from);
81  
82      // De-serialize to
83      LongDenseVector to1 = new LongDenseVector();
84      LongDenseVector to2 = new LongDenseVector();
85      WritableUtils.readFieldsFromByteArray(data, to1, to2);
86  
87      // The vectors should be equal
88      for (int i = 0; i < size; ++i) {
89        assertEquals(from.get(i), to1.get(i));
90        assertEquals(from.get(i), to2.get(i));
91      }
92    }
93  
94    @Test
95    public void testVectorSerializeSingleton() throws Exception {
96      LongDenseVector from = new LongDenseVector();
97      from.setSingleton(3, 10);
98  
99      byte[] data = WritableUtils.writeToByteArray(from, from);
100 
101     LongDenseVector to1 = new LongDenseVector();
102     LongDenseVector to2 = new LongDenseVector();
103     WritableUtils.readFieldsFromByteArray(data, to1, to2);
104 
105     assertEquals(from.getSingletonIndex(), to1.getSingletonIndex());
106     assertEquals(from.getSingletonIndex(), to2.getSingletonIndex());
107     assertEquals(from.getSingletonValue(), to2.getSingletonValue());
108     assertEquals(from.getSingletonValue(), to2.getSingletonValue());
109   }
110 }