Skip to content

Commit 8274f43

Browse files
committed
Add TrackableValueSerializationTest for interface coverage
- Test TrackableValue interface Jackson annotations - Test serialization of different implementations - Test container serialization - Test null value serialization - Test complete workflow serialization
1 parent 5fef78a commit 8274f43

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
/*
2+
* Scanner Core - A Modular Framework for Probe Definition, Execution, and Result Analysis.
3+
*
4+
* Copyright 2017-2023 Ruhr University Bochum, Paderborn University, Technology Innovation Institute, and Hackmanit GmbH
5+
*
6+
* Licensed under Apache License, Version 2.0
7+
* http://www.apache.org/licenses/LICENSE-2.0.txt
8+
*/
9+
package de.rub.nds.scanner.core.passive;
10+
11+
import static org.junit.jupiter.api.Assertions.*;
12+
13+
import com.fasterxml.jackson.databind.ObjectMapper;
14+
import java.io.IOException;
15+
import org.junit.jupiter.api.BeforeEach;
16+
import org.junit.jupiter.api.Test;
17+
18+
public class TrackableValueSerializationTest {
19+
20+
private ObjectMapper mapper;
21+
22+
@BeforeEach
23+
public void setUp() {
24+
mapper = new ObjectMapper();
25+
}
26+
27+
@Test
28+
public void testSerializeTestTrackableValue() throws IOException {
29+
TestTrackableValue value = new TestTrackableValue("test-value");
30+
31+
String json = mapper.writeValueAsString(value);
32+
assertNotNull(json);
33+
assertTrue(json.contains("TestTrackableValue"));
34+
assertTrue(json.contains("test-value"));
35+
36+
TestTrackableValue deserialized = mapper.readValue(json, TestTrackableValue.class);
37+
assertEquals(value, deserialized);
38+
}
39+
40+
@Test
41+
public void testSerializeAnotherTestTrackableValue() throws IOException {
42+
AnotherTestTrackableValue value = new AnotherTestTrackableValue(42);
43+
44+
String json = mapper.writeValueAsString(value);
45+
assertNotNull(json);
46+
assertTrue(json.contains("AnotherTestTrackableValue"));
47+
assertTrue(json.contains("42"));
48+
49+
AnotherTestTrackableValue deserialized =
50+
mapper.readValue(json, AnotherTestTrackableValue.class);
51+
assertEquals(value, deserialized);
52+
}
53+
54+
@Test
55+
public void testPolymorphicSerialization() throws IOException {
56+
// Test serializing individual values
57+
TestTrackableValue tv = new TestTrackableValue("string-value");
58+
AnotherTestTrackableValue atv = new AnotherTestTrackableValue(123);
59+
60+
String jsonTv = mapper.writeValueAsString(tv);
61+
String jsonAtv = mapper.writeValueAsString(atv);
62+
63+
assertNotNull(jsonTv);
64+
assertNotNull(jsonAtv);
65+
assertTrue(jsonTv.contains("string-value"));
66+
assertTrue(jsonAtv.contains("123"));
67+
}
68+
69+
@Test
70+
public void testContainerWithMixedTypes() throws IOException {
71+
ExtractedValueContainer<TrackableValue> container =
72+
new ExtractedValueContainer<>(new TestTrackableValue("containerType"));
73+
container.put(new TestTrackableValue("test1"));
74+
container.put(new AnotherTestTrackableValue(99));
75+
76+
String json = mapper.writeValueAsString(container);
77+
assertNotNull(json);
78+
assertTrue(json.contains("extractedValueList"));
79+
// Just test serialization works, skip deserialization due to type erasure
80+
}
81+
82+
@Test
83+
public void testCompleteWorkflowSerialization() throws IOException {
84+
// Create a complete workflow with StatsWriter
85+
StatsWriter<TestState> writer = new StatsWriter<>();
86+
TestStatExtractor extractor = new TestStatExtractor();
87+
writer.addExtractor(extractor);
88+
89+
// Extract some values
90+
writer.extract(new TestState("value1"));
91+
writer.extract(new TestState("value2"));
92+
93+
// Test that the container has the expected values
94+
ExtractedValueContainer<?> container = extractor.getContainer();
95+
assertEquals(2, container.getNumberOfExtractedValues());
96+
assertFalse(container.areAllValuesIdentical());
97+
assertTrue(container.areAllValuesDifferent());
98+
99+
// Serialize the container
100+
String json = mapper.writeValueAsString(container);
101+
assertNotNull(json);
102+
assertTrue(json.contains("extractedValueList"));
103+
}
104+
105+
@Test
106+
public void testNullValueSerialization() throws IOException {
107+
TestTrackableValue nullValue = null;
108+
109+
String json = mapper.writeValueAsString(nullValue);
110+
assertEquals("null", json);
111+
112+
TestTrackableValue deserialized = mapper.readValue(json, TestTrackableValue.class);
113+
assertNull(deserialized);
114+
}
115+
116+
@Test
117+
public void testEmptyContainerSerialization() throws IOException {
118+
ExtractedValueContainer<TestTrackableValue> container = new ExtractedValueContainer<>();
119+
120+
// Test the empty container state
121+
assertEquals(0, container.getNumberOfExtractedValues());
122+
assertTrue(container.areAllValuesIdentical());
123+
assertTrue(container.areAllValuesDifferent());
124+
125+
String json = mapper.writeValueAsString(container);
126+
assertNotNull(json);
127+
assertTrue(json.contains("extractedValueList"));
128+
}
129+
}

0 commit comments

Comments
 (0)