private JsonStringSolution generateDepth(byte depthTarget) { JsonStringSolution root = new JsonStringSolution("root"); JsonStringSolution[] leaves = { root }; for (byte depth = 1; depth <= depthTarget; depth++) { JsonStringSolution[] newLeaves = new JsonStringSolution[leaves.Length * 2]; for (int leafIndex = leaves.Length - 1; leafIndex >= 0; leafIndex--) { leaves[leafIndex].left = new JsonStringSolution(depth + ":" + leafIndex + ":left"); leaves[leafIndex].right = new JsonStringSolution(depth + ":" + leafIndex + ":right"); newLeaves[leafIndex * 2] = leaves[leafIndex].left; newLeaves[leafIndex * 2 + 1] = leaves[leafIndex].right; } leaves = newLeaves; } return(root); }
public void GlobalSetup() { JsonStringSolution root = null; switch (testcase) { case Testcase.givenValues: root = givenTest; break; case Testcase.depth5: root = generateDepth(5); break; case Testcase.depth10: root = generateDepth(10); break; case Testcase.depth15: root = generateDepth(15); break; } jsonString = BinaryTreeNode <JsonStringSolution> .CreateFrom <JsonStringSolution, JsonStringSolution>(root); sExps = BinaryTreeNode <SExpsSolution> .CreateFrom <JsonStringSolution, SExpsSolution>(root); }
public void ValueEquality() { var sameA = new JsonStringSolution("root", new JsonStringSolution("left", new JsonStringSolution("left.left")), new JsonStringSolution("right")); var sameB = new JsonStringSolution("root", new JsonStringSolution("left", new JsonStringSolution("left.left")), new JsonStringSolution("right")); var differ = new JsonStringSolution("root", new JsonStringSolution("læft", new JsonStringSolution("left left")), new JsonStringSolution("right")); HashSet <JsonStringSolution> hashSet = new HashSet <JsonStringSolution>(); hashSet.Add(sameA); Assert.True(sameA.Equals(sameA)); Assert.True(sameA.Equals(sameB)); Assert.False(sameA.Equals(differ)); Assert.True(sameA == sameA); Assert.True(sameA == sameB); Assert.False(sameA == differ); Assert.Contains(sameA, hashSet); Assert.Contains(sameB, hashSet); Assert.DoesNotContain(differ, hashSet); }
public void Deserialization() => Assert.Equal (new JsonStringSolution("root", new JsonStringSolution("left", new JsonStringSolution("left.left")), new JsonStringSolution("right")) , JsonStringSolution.Deserialize("{\"value\":\"root\",\"left\":{\"value\":\"left\",\"left\":{\"value\":\"left.left\",\"left\":null,\"right\":null},\"right\":null},\"right\":{\"value\":\"right\",\"left\":null,\"right\":null}}") );
public JsonStringSolution JsonString() => JsonStringSolution.Deserialize(jsonString.Serialize());