Skip to content

Commit 2f0a4f5

Browse files
committed
Add tests to increase code coverage: CharSequenceReaderTest, NumberValueTest, etc.
1 parent 5f62471 commit 2f0a4f5

10 files changed

Lines changed: 2582 additions & 0 deletions

File tree

Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,240 @@
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,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
package groovy.lang;
20+
21+
import org.junit.jupiter.api.BeforeEach;
22+
import org.junit.jupiter.api.Test;
23+
24+
import java.util.ArrayList;
25+
import java.util.Arrays;
26+
import java.util.HashMap;
27+
import java.util.List;
28+
import java.util.Map;
29+
30+
import static org.junit.jupiter.api.Assertions.*;
31+
32+
/**
33+
* Unit tests for {@link SpreadMap}.
34+
*/
35+
class SpreadMapJUnit5Test {
36+
37+
private SpreadMap spreadMap;
38+
39+
@BeforeEach
40+
void setUp() {
41+
String[] entries = new String[]{"key1", "value1", "key2", "value2"};
42+
spreadMap = new SpreadMap(entries);
43+
}
44+
45+
@Test
46+
void testConstructFromArray() {
47+
Object[] entries = {"a", 1, "b", 2, "c", 3};
48+
SpreadMap map = new SpreadMap(entries);
49+
assertEquals(3, map.size());
50+
assertEquals(1, map.get("a"));
51+
assertEquals(2, map.get("b"));
52+
assertEquals(3, map.get("c"));
53+
}
54+
55+
@Test
56+
void testConstructFromMap() {
57+
Map<String, Integer> source = new HashMap<>();
58+
source.put("x", 10);
59+
source.put("y", 20);
60+
SpreadMap map = new SpreadMap(source);
61+
assertEquals(2, map.size());
62+
assertEquals(10, map.get("x"));
63+
assertEquals(20, map.get("y"));
64+
}
65+
66+
@Test
67+
void testConstructFromList() {
68+
List<Object> list = Arrays.asList("first", 100, "second", 200);
69+
SpreadMap map = new SpreadMap(list);
70+
assertEquals(2, map.size());
71+
assertEquals(100, map.get("first"));
72+
assertEquals(200, map.get("second"));
73+
}
74+
75+
@Test
76+
void testPutThrowsException() {
77+
assertThrows(RuntimeException.class, () -> spreadMap.put("newKey", "newValue"));
78+
}
79+
80+
@Test
81+
void testRemoveThrowsException() {
82+
assertThrows(RuntimeException.class, () -> spreadMap.remove("key1"));
83+
}
84+
85+
@Test
86+
void testPutAllThrowsException() {
87+
Map<String, String> newMap = new HashMap<>();
88+
newMap.put("a", "b");
89+
assertThrows(RuntimeException.class, () -> spreadMap.putAll(newMap));
90+
}
91+
92+
@Test
93+
void testEqualsWithSameSpreadMap() {
94+
SpreadMap map1 = new SpreadMap(new Object[]{"a", 1, "b", 2});
95+
SpreadMap map2 = new SpreadMap(new Object[]{"a", 1, "b", 2});
96+
assertEquals(map1, map2);
97+
}
98+
99+
@Test
100+
void testEqualsWithSelf() {
101+
assertTrue(spreadMap.equals(spreadMap));
102+
}
103+
104+
@Test
105+
void testEqualsWithDifferentSize() {
106+
SpreadMap map1 = new SpreadMap(new Object[]{"a", 1});
107+
SpreadMap map2 = new SpreadMap(new Object[]{"a", 1, "b", 2});
108+
assertNotEquals(map1, map2);
109+
}
110+
111+
@Test
112+
void testEqualsWithDifferentValues() {
113+
SpreadMap map1 = new SpreadMap(new Object[]{"a", 1});
114+
SpreadMap map2 = new SpreadMap(new Object[]{"a", 2});
115+
assertNotEquals(map1, map2);
116+
}
117+
118+
@Test
119+
void testEqualsWithNonSpreadMap() {
120+
Map<String, Integer> regularMap = new HashMap<>();
121+
regularMap.put("key1", 1);
122+
assertFalse(spreadMap.equals(regularMap));
123+
}
124+
125+
@Test
126+
void testEqualsWithNull() {
127+
assertFalse(spreadMap.equals((SpreadMap) null));
128+
}
129+
130+
@Test
131+
void testHashCode() {
132+
SpreadMap map1 = new SpreadMap(new Object[]{"a", 1, "b", 2});
133+
SpreadMap map2 = new SpreadMap(new Object[]{"a", 1, "b", 2});
134+
assertEquals(map1.hashCode(), map2.hashCode());
135+
}
136+
137+
@Test
138+
void testHashCodeWithNullKey() {
139+
SpreadMap map = new SpreadMap(new Object[]{null, "value"});
140+
// Should not throw, hashCode should handle null keys
141+
int hash = map.hashCode();
142+
// Just verify it doesn't throw and returns something
143+
assertTrue(hash != 0 || hash == 0); // Always true, just checking no exception
144+
}
145+
146+
@Test
147+
void testToStringEmpty() {
148+
SpreadMap emptyMap = new SpreadMap(new Object[]{});
149+
assertEquals("*:[:]", emptyMap.toString());
150+
}
151+
152+
@Test
153+
void testToStringWithEntries() {
154+
SpreadMap map = new SpreadMap(new Object[]{"a", 1});
155+
String result = map.toString();
156+
assertTrue(result.startsWith("*:["));
157+
assertTrue(result.endsWith("]"));
158+
assertTrue(result.contains("a:1"));
159+
}
160+
161+
@Test
162+
void testToStringMultipleEntries() {
163+
SpreadMap map = new SpreadMap(new Object[]{"a", 1, "b", 2});
164+
String result = map.toString();
165+
assertTrue(result.startsWith("*:["));
166+
assertTrue(result.endsWith("]"));
167+
assertTrue(result.contains(":"));
168+
assertTrue(result.contains(", "));
169+
}
170+
171+
@Test
172+
void testContainsKey() {
173+
assertTrue(spreadMap.containsKey("key1"));
174+
assertTrue(spreadMap.containsKey("key2"));
175+
assertFalse(spreadMap.containsKey("nonexistent"));
176+
}
177+
178+
@Test
179+
void testContainsValue() {
180+
assertTrue(spreadMap.containsValue("value1"));
181+
assertTrue(spreadMap.containsValue("value2"));
182+
assertFalse(spreadMap.containsValue("nonexistent"));
183+
}
184+
185+
@Test
186+
void testKeySet() {
187+
assertEquals(2, spreadMap.keySet().size());
188+
assertTrue(spreadMap.keySet().contains("key1"));
189+
assertTrue(spreadMap.keySet().contains("key2"));
190+
}
191+
192+
@Test
193+
void testValues() {
194+
assertEquals(2, spreadMap.values().size());
195+
assertTrue(spreadMap.values().contains("value1"));
196+
assertTrue(spreadMap.values().contains("value2"));
197+
}
198+
199+
@Test
200+
void testEntrySet() {
201+
assertEquals(2, spreadMap.entrySet().size());
202+
}
203+
204+
@Test
205+
void testIsEmpty() {
206+
assertFalse(spreadMap.isEmpty());
207+
SpreadMap emptyMap = new SpreadMap(new Object[]{});
208+
assertTrue(emptyMap.isEmpty());
209+
}
210+
211+
@Test
212+
void testConstructFromEmptyList() {
213+
List<Object> emptyList = new ArrayList<>();
214+
SpreadMap map = new SpreadMap(emptyList);
215+
assertTrue(map.isEmpty());
216+
assertEquals("*:[:]", map.toString());
217+
}
218+
219+
@Test
220+
void testWithIntegerKeysAndValues() {
221+
SpreadMap map = new SpreadMap(new Object[]{1, "one", 2, "two"});
222+
assertEquals("one", map.get(1));
223+
assertEquals("two", map.get(2));
224+
}
225+
226+
@Test
227+
void testWithMixedTypes() {
228+
SpreadMap map = new SpreadMap(new Object[]{"string", 123, 456, "number", null, "nullKey"});
229+
assertEquals(123, map.get("string"));
230+
assertEquals("number", map.get(456));
231+
assertEquals("nullKey", map.get(null));
232+
}
233+
234+
@Test
235+
void testHashCodeConsistency() {
236+
int hash1 = spreadMap.hashCode();
237+
int hash2 = spreadMap.hashCode();
238+
assertEquals(hash1, hash2);
239+
}
240+
}

0 commit comments

Comments
 (0)