1 | // License: GPL. For details, see LICENSE file.
|
---|
2 | package org.openstreetmap.josm.gui.mappaint;
|
---|
3 |
|
---|
4 | import org.junit.jupiter.api.Test;
|
---|
5 | import org.openstreetmap.josm.tools.Pair;
|
---|
6 |
|
---|
7 | import static org.junit.jupiter.api.Assertions.assertEquals;
|
---|
8 | import static org.junit.jupiter.api.Assertions.assertNull;
|
---|
9 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
---|
10 |
|
---|
11 | /**
|
---|
12 | * Unit tests of {@link DividedScale} class.
|
---|
13 | */
|
---|
14 | class DividedScaleTest {
|
---|
15 |
|
---|
16 | /**
|
---|
17 | * Test {@link DividedScale#get}
|
---|
18 | */
|
---|
19 | @Test
|
---|
20 | void testGetEmpty() {
|
---|
21 | DividedScale<String> scale = new DividedScale<>();
|
---|
22 | assertThrows(IllegalArgumentException.class, () -> scale.get(0.));
|
---|
23 | assertNull(scale.get(0.01));
|
---|
24 | assertNull(scale.get(1.));
|
---|
25 | assertNull(scale.get(4.));
|
---|
26 | assertNull(scale.get(6.));
|
---|
27 | assertNull(scale.get(8.));
|
---|
28 | assertNull(scale.get(100.));
|
---|
29 | }
|
---|
30 |
|
---|
31 | /**
|
---|
32 | * Test {@link DividedScale#put} and {@link DividedScale#get}
|
---|
33 | */
|
---|
34 | @Test
|
---|
35 | void testGetFoo() {
|
---|
36 | DividedScale<String> scale = new DividedScale<String>()
|
---|
37 | .put("foo", new Range(4., 8.));
|
---|
38 | assertNull(scale.get(1.));
|
---|
39 | assertNull(scale.get(4.));
|
---|
40 | assertEquals("foo", scale.get(4.01));
|
---|
41 | assertEquals("foo", scale.get(6.));
|
---|
42 | assertEquals("foo", scale.get(8.));
|
---|
43 | assertNull(scale.get(8.01));
|
---|
44 | assertNull(scale.get(100.));
|
---|
45 | assertEquals(scale, new DividedScale<>(scale));
|
---|
46 | }
|
---|
47 |
|
---|
48 | /**
|
---|
49 | * Test {@link DividedScale#put} and {@link DividedScale#getWithRange}
|
---|
50 | */
|
---|
51 | @Test
|
---|
52 | void testGetWithRangeFoo() {
|
---|
53 | DividedScale<String> scale = new DividedScale<String>()
|
---|
54 | .put("foo", new Range(4., 8.));
|
---|
55 | Pair<String, Range> pair = scale.getWithRange(6.);
|
---|
56 | assertEquals("foo", pair.a);
|
---|
57 | assertEquals(new Range(4., 8.), pair.b);
|
---|
58 | }
|
---|
59 |
|
---|
60 | /**
|
---|
61 | * Test {@link DividedScale#put} and {@link DividedScale#get}
|
---|
62 | */
|
---|
63 | @Test
|
---|
64 | void testGetFooBar() {
|
---|
65 | DividedScale<String> scale = new DividedScale<String>()
|
---|
66 | .put("foo", new Range(4., 8.))
|
---|
67 | .put("bar", new Range(2., 3.));
|
---|
68 | assertNull(scale.get(2.));
|
---|
69 | assertEquals("bar", scale.get(2.01));
|
---|
70 | assertEquals("bar", scale.get(3.));
|
---|
71 | assertNull(scale.get(3.01));
|
---|
72 | assertNull(scale.get(4.));
|
---|
73 | assertEquals("foo", scale.get(4.01));
|
---|
74 | assertEquals("foo", scale.get(8.));
|
---|
75 | assertNull(scale.get(8.01));
|
---|
76 | }
|
---|
77 |
|
---|
78 | /**
|
---|
79 | * Test {@link DividedScale#put} and {@link DividedScale#get}
|
---|
80 | */
|
---|
81 | @Test
|
---|
82 | void testGetFooBarBaz() {
|
---|
83 | DividedScale<String> scale = new DividedScale<String>()
|
---|
84 | .put("foo", new Range(4., 8.))
|
---|
85 | .put("bar", new Range(2., 3.))
|
---|
86 | .put("baz", new Range(3., 4.));
|
---|
87 | assertNull(scale.get(2.));
|
---|
88 | assertEquals("bar", scale.get(2.01));
|
---|
89 | assertEquals("bar", scale.get(3.));
|
---|
90 | assertEquals("baz", scale.get(3.01));
|
---|
91 | assertEquals("baz", scale.get(4.));
|
---|
92 | assertEquals("foo", scale.get(4.01));
|
---|
93 | assertEquals("foo", scale.get(8.));
|
---|
94 | assertNull(scale.get(8.01));
|
---|
95 | }
|
---|
96 |
|
---|
97 | /**
|
---|
98 | * Test {@link DividedScale#put}
|
---|
99 | */
|
---|
100 | @Test
|
---|
101 | void testPutSingleSubrange1() {
|
---|
102 | DividedScale<String> scale = new DividedScale<String>()
|
---|
103 | .put("foo", new Range(4., 8.));
|
---|
104 | Exception ex = assertThrows(DividedScale.RangeViolatedError.class, () -> scale.put("bar", new Range(4., 9.)));
|
---|
105 | assertEquals("the new range must be within a single subrange", ex.getMessage());
|
---|
106 | }
|
---|
107 |
|
---|
108 | /**
|
---|
109 | * Test {@link DividedScale#put}
|
---|
110 | */
|
---|
111 | @Test
|
---|
112 | void testPutSingleSubrangeNoData() {
|
---|
113 | DividedScale<String> scale = new DividedScale<String>()
|
---|
114 | .put("foo", new Range(4., 8.));
|
---|
115 | Exception ex = assertThrows(DividedScale.RangeViolatedError.class, () -> scale.put("bar", new Range(4., 5.)));
|
---|
116 | assertEquals("the new range must be within a subrange that has no data", ex.getMessage());
|
---|
117 | }
|
---|
118 |
|
---|
119 | /**
|
---|
120 | * Test {@link DividedScale#put}
|
---|
121 | */
|
---|
122 | @Test
|
---|
123 | void testPutSingleSubrange2() {
|
---|
124 | DividedScale<String> scale = new DividedScale<String>()
|
---|
125 | .put("foo", new Range(4., 8.));
|
---|
126 | Exception ex = assertThrows(DividedScale.RangeViolatedError.class, () -> scale.put("bar", new Range(2., 5.)));
|
---|
127 | assertEquals("the new range must be within a single subrange", ex.getMessage());
|
---|
128 | }
|
---|
129 | }
|
---|