Beispiel #1
0
        /// <summary>
        /// Builds a mapping of constraints.
        /// </summary>
        /// <returns>An <see cref="IDictionary{String, IDispatcherValueConstraint}"/> of the constraints.</returns>
        public IDictionary <string, IDispatcherValueConstraint> Build()
        {
            var constraints = new Dictionary <string, IDispatcherValueConstraint>(StringComparer.OrdinalIgnoreCase);

            foreach (var kvp in _constraints)
            {
                IDispatcherValueConstraint constraint;
                if (kvp.Value.Count == 1)
                {
                    constraint = kvp.Value[0];
                }
                else
                {
                    constraint = new CompositeDispatcherValueConstraint(kvp.Value.ToArray());
                }

                if (_optionalParameters.Contains(kvp.Key))
                {
                    var optionalConstraint = new OptionalDispatcherValueConstraint(constraint);
                    constraints.Add(kvp.Key, optionalConstraint);
                }
                else
                {
                    constraints.Add(kvp.Key, constraint);
                }
            }

            return(constraints);
        }
        public void CompositeRouteConstraint_Match_CallsMatchOnInnerConstraints(
            bool inner1Result,
            bool inner2Result,
            bool expected)
        {
            // Arrange
            var inner1 = MockConstraintWithResult(inner1Result);
            var inner2 = MockConstraintWithResult(inner2Result);

            // Act
            var constraint = new CompositeDispatcherValueConstraint(new[] { inner1.Object, inner2.Object });
            var actual     = TestConstraint(constraint, null);

            // Assert
            Assert.Equal(expected, actual);
        }