private void ShouldBeEquivalent(AnyOfExpression actual, AnyOfExpression expected) { actual.AnyOf.Length.Should().Be(expected.AnyOf.Length); for (var i = 0; i < actual.AnyOf.Length; i++) { var actualChild = actual.AnyOf[i]; var expectedChild = expected.AnyOf[i]; ShouldBeEquivalent(actualChild, expectedChild); } }
public void Accept_mixed_logical_operators() { var json = $@" {{ ""anyOf"": [ {{ ""allOf"": [ {{ ""left"": ""DeviceType"", ""operator"": ""Equals"", ""right"": ""Breaker"" }}, {{ ""left"": ""Hierarchy"", ""operator"": ""In"", ""right"": ""ATS"" }} ], }}, {{ ""left"": ""DeviceState"", ""operator"": ""NotIn"", ""right"": ""NormallyOpen,NormallyClosed"" }} ] }}"; var expected = new AnyOfExpression() { AnyOf = new IConditionExpression[] { new AllOfExpression() { AllOf = new IConditionExpression[] { new LeafExpression() { Left = "DeviceType", Operator = Operator.Equals, Right = "Breaker", RightSideIsExpression = false }, new LeafExpression() { Left = "Hierarchy", Operator = Operator.In, Right = "ATS", RightSideIsExpression = false } } }, new LeafExpression() { Left = "DeviceState", Operator = Operator.NotIn, Right = "NormallyOpen,NormallyClosed" } } }; Runner.RunScenario( given => A_leaf_expression(json), when => I_parse_json_expression(), then => Parsed_expression_should_be(expected)); }