Exemplo n.º 1
0
        public void TarjanOfflineLeastCommonAncestor_Throws()
        {
            var vertex1 = new TestVertex("1");
            var vertex2 = new TestVertex("2");
            var vertex3 = new TestVertex("3");
            var pairs   = new[] { new SEquatableEdge <TestVertex>(vertex1, vertex2) };
            var graph   = new AdjacencyGraph <TestVertex, Edge <TestVertex> >();

            graph.AddVertexRange(new[] { vertex1, vertex2 });
            var algorithm = new TarjanOfflineLeastCommonAncestorAlgorithm <TestVertex, Edge <TestVertex> >(graph);

            // ReSharper disable AssignNullToNotNullAttribute
            Assert.Throws <ArgumentNullException>(() => algorithm.Compute(null, pairs));
            Assert.Throws <ArgumentNullException>(() => algorithm.Compute(vertex1, null));
            Assert.Throws <ArgumentNullException>(() => algorithm.Compute(null, null));
            Assert.Throws <ArgumentException>(() => algorithm.Compute(vertex3, pairs));
            // ReSharper restore AssignNullToNotNullAttribute

            algorithm = new TarjanOfflineLeastCommonAncestorAlgorithm <TestVertex, Edge <TestVertex> >(graph);
            algorithm.SetRootVertex(vertex1);
            Assert.Throws <InvalidOperationException>(() => algorithm.Compute());
        }