public void Test_Triangle_With_Full_Symmetry() { // Prepare the objects var A = new LooseConfigurationObject(Point); var B = new LooseConfigurationObject(Point); var C = new LooseConfigurationObject(Point); var P = new ConstructedConfigurationObject(Midpoint, B, C); var Q = new ConstructedConfigurationObject(Midpoint, C, A); var R = new ConstructedConfigurationObject(Midpoint, A, B); // Prepare the configuration var configuration = Configuration.DeriveFromObjects(Triangle, A, B, C, P, Q, R); // Prepare the theorem var theorem = new Theorem(ConcurrentLines, new[] { new LineTheoremObject(A, P), new LineTheoremObject(B, Q), new LineTheoremObject(C, R) }); // Rank var rank = new SymmetryRanker().Rank(theorem, configuration, allTheorems: null); // Assert rank.Should().Be(1); }
public void Test_Quadrilateral_With_Full_Symmetry() { // Prepare the objects var A = new LooseConfigurationObject(Point); var B = new LooseConfigurationObject(Point); var C = new LooseConfigurationObject(Point); var D = new LooseConfigurationObject(Point); var P = new ConstructedConfigurationObject(Incenter, A, B, C); var Q = new ConstructedConfigurationObject(Incenter, B, C, D); var R = new ConstructedConfigurationObject(Incenter, C, D, A); var S = new ConstructedConfigurationObject(Incenter, D, A, B); // Prepare the configuration var configuration = Configuration.DeriveFromObjects(Quadrilateral, P, Q, R, S); // Prepare the theorem // NOTE: I did not really try to make it be true in general var theorem = new Theorem(ConcyclicPoints, P, Q, R, S); // Rank var rank = new SymmetryRanker().Rank(theorem, configuration, allTheorems: null); // Assert rank.Should().Be(1); }
public void Test_Quadrilateral_With_No_Symmetry() { // Prepare the objects var A = new LooseConfigurationObject(Point); var B = new LooseConfigurationObject(Point); var C = new LooseConfigurationObject(Point); var D = new LooseConfigurationObject(Point); var P = new ConstructedConfigurationObject(Incenter, A, B, D); var Q = new ConstructedConfigurationObject(Centroid, C, B, D); var R = new ConstructedConfigurationObject(Incenter, B, C, Q); // Prepare the configuration var configuration = Configuration.DeriveFromObjects(Quadrilateral, P, Q, R); // Prepare the theorem // NOTE: I did not really try to make it be true in general var theorem = new Theorem(PerpendicularLines, new[] { new LineTheoremObject(A, R), new LineTheoremObject(B, D) }); // Rank var rank = new SymmetryRanker().Rank(theorem, configuration, allTheorems: null); // Assert rank.Should().Be(0); }
public void Test_Triangle_With_No_Symmetry() { // Prepare the objects var A = new LooseConfigurationObject(Point); var B = new LooseConfigurationObject(Point); var C = new LooseConfigurationObject(Point); var D = new ConstructedConfigurationObject(PointReflection, A, B); // Prepare the configuration var configuration = Configuration.DeriveFromObjects(Triangle, A, B, C, D); // Prepare the theorem var theorem = new Theorem(EqualLineSegments, new[] { new LineSegmentTheoremObject(D, A), new LineSegmentTheoremObject(D, B) }); // Rank var rank = new SymmetryRanker().Rank(theorem, configuration, allTheorems: null); // Assert rank.Should().Be(0); }