public void Sort_PatternVars_CorrectOrder() { var unsorted = new PatternOr ( new PatternStringLiteral("42"), new PatternIntLiteral(100), new PatternIntLiteral(42), new PatternIntLiteral(0), new PatternStringLiteral("42"), new PatternNot(new PatternStringLiteral("42")), new PatternStringLiteral("Hello World!"), new PatternIdToken("testId"), new PatternIdToken("42"), new PatternNot(new PatternStringLiteral("42")) ); var expectedSorted = new PatternOr ( new PatternIdToken("42"), new PatternIdToken("testId"), new PatternIntLiteral(0), new PatternIntLiteral(42), new PatternIntLiteral(100), new PatternNot(new PatternStringLiteral("42")), new PatternNot(new PatternStringLiteral("42")), new PatternStringLiteral("42"), new PatternStringLiteral("42"), new PatternStringLiteral("Hello World!") ); var logger = new TestLogger(); var processor = new DslProcessor(); var normalizer = new PatternNormalizer() { Logger = logger }; var actualPattern = (PatternOr)normalizer.Visit(unsorted); List <PatternUst> actualAlternatives = actualPattern.Patterns; List <PatternUst> expectedAlternatives = expectedSorted.Patterns; Assert.AreEqual(expectedAlternatives.Count, actualAlternatives.Count); for (int i = 0; i < expectedAlternatives.Count; i++) { Assert.IsTrue(expectedAlternatives[i].Equals(actualAlternatives[i]), $"Not equal at {i} index: expected {expectedAlternatives[i]} not equals to {actualAlternatives[i]}"); } }
public void Simplify_MultiMultiPattern_RemovedDuplicates() { var input = new PatternStatements { Statements = new List <PatternUst>() { new PatternInvocationExpression { Target = new PatternIdToken("test_call"), Arguments = new PatternArgs ( new PatternIdToken("a"), new PatternIdToken("b"), new PatternMultipleExpressions(), new PatternMultipleExpressions(), new PatternIdToken("z") ) }, new PatternVarOrFieldDeclaration { Type = new PatternIdToken("int"), Assignment = new PatternAssignmentExpression { Left = new PatternIdToken("a"), Right = new PatternIntLiteral(42) } } } }; var logger = new LoggerMessageCounter(); var processor = new DslProcessor(); var normalizer = new PatternNormalizer() { Logger = logger }; PatternUst result = normalizer.Visit(input); var statements = ((PatternStatements)result).Statements; var invocation = (PatternInvocationExpression)statements.ElementAt(0); Assert.AreEqual(1, ((PatternArgs)invocation.Arguments).Args.Count(child => child is PatternMultipleExpressions)); }