public void CountDescendants_SingleVertex_ReturnsZero()
        {
            var dag = new SimpleDAG(1);

            int numDescendants = dag.CountDescendants(0);

            Assert.That(numDescendants, Is.EqualTo(0));
        }
        public void CountDescendants_TwoVerticesCalledOnParent_ReturnsOne()
        {
            var dag = new SimpleDAG(2);
            dag.AddEdge(0, 1);

            int numDescendants = dag.CountDescendants(0);

            Assert.That(numDescendants, Is.EqualTo(1));
        }
        public void CountDescendants_ThreeVerticesCalledOnRoot_ReturnsTwo()
        {
            var dag = new SimpleDAG(3);
            dag.AddEdge(0, 1);
            dag.AddEdge(0, 2);

            int numDescendants = dag.CountDescendants(0);

            Assert.That(numDescendants, Is.EqualTo(2));
        }
        public void Compare_LeftOperandHasOneDescendantRightOperandHasNoDescendants_ComparesLow()
        {
            var dag = new SimpleDAG(3);
            dag.AddEdge(0, 1);
            var dagAdv = new DAGAdversary(dag);
            List<WrappedInt> data = dagAdv.CurrentData;

            int result = dagAdv.Compare(data[0], data[2]);

            Assert.That(result, Is.LessThan(0));
        }
        public void CountDescendants_DiamondDAGCalledOnApex_ReturnsThree()
        {
            var dag = new SimpleDAG(4);
            dag.AddEdge(0, 1); //     0
            dag.AddEdge(0, 2); //    / \
            dag.AddEdge(1, 3); //   1   2
            dag.AddEdge(2, 3); //    \ /
                               //     3

            int numDescendants = dag.CountDescendants(0);

            Assert.That(numDescendants, Is.EqualTo(3));
        }
        public void Compare_ThreeOperandsFirstLessThanSecondAndSecondLessThanThird_IsTransitive()
        {
            var dag = new SimpleDAG(3);
            dag.AddEdge(0, 1);
            dag.AddEdge(1, 2);
            var dagAdv = new DAGAdversary(dag);
            List<WrappedInt> data = dagAdv.CurrentData;

            int thirdToFirst = dagAdv.Compare(data[2], data[0]);

            Assert.That(thirdToFirst, Is.GreaterThan(0));
        }