Refactor to regex and tests.

Closes Debugger lists immediate array dimension last #606.
This commit is contained in:
A Samuel Pottinger
2023-05-09 18:12:27 +00:00
parent 5ec4cdc295
commit 2fdd3e5f36
2 changed files with 122 additions and 29 deletions

View File

@@ -0,0 +1,81 @@
package processing.mode.java.debug;
import com.sun.jdi.StringReference;
import com.sun.jdi.Value;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
public class VariableNodeTests {
@Test
public void describeInt() {
Value value = buildMockValue("5");
VariableNode node = new VariableNode("test", "int", value);
Assert.assertEquals(node.getStringValue(), "5");
}
@Test
public void describeFloat() {
Value value = buildMockValue("5.5");
VariableNode node = new VariableNode("test", "float", value);
Assert.assertEquals(node.getStringValue(), "5.5");
}
@Test
public void describeObject() {
Value value = buildMockValue("5.5");
VariableNode node = new VariableNode("test", "Other", value);
Assert.assertEquals(node.getStringValue(), "instance of Other");
}
@Test
public void describeString() {
Value value = buildMockString("testing");
VariableNode node = new VariableNode("test", "java.lang.String", value);
Assert.assertEquals(node.getStringValue(), "testing");
}
@Test
public void describeSimpleArray() {
Value value = buildMockValue("instance of int[5] (id=998)");
VariableNode node = new VariableNode("test", "int[]", value);
Assert.assertEquals(node.getStringValue(), "instance of int[5]");
}
@Test
public void describeNestedArraySingleDimensionUnknown() {
Value value = buildMockValue("instance of int[][5] (id=998)");
VariableNode node = new VariableNode("test", "int[][]", value);
Assert.assertEquals(node.getStringValue(), "instance of int[5][]");
}
@Test
public void describeNestedArrayMultiDimensionUnknown() {
Value value = buildMockValue("instance of int[][][5] (id=998)");
VariableNode node = new VariableNode("test", "int[][][]", value);
Assert.assertEquals(node.getStringValue(), "instance of int[5][][]");
}
@Test
public void describeNestedArrayMixed() {
Value value = buildMockValue("instance of int[][][5][7] (id=998)");
VariableNode node = new VariableNode("test", "int[][][][]", value);
Assert.assertEquals(node.getStringValue(), "instance of int[5][7][][]");
}
private Value buildMockValue(String toStringValue) {
Value value = Mockito.mock(Value.class);
Mockito.when(value.toString()).thenReturn(toStringValue);
return value;
}
private StringReference buildMockString(String innerValue) {
StringReference value = Mockito.mock(StringReference.class);
Mockito.when(value.value()).thenReturn(innerValue);
return value;
}
}