示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
 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}}")
     );
示例#5
0
 public JsonStringSolution JsonString() => JsonStringSolution.Deserialize(jsonString.Serialize());