public void ResolveValueRefsThrowError() { 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", TimeSpan.FromDays(1) } }; var exc = Assert.Throws <InvalidOperationException>( () => and.ResolveValueRefs(values)); Assert.Contains("Unable to resolve value reference for qwe le ref(qwe). Value of type System.TimeSpan not supported", exc.Message); }
public void ResolveValueRefs() { 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", 1 } }; AndSpecification resolved = and.ResolveValueRefs(values); var kv = Assert.IsType <LessOrEqualSpecification>(resolved.Specifications.Last()); Assert.False(kv.Value.IsReference); Assert.Equal(SpecificationValue.DataType.Int, kv.Value.ValueType); Assert.Equal(1, kv.Value.Values.Single()); }
public void ResolveValueRefsError() { SpecificationValue refValue = SpecificationValue.Ref("qwe"); AndSpecification and = new AndSpecification( new EqualSpecification("qwe", SpecificationValue.Single(1)), new LessOrEqualSpecification("qwe", refValue)); Dictionary <string, object> values = new Dictionary <string, object> { { "qwe", TimeSpan.FromDays(1) } }; AndSpecification resolved = and.ResolveValueRefs( values, new ReferenceResolutionSettings { ThrowValueErrors = false }); var kv = Assert.IsType <LessOrEqualSpecification>(resolved.Specifications.Last()); Assert.True(kv.Value.IsReference); Assert.Same(refValue, kv.Value); }
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()); }