Skip to content

Commit dc44f0c

Browse files
committed
test(core): add ValueNodeTest
1 parent 89da0ca commit dc44f0c

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
* Copyright 2024 Siroshun09
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.github.siroshun09.configapi.core.node;
18+
19+
import org.junit.jupiter.api.Disabled;
20+
import org.junit.jupiter.api.Nested;
21+
import org.junit.jupiter.api.Test;
22+
23+
import java.util.concurrent.atomic.AtomicInteger;
24+
import java.util.concurrent.atomic.AtomicLong;
25+
import java.util.stream.Stream;
26+
27+
import static org.junit.jupiter.api.Assertions.assertEquals;
28+
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
29+
import static org.junit.jupiter.api.Assertions.assertSame;
30+
31+
class ValueNodeTest extends AbstractNodeTest<ValueNode<?>> {
32+
33+
// Test cases for ValueNodes are in ValueNodeTest#fromObjectTestCases
34+
@Override
35+
@Disabled
36+
void testNode(NodeTestCase<ValueNode<?>> testCase) {
37+
super.testNode(testCase);
38+
}
39+
40+
@Override
41+
protected Stream<NodeTestCase<ValueNode<?>>> nodeTestCases() {
42+
return Stream.of();
43+
}
44+
45+
@Override
46+
void testFromObject(FromObjectTestCase<ValueNode<?>> testCase) {
47+
super.testFromObject(testCase);
48+
var node = Node.fromObject(testCase.object());
49+
assertSame(node, Node.fromObject(node)); // ValueNode should be returned as-is from Node#fromObject
50+
}
51+
52+
@Override
53+
protected ValueNode<?> cast(Node<?> node) {
54+
return (ValueNode<?>) node;
55+
}
56+
57+
@Override
58+
protected Stream<FromObjectTestCase<ValueNode<?>>> fromObjectTestCases() {
59+
return Stream.of(
60+
fromObjectTest(true, node -> assertSame(BooleanValue.TRUE, node)),
61+
fromObjectTest(false, node -> assertSame(BooleanValue.FALSE, node)),
62+
fromObjectTest((byte) 1, node -> assertEquals((byte) 1, assertInstanceOf(ByteValue.class, node).value())),
63+
fromObjectTest('a', node -> assertEquals('a', assertInstanceOf(CharValue.class, node).value())),
64+
fromObjectTest(3.14, node -> assertEquals(3.14, assertInstanceOf(DoubleValue.class, node).value())),
65+
fromObjectTest(ExampleEnum.A, node -> assertEquals(ExampleEnum.A, assertInstanceOf(EnumValue.class, node).value())),
66+
fromObjectTest(3.14f, node -> assertEquals(3.14f, assertInstanceOf(FloatValue.class, node).value())),
67+
fromObjectTest(1, node -> assertEquals(1, assertInstanceOf(IntValue.class, node).value())),
68+
fromObjectTest(1L, node -> assertEquals(1L, assertInstanceOf(LongValue.class, node).value())),
69+
fromObjectTest((short) 1, node -> assertEquals((short) 1, assertInstanceOf(ShortValue.class, node).value())),
70+
fromObjectTest("a", node -> assertEquals("a", assertInstanceOf(StringValue.class, node).value())),
71+
72+
// Additional number supports
73+
fromObjectTest(new AtomicInteger(1), node -> assertEquals(1, assertInstanceOf(IntValue.class, node).value())),
74+
fromObjectTest(new AtomicLong(1), node -> assertEquals(1L, assertInstanceOf(LongValue.class, node).value()))
75+
);
76+
}
77+
78+
private enum ExampleEnum {
79+
A
80+
}
81+
82+
@Nested
83+
class BooleanValueTest {
84+
@Test
85+
void testFromBoolean() {
86+
assertSame(BooleanValue.TRUE, BooleanValue.fromBoolean(Boolean.TRUE));
87+
assertSame(BooleanValue.FALSE, BooleanValue.fromBoolean(Boolean.FALSE));
88+
89+
assertSame(BooleanValue.TRUE, BooleanValue.fromBoolean(true));
90+
assertSame(BooleanValue.FALSE, BooleanValue.fromBoolean(false));
91+
}
92+
}
93+
94+
@Nested
95+
class NumberValueTest {
96+
@Test
97+
void testNullForFromNumber() {
98+
assertSame(NumberValue.ZERO, NumberValue.fromNumber(null));
99+
}
100+
}
101+
}

0 commit comments

Comments
 (0)