public void The_following_two_graphs_should_have_the_same_degree_sequence() { var factor1 = new SimplicialComplex<string>(SimpleGraphExtensions.PathGraph(2).AddPrefix("#1")); var factor2 = new SimplicialComplex<string>(SimpleGraphExtensions.CompleteGraph(3).AddPrefix("#2")); var graph1 = factor1.DisjointUnion(factor2); var graph2 = SimpleGraphExtensions.PathGraph(5); graph1.DegreeSequence().Count().ShouldEqual(graph2.DegreeSequence().Count()); graph1.DegreeSequence().EachIndex(i => graph1.DegreeSequence().ElementAt(i).ShouldEqual(graph2.DegreeSequence().ElementAt(i))); }
public void New_simplicial_complex_with_default_constructor_should_have_size_and_order_0() { var graph = new SimplicialComplex<int>(); graph.Size().ShouldEqual(0); graph.Order().ShouldEqual(0); }
public void New_simplicial_complex_with_default_constructor_should_have_simple_edge_count_0() { var graph = new SimplicialComplex<int>(); graph.Edges().Count.ShouldEqual(graph.Size()); }
public void IsFace_should_be_false_for_nonexistent_vertex() { var graph = new SimplicialComplex<string>(); graph.IsFace(new Set<string> { "a" }).ShouldBeFalse(); }
public void Distance_sort_should_give_correct_results() { var graph = new SimplicialComplex<string>(new List<Set<string>> { new Set<string>{"a", "b"}, new Set<string>{"b", "c"}, new Set<string>{"c", "d"}, new Set<string>{"d", "e"}, new Set<string>{"e", "f"} }); var sorted1 = graph.DistanceSort("f".WrapInList()); var enumerable = sorted1 as string[] ?? sorted1.ToArray(); enumerable.ShouldNumber(6); enumerable.ElementAt(0).ShouldEqual("f"); enumerable.ElementAt(1).ShouldEqual("e"); enumerable.ElementAt(2).ShouldEqual("d"); enumerable.ElementAt(3).ShouldEqual("c"); enumerable.ElementAt(4).ShouldEqual("b"); enumerable.ElementAt(5).ShouldEqual("a"); var sorted2 = graph.DistanceSort("c".WrapInList()); var enumerable1 = sorted2 as string[] ?? sorted2.ToArray(); enumerable1.ShouldNumber(6); enumerable1.First().ShouldEqual("c"); var slice1 = enumerable1.Slice(1, 3); slice1.ShouldContain("b", "d"); var slice2 = enumerable1.Slice(3, 5); slice2.ShouldContain("a", "e"); enumerable1.ElementAt(5).ShouldEqual("f"); var sorted3 = graph.DistanceSort(new List<string> { "a", "c", "d" }); var sorted4 = sorted3 as string[] ?? sorted3.ToArray(); sorted4.ShouldNumber(6); var slice = sorted4.Slice(0, 3); slice.ShouldContain("a", "c", "d"); }
public void Disjoint_union_should_have_sums_of_numbers_of_simplices() { var factor1 = new SimplicialComplex<string>(SimpleGraphExtensions.PathGraph(2).AddPrefix("#1")); var factor2 = new SimplicialComplex<string>(SimpleGraphExtensions.CompleteGraph(3).AddPrefix("#2")); var graph = factor1.DisjointUnion(factor2); graph.Order().ShouldEqual(factor1.Order() + factor2.Order()); graph.Count.ShouldEqual(factor1.Count + factor2.Count); // i.e. (since it is a graph) the number of edges are the same }