public void GenerateExpression_RandomExpressionGeneratedAndPassedToLogicAppForParsing_ExpectedAllHashCodesToMatch() { // Arrange // re-use logic app for not repeating large procedure and for all the hash codes. LogicApp logicApp = new LogicApp(new Parser()); PropositionGenerator propositionGenerator = new PropositionGenerator(); // Act Proposition randomExpression = propositionGenerator.GenerateExpression(); logicApp.Parse(randomExpression); bool hashCodesMatched = logicApp.HashCodesMatched(); // Assert hashCodesMatched.Should().BeTrue("Because a valid expression should be generated"); }
public void Parse_ValidPropositionsWithLiterals_LogicAppShouldHaveAssignedAllRelatedProperties(string propositionExpression, int expectedNumberOfVariables) { // Arrange // Act logicApp.Parse(propositionExpression); int actualNumberOfVariables = logicApp.Variables.Count; // Assert actualNumberOfVariables.Should().Be(expectedNumberOfVariables, "Because the every unique variable should be added to the list"); string propositionRelatedMessage = "Because the proposition should be successfully parsed an assigned"; logicApp.Root.Should().NotBeNull(propositionRelatedMessage); logicApp.DisjunctiveNormalForm.Should().NotBeNull(propositionRelatedMessage); logicApp.Nandified.Should().NotBeNull(propositionRelatedMessage); string truthTableRelatedMessage = "Because the truthtables should be successfully created and assigned after parsing"; logicApp.TruthTable.Should().NotBeNull(truthTableRelatedMessage); logicApp.SimplifiedTruthTable.Should().NotBeNull(truthTableRelatedMessage); logicApp.HashCodes.Count.Should().Be(LogicApp.hashCodeLabels.Count, "Because for each proposition a hash code should be generated"); }