Exemplo n.º 1
0
        public void Invalid()
        {
            var g = new MfGraphInt(2);

            g.Invoking(g => g.Flow(0, 2)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(2, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(2, 0, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(0, 2, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(0, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(0, 0, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.Flow(0, 1)).Should().NotThrow();
            g.Invoking(g => g.Flow(1, 0, 1)).Should().NotThrow();

            g.Invoking(g => g.AddEdge(0, 2, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.AddEdge(2, 0, 0)).Should().ThrowContractAssert();
            g.Invoking(g => g.AddEdge(0, 0, -1)).Should().ThrowContractAssert();
            g.Invoking(g => g.AddEdge(0, 0, 0)).Should().NotThrow();
            g.Invoking(g => g.AddEdge(1, 0, 10)).Should().NotThrow();

            g.Invoking(g => g.GetEdge(-1)).Should().ThrowContractAssert();
            g.Invoking(g => g.GetEdge(2)).Should().ThrowContractAssert();
            g.Invoking(g => g.GetEdge(0)).Should().NotThrow();
            g.Invoking(g => g.GetEdge(1)).Should().NotThrow();

            g.Invoking(g => g.ChangeEdge(-1, 2, 2)).Should().ThrowContractAssert();
            g.Invoking(g => g.ChangeEdge(2, 2, 2)).Should().ThrowContractAssert();
            g.Invoking(g => g.ChangeEdge(0, 2, 2)).Should().NotThrow();
            g.Invoking(g => g.ChangeEdge(1, 2, 2)).Should().NotThrow();

            g.Invoking(g => g.ChangeEdge(0, 1, 2)).Should().ThrowContractAssert();
            g.Invoking(g => g.ChangeEdge(1, 1, 2)).Should().ThrowContractAssert();
            g.Invoking(g => g.ChangeEdge(0, 0, -1)).Should().ThrowContractAssert();
        }
Exemplo n.º 2
0
        public void Twice()
        {
            var g = new MfGraphInt(3);

            g.AddEdge(0, 1, 1).Should().Be(0);
            g.AddEdge(0, 2, 1).Should().Be(1);
            g.AddEdge(1, 2, 1).Should().Be(2);
            g.Flow(0, 2).Should().Be(2);

            MfGraphInt.Edge e;


            e = new MfGraphInt.Edge(0, 1, 1, 1);
            g.GetEdge(0).Should().Be(e);
            e = new MfGraphInt.Edge(0, 2, 1, 1);
            g.GetEdge(1).Should().Be(e);
            e = new MfGraphInt.Edge(1, 2, 1, 1);
            g.GetEdge(2).Should().Be(e);

            g.ChangeEdge(0, 100, 10);
            e = new MfGraphInt.Edge(0, 1, 100, 10);
            g.GetEdge(0).Should().Be(e);

            g.Flow(0, 2).Should().Be(0);
            g.Flow(0, 1).Should().Be(90);

            e = new MfGraphInt.Edge(0, 1, 100, 100);
            g.GetEdge(0).Should().Be(e);
            e = new MfGraphInt.Edge(0, 2, 1, 1);
            g.GetEdge(1).Should().Be(e);
            e = new MfGraphInt.Edge(1, 2, 1, 1);
            g.GetEdge(2).Should().Be(e);

            g.Flow(2, 0).Should().Be(2);

            e = new MfGraphInt.Edge(0, 1, 100, 99);
            g.GetEdge(0).Should().Be(e);
            e = new MfGraphInt.Edge(0, 2, 1, 0);
            g.GetEdge(1).Should().Be(e);
            e = new MfGraphInt.Edge(1, 2, 1, 0);
            g.GetEdge(2).Should().Be(e);
        }