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