예제 #1
0
        public void SplitShouldReturnNodei00iWhenLeftAndRightNodes()
        {
            // split(((0,1),(1,0))) = (((0,1),0),((0,(1,0)))
            Id id = new Id.Node(new Id.Node(0, 1), new Id.Node(1, 0));

            id.Split().Should().Be(
                new Id.Node(
                    new Id.Node(new Id.Node(0, 1), 0),
                    new Id.Node(0, new Id.Node(1, 0))
                    )
                );
        }
예제 #2
0
        public void SplitShouldReturnNode0i0iWhenLeftLeaf0()
        {
            // split((0,1)) = ((0,(1,0)),(0,(0,1)))
            Id id1 = new Id.Node(0, 1);

            id1.Split().Should().Be(
                new Id.Node(
                    new Id.Node(0, new Id.Node(1, 0)),
                    new Id.Node(0, new Id.Node(0, 1))
                    )
                );

            // split((0,(0,1))) = ((0,(0,(1,0))),(0,(0,(0,1))))
            Id id2 = new Id.Node(0, new Id.Node(0, 1));

            id2.Split().Should().Be(
                new Id.Node(
                    new Id.Node(0, new Id.Node(0, new Id.Node(1, 0))),
                    new Id.Node(0, new Id.Node(0, new Id.Node(0, 1)))
                    ));
        }
예제 #3
0
        public void SplitShouldReturnNodei0i0WhenRightLeaf0()
        {
            // split((1,0)) = (((1,0),0),((0,1),0))
            Id id1 = new Id.Node(1, 0);

            id1.Split().Should().Be(
                new Id.Node(
                    new Id.Node(new Id.Node(1, 0), 0),
                    new Id.Node(new Id.Node(0, 1), 0)
                    )
                );

            // split(((1,0),0)) = ((((1,0),0),0),(((0,1),0),0))
            Id id2 = new Id.Node(new Id.Node(1, 0), 0);

            id2.Split().Should().Be(
                new Id.Node(
                    new Id.Node(new Id.Node(new Id.Node(1, 0), 0), 0),
                    new Id.Node(new Id.Node(new Id.Node(0, 1), 0), 0)
                    )
                );
        }