public void GetNextNodeLRPTest_Input5ElementTerm_ReturnsListOf4InReversedOrder() { var kTerm = CombinatorK.ConstructCombinator(); var iTerm = CombinatorI.ConstructCombinator(); string name3 = "rumba"; var term3 = new Constant(name3); string name4 = "spinner"; var term4 = new Constant(name4); string name5 = "vape"; var term5 = new Constant(name5); var startingTermsList = new Term[] { kTerm, iTerm, term3, term4, term5 }; var term = Term.BuildWith(startingTermsList); var result = new List <Term>(); term = TreeTraversal.GetLowestLeftNode(term); for (int i = 0; i < startingTermsList.Length - 1; i++) { term = TreeTraversal.GetNextNodeLRP(term); result.Add(term); } Assert.Multiple(() => { Assert.AreEqual(iTerm.Stringify(), result[0].Stringify()); Assert.AreEqual(term3.Stringify(), result[1].Stringify()); Assert.AreEqual(term4.Stringify(), result[2].Stringify()); Assert.AreEqual(term5.Stringify(), result[3].Stringify()); }); }
public void TermReductionTest_InputCombinatorsI3Times_ReturnsCombinatorStringification() { var term1 = CombinatorI.ConstructCombinator(); var term2 = CombinatorI.ConstructCombinator(); var term3 = CombinatorI.ConstructCombinator(); var extepctedResult = Term.BuildWith(new Term[] { term1 }); var expected = extepctedResult.Stringify(); var reductionResult = Term.EvaluateWith(new Term[] { term1, term2, term3 }); var result = reductionResult.Stringify(); Assert.AreEqual(expected, result); }
public void TermReductionTest_InputCombinatorI_ReturnsSameStringification() { var term1 = CombinatorI.ConstructCombinator(); var buildResult = Term.BuildWith(new Term[] { term1 }); var expected = buildResult.Stringify(); var evalResult = Term.EvaluateWith(new Term[] { term1 }); var result = evalResult.Stringify(); Assert.AreEqual(expected, result); }
public void TermReductionTest_InputSKIX_ReturnsTermX() { var S = CombinatorS.ConstructCombinator(); var K = CombinatorK.ConstructCombinator(); var I = CombinatorI.ConstructCombinator(); var x = new Variable("x"); var expectedTerm = Term.BuildWith(new Term[] { x }); var resultTerm = Term.EvaluateWith(new Term[] { S, K, I, x }); Assert.AreEqual(expectedTerm.Stringify(), resultTerm.Stringify()); }
public void TermReductionTest_InputCombinatorIAndConstant_ReturnsConstantStringification() { var term1 = CombinatorI.ConstructCombinator(); string name = "const"; var term2 = new Constant(name); var extepctedResult = Term.BuildWith(new Term[] { term2 }); var expected = extepctedResult.Stringify(); var reductionResult = Term.EvaluateWith(new Term[] { term1, term2 }); var result = reductionResult.Stringify(); Assert.AreEqual(expected, result); }