public Specification ResolveSpecificationRefs(
            IReadOnlyDictionary <string, object> values,
            ReferenceResolutionSettings settings = null)
        {
            SpecificationReferenceVisitor visitor = new SpecificationReferenceVisitor(values, settings);

            return(visitor.Visit(this));
        }
Exemplo n.º 2
0
        public void ResolveSpecPartial()
        {
            ReferenceSpecification referenceSpecification = new ReferenceSpecification("qwe");

            ReferenceSpecification      refSpec = new ReferenceSpecification("qwe2");
            Dictionary <string, object> values  =
                new Dictionary <string, object>
            {
                {
                    "qwe",
                    refSpec
                }
            };

            ReferenceResolutionSettings settings = new ReferenceResolutionSettings();

            settings.AllowedUnresolvedSpecificationReferenceKeys.Add("qwe2");
            Specification resolved = referenceSpecification.ResolveSpecificationRefs(values, settings);

            Assert.Same(refSpec, resolved);
        }
Exemplo n.º 3
0
        public void ResolveValueRefPartial()
        {
            AndSpecification and = new AndSpecification(
                new EqualSpecification("qwe", SpecificationValue.Single(1)),
                new LessOrEqualSpecification("qwe", SpecificationValue.Ref("qwe")));

            Dictionary <string, object> values = new Dictionary <string, object>
            {
                { "qwe", SpecificationValue.Ref("qwe2") },
            };
            ReferenceResolutionSettings settings = new ReferenceResolutionSettings();

            settings.AllowedUnresolvedValueReferenceKeys.Add("qwe2");

            AndSpecification resolved = and.ResolveValueRefs(
                values,
                settings);
            var kv = Assert.IsType <LessOrEqualSpecification>(resolved.Specifications.Last());

            Assert.True(kv.Value.IsReference);
            Assert.Equal("qwe2", kv.Value.Values.Single());
        }
 public ValueReferenceVisitor(IReadOnlyDictionary <string, object> values, ReferenceResolutionSettings settings = null)
 {
     this.Values   = values ?? throw new ArgumentNullException(nameof(values));
     this.Settings = settings ?? ReferenceResolutionSettings.Default;
 }