Ejemplo n.º 1
0
        private static FilterSpecPlanPathForge FindPath(
            SupportFilterPlanPath pathExpected,
            IList<FilterSpecPlanPathForge> pathsReceived)
        {
            var tripletsExpected = SortTriplets(pathExpected.Triplets);
            FilterSpecPlanPathForge found = null;

            foreach (var pathReceived in pathsReceived) {
                if (pathExpected.Triplets.Length != pathReceived.Triplets.Length) {
                    continue;
                }

                var tripletsReceived = SortTriplets(pathReceived.Triplets);
                var matches = true;
                for (var i = 0; i < tripletsReceived.Length; i++) {
                    var expected = tripletsExpected[i];
                    var received = tripletsReceived[i];
                    if (!expected.Lookupable.Equals(received.Param.Lookupable.Expression) ||
                        !expected.Op.Equals(received.Param.FilterOperator)) {
                        matches = false;
                        break;
                    }

                    var builder = new StringBuilder();
                    received.Param.ValueExprToString(builder, 0);
                    var value = builder.ToString();
                    if (expected.Op == EQUAL) {
                        var textExpected = FilterSpecParamConstantForge.ValueExprToString(expected.Value);
                        if (!textExpected.Equals(value)) {
                            matches = false;
                            break;
                        }
                    }
                    else if (expected.Op == BOOLEAN_EXPRESSION || expected.Op == REBOOL) {
                        var textExpected = FilterSpecParamExprNodeForge.ValueExprToString(expected.Value);
                        if (!textExpected.Equals(value)) {
                            matches = false;
                            break;
                        }
                    }
                    else {
                        throw new IllegalStateException("Filter op " + expected.Op + " not handled");
                    }
                }

                if (matches) {
                    if (found != null) {
                        throw new IllegalStateException("Multiple matches");
                    }

                    found = pathReceived;
                }
            }

            return found;
        }
Ejemplo n.º 2
0
        private static void AssertPlanPath(
            SupportFilterPlanPath pathExpected,
            FilterSpecPlanPathForge pathReceived)
        {
            AssertExpressionOpt(pathExpected.ControlNegate, pathReceived.PathNegate);
            Assert.AreEqual(pathExpected.Triplets.Length, pathReceived.Triplets.Length);

            var tripletsReceived = SortTriplets(pathReceived.Triplets);
            var tripletsExpected = SortTriplets(pathExpected.Triplets);

            for (var i = 0; i < tripletsExpected.Length; i++) {
                AssertPlanPathTriplet(tripletsExpected[i], tripletsReceived[i]);
            }
        }
Ejemplo n.º 3
0
 public static SupportFilterPlanPath[] MakePathsFromEmpty()
 {
     var path = new SupportFilterPlanPath();
     return new[] {path};
 }