public void testDoubleNullness() throws Exception { SliceTreeStructure treeStructure = configureTree("DoubleNulls"); final SliceRootNode root = (SliceRootNode) treeStructure.getRootElement(); Map<SliceNode, SliceNullnessAnalyzer.NullAnalysisResult> map = SliceNullnessAnalyzer.createMap(); SliceNullnessAnalyzer.NullAnalysisResult leaves = SliceNullnessAnalyzer.calcNullableLeaves(root, treeStructure, map); SliceRootNode newRoot = SliceNullnessAnalyzer.createNewTree(leaves, root, map); checkStructure( newRoot, "Null Values\n" + " Value: null\n" + " (2: 10) |String| |l|;\n" + " (4: 9) |l| |=| |null|;\n" + " (7: 9) |l| |=| |null|;\n" + ""); }
public void testNullness() throws Exception { SliceTreeStructure treeStructure = configureTree("Nulls"); final SliceRootNode root = (SliceRootNode) treeStructure.getRootElement(); Map<SliceNode, SliceNullnessAnalyzer.NullAnalysisResult> map = SliceNullnessAnalyzer.createMap(); SliceNullnessAnalyzer.NullAnalysisResult leaves = SliceNullnessAnalyzer.calcNullableLeaves(root, treeStructure, map); SliceRootNode newRoot = SliceNullnessAnalyzer.createNewTree(leaves, root, map); checkStructure( newRoot, "Null Values\n" + " Value: o\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (15: 13) |set|(|o|)|;\n" + " Value: nu()\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (29: 13) |set|(|nu|(|)|)|;\n" + " Value: t\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (46: 15) |x|.|set|(|t|)|;\n" + "NotNull Values\n" + " Value: \"\"\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (19: 13) |set|(|CON|)|;\n" + " (5: 39) |private| |final| |static| |String| |CON| |=| |\"\"|;\n" + " Value: \"xxx\"\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (10: 13) |set|(|\"xxx\"|)|;\n" + " Value: new String()\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (17: 13) |set|(|new| |String|(|)|)|;\n" + " Value: nn()\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (18: 13) |set|(|nn|(|)|)|;\n" + " Value: nn\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (21: 13) |set|(|nn|)|;\n" + " Value: g\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (27: 13) |set|(|g|)|;\n" + " Value: \"null\"\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (48: 15) |x|.|set|(|t| |==| |null| |?| |\"null\"| |:| |t|)|;\n" + " (48: 27) |x|.|set|(|t| |==| |null| |?| |\"null\"| |:| |t|)|;\n" + " Value: t\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (48: 15) |x|.|set|(|t| |==| |null| |?| |\"null\"| |:| |t|)|;\n" + " (48: 36) |x|.|set|(|t| |==| |null| |?| |\"null\"| |:| |t|)|;\n" + " Value: d\n" + " (6: 12) |String| |l|;\n" + " (55: 13) |l| |=| |d|;\n" + "Other Values\n" + " Value: g\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (11: 13) |set|(|g|)|;\n" + " (24: 13) |set|(|other|)|;\n" + " (23: 24) |String| |other| |=| |g| |==| |\"\"| |?| |CON| |:| |g|;\n" + " (23: 40) |String| |other| |=| |g| |==| |\"\"| |?| |CON| |:| |g|;\n" + " Value: d\n" + " (6: 12) |String| |l|;\n" + " (52: 13) |l| |=| |d|;\n" + " (30: 13) |set|(|hz|(|)|)|;\n" + " (42: 16) |return| |d|;\n" + ""); }