1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.orekit.utils;
18
19 import java.io.File;
20 import java.util.HashMap;
21 import java.util.Map;
22 import org.junit.jupiter.api.Assertions;
23 import org.junit.jupiter.api.Test;
24
25 public class DataDictionaryTest {
26
27 @Test
28 public void testEmpty() {
29 Assertions.assertTrue(new DataDictionary().getData().isEmpty());
30 }
31
32 @Test
33 public void testPutGet() {
34 DataDictionary dictionary = new DataDictionary();
35 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
36 dictionary.put("string", "Lorem Ipsum");
37 dictionary.put("int", 9);
38 File file = new File(".");
39 dictionary.put("object", file);
40
41 Assertions.assertArrayEquals(new double[]{1.0, 2.0, 3.0}, ((double[]) dictionary.get("a")), 1.0e-15);
42 Assertions.assertEquals("Lorem Ipsum", ((String) dictionary.get("string")));
43 Assertions.assertEquals(9, dictionary.get("int"));
44 Assertions.assertEquals(file, dictionary.get("object"));
45 }
46
47 @Test
48 public void testGetNotExisting() {
49 DataDictionary dictionary = new DataDictionary();
50 Assertions.assertNull(dictionary.get("not-a-key"));
51 }
52
53 @Test
54 public void testFromDictionary() {
55 DataDictionary original = new DataDictionary();
56 original.put("string", "Lorem Ipsum");
57
58 DataDictionary copy = new DataDictionary(original);
59 Assertions.assertEquals("Lorem Ipsum", ((String) copy.get("string")));
60 }
61
62 @Test
63 public void testArraysAreCopied() {
64 DataDictionary dictionary = new DataDictionary();
65 double[] original = new double[]{1.0, 2.0, 3.0};
66 dictionary.put("a", original);
67 double[] retrieved = ((double[]) dictionary.get("a"));
68 Assertions.assertArrayEquals(original, retrieved, 1.0e-15);
69 Assertions.assertNotSame(original, retrieved);
70 }
71
72 @Test
73 public void testIncrement() {
74 DataDictionary dictionary = new DataDictionary();
75 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
76 dictionary.getEntry("a").increment(new double[]{2.0, 4.0, 8.0});
77 Assertions.assertArrayEquals(new double[]{3.0, 6.0, 11.0}, ((double[]) dictionary.get("a")), 1.0e-15);
78 }
79
80 @Test
81 public void testScaledIncrement() {
82 DataDictionary dictionary = new DataDictionary();
83 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
84 DoubleArrayDictionary other = new DoubleArrayDictionary();
85 other.put("aDot", new double[]{3.0, 2.0, 1.0});
86 dictionary.getEntry("a").scaledIncrement(2.0, other.getEntry("aDot"));
87 Assertions.assertArrayEquals(new double[]{7.0, 6.0, 5.0}, ((double[]) dictionary.get("a")), 1.0e-15);
88 }
89
90 @Test
91 public void testZero() {
92 DataDictionary dictionary = new DataDictionary();
93 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
94 dictionary.getEntry("a").zero();
95 Assertions.assertArrayEquals(new double[]{0.0, 0.0, 0.0}, ((double[]) dictionary.get("a")), 1.0e-15);
96 }
97
98 @Test
99 public void testDataManagement() {
100 DataDictionary dictionary = new DataDictionary();
101 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
102 dictionary.put("b", new double[]{4.0});
103 dictionary.put("another", new double[]{17.0});
104
105 Assertions.assertEquals(3, dictionary.size());
106 Assertions.assertEquals("{a[3], b[1], another[1]}", dictionary.toString());
107
108 Assertions.assertTrue(dictionary.remove("another"));
109 Assertions.assertEquals(2, dictionary.size());
110 Assertions.assertFalse(dictionary.remove("not-a-key"));
111 Assertions.assertEquals(2, dictionary.size());
112
113 Assertions.assertEquals("a", dictionary.getData().get(0).getKey());
114 Assertions.assertEquals("b", dictionary.getData().get(1).getKey());
115
116 dictionary.clear();
117 Assertions.assertTrue(dictionary.getData().isEmpty());
118 }
119
120 @Test
121 public void testReplace() {
122 DataDictionary dictionary = new DataDictionary();
123 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
124 dictionary.put("toreplace", "Lorem Ipsum");
125 dictionary.put("b", 9);
126 Assertions.assertEquals(3, dictionary.size());
127
128 File file = new File(".");
129 dictionary.put("toreplace", file);
130 Assertions.assertEquals(3, dictionary.size());
131
132 Assertions.assertArrayEquals(new double[]{1.0, 2.0, 3.0}, ((double[]) dictionary.get("a")), 1.0e-15);
133 Assertions.assertEquals(file, dictionary.get("toreplace"));
134 Assertions.assertEquals(9, dictionary.get("b"));
135 Assertions.assertEquals("a", dictionary.getData().get(0).getKey());
136 Assertions.assertEquals("b", dictionary.getData().get(1).getKey());
137 Assertions.assertEquals("toreplace", dictionary.getData().get(2).getKey());
138 }
139
140 @Test
141 public void testPutAllDoublesMap() {
142 DataDictionary dictionary = new DataDictionary();
143 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
144 dictionary.put("b", new double[]{4.0});
145 dictionary.put("another", new double[]{17.0});
146 Assertions.assertEquals(3, dictionary.size());
147
148 final Map<String, double[]> map = new HashMap<>();
149 map.put("f", new double[]{12.0});
150 map.put("g", new double[]{-12.0});
151 map.put("b", new double[]{19.0});
152
153 dictionary.putAllDoubles(map);
154 Assertions.assertEquals(5, dictionary.size());
155
156 Assertions.assertArrayEquals(new double[]{1.0, 2.0, 3.0}, ((double[]) dictionary.get("a")), 1.0e-15);
157 Assertions.assertArrayEquals(new double[]{19.0}, ((double[]) dictionary.get("b")), 1.0e-15);
158 Assertions.assertArrayEquals(new double[]{17.0}, ((double[]) dictionary.get("another")), 1.0e-15);
159 Assertions.assertArrayEquals(new double[]{12.0}, ((double[]) dictionary.get("f")), 1.0e-15);
160 Assertions.assertArrayEquals(new double[]{-12.0}, ((double[]) dictionary.get("g")), 1.0e-15);
161 }
162
163 @Test
164 public void testPutAllDictionary() {
165 DataDictionary dictionary = new DataDictionary();
166 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
167 dictionary.put("b", new double[]{19.0});
168 dictionary.put("another", new double[]{17.0});
169 Assertions.assertEquals(3, dictionary.size());
170
171 DataDictionary other = new DataDictionary();
172 dictionary.put("d", "Lorem Ipsum");
173 dictionary.put("e", 9);
174 File file = new File(".");
175 dictionary.put("another", file);
176
177 dictionary.putAll(other);
178 Assertions.assertEquals(5, dictionary.size());
179
180 Assertions.assertArrayEquals(new double[]{1.0, 2.0, 3.0}, ((double[]) dictionary.get("a")), 1.0e-15);
181 Assertions.assertArrayEquals(new double[]{19.0}, ((double[]) dictionary.get("b")), 1.0e-15);
182 Assertions.assertEquals(file, dictionary.get("another") );
183 Assertions.assertEquals("Lorem Ipsum", dictionary.get("d"));
184 Assertions.assertEquals(9, dictionary.get("e"));
185 }
186
187 @Test
188 public void testToMap() {
189 DataDictionary dictionary = new DataDictionary();
190 dictionary.put("a", new double[]{1.0, 2.0, 3.0});
191 dictionary.put("d", "Lorem Ipsum");
192 dictionary.put("e", 9);
193 Assertions.assertEquals(3, dictionary.size());
194
195 Map<String, Object> map = dictionary.toMap();
196 Assertions.assertEquals(3, map.size());
197
198 Assertions.assertArrayEquals(new double[]{1.0, 2.0, 3.0}, ((double[]) map.get("a")), 1.0e-15);
199 Assertions.assertEquals("Lorem Ipsum", dictionary.get("d"));
200 Assertions.assertEquals(9, dictionary.get("e"));
201
202 dictionary.clear();
203 Assertions.assertEquals(0, dictionary.size());
204 Assertions.assertEquals(3, map.size());
205 map.put("z", new double[]{});
206 Assertions.assertEquals(4, map.size());
207 Assertions.assertEquals(0, dictionary.size());
208 }
209 }