示例#1
0
 public void CanGetValueAsDictionary()
 {
     AssertDictsEqual(MakeDictionary(LdValue.Of("x"), LdValue.Of(true)),
                      LdValue.BuildObject().Add("1", "x").Add("2", true).Build().Dictionary);
     AssertDictsEqual(MakeDictionary(true, false),
                      LdValue.Convert.Bool.ObjectFrom(MakeDictionary(true, false)).AsDictionary(LdValue.Convert.Bool));
     AssertDictsEqual(MakeDictionary(true, false),
                      LdValue.BuildObject().Add("1", true).Add("2", false).Build().AsDictionary(LdValue.Convert.Bool));
     AssertDictsEqual(MakeDictionary(1, 2),
                      LdValue.Convert.Int.ObjectFrom(MakeDictionary(1, 2)).AsDictionary(LdValue.Convert.Int));
     AssertDictsEqual(MakeDictionary(1, 2),
                      LdValue.BuildObject().Add("1", 1).Add("2", 2).Build().AsDictionary(LdValue.Convert.Int));
     AssertDictsEqual(MakeDictionary(1L, 2L),
                      LdValue.Convert.Long.ObjectFrom(MakeDictionary(1L, 2L)).AsDictionary(LdValue.Convert.Long));
     AssertDictsEqual(MakeDictionary(1L, 2L),
                      LdValue.BuildObject().Add("1", 1L).Add("2", 2L).Build().AsDictionary(LdValue.Convert.Long));
     AssertDictsEqual(MakeDictionary(1.0f, 2.0f),
                      LdValue.Convert.Float.ObjectFrom(MakeDictionary(1.0f, 2.0f)).AsDictionary(LdValue.Convert.Float));
     AssertDictsEqual(MakeDictionary(1.0f, 2.0f),
                      LdValue.BuildObject().Add("1", 1.0f).Add("2", 2.0f).Build().AsDictionary(LdValue.Convert.Float));
     AssertDictsEqual(MakeDictionary(1.0d, 2.0d),
                      LdValue.Convert.Double.ObjectFrom(MakeDictionary(1.0d, 2.0d)).AsDictionary(LdValue.Convert.Double));
     AssertDictsEqual(MakeDictionary(1.0d, 2.0d),
                      LdValue.BuildObject().Add("1", 1.0d).Add("2", 2.0d).Build().AsDictionary(LdValue.Convert.Double));
     AssertDictsEqual(MakeDictionary("a", "b"),
                      LdValue.Convert.String.ObjectFrom(MakeDictionary("a", "b")).AsDictionary(LdValue.Convert.String));
     AssertDictsEqual(MakeDictionary("a", "b"),
                      LdValue.BuildObject().Add("1", "a").Add("2", "b").Build().AsDictionary(LdValue.Convert.String));
     AssertDictsEqual(MakeDictionary(anIntValue, aStringValue),
                      LdValue.Convert.Json.ObjectFrom(MakeDictionary(anIntValue, aStringValue)).AsDictionary(LdValue.Convert.Json));
     AssertDictsEqual(MakeDictionary(anIntValue, aStringValue),
                      LdValue.BuildObject().Add("1", anIntValue).Add("2", aStringValue).Build().AsDictionary(LdValue.Convert.Json));
     Assert.Equal(LdValue.Null, LdValue.Convert.String.ObjectFrom((IReadOnlyDictionary <string, string>)null));
 }
示例#2
0
        public void ObjectBuilderSetAllowsDuplicates()
        {
            var builder = LdValue.BuildObject().Add("a", 1).Add("b", 2);

            builder.Set("a", 3);
            Assert.Equal(LdValue.BuildObject().Add("a", 3).Add("b", 2).Build(), builder.Build());
        }
示例#3
0
        public void ObjectBuilderCanCopyProperties()
        {
            var builder = LdValue.BuildObject().Add("a", 0)
                          .Copy(LdValue.BuildObject().Add("a", 1).Add("b", 2).Build())
                          .Copy(LdValue.Of("ignore this"));

            Assert.Equal(LdValue.BuildObject().Add("a", 1).Add("b", 2).Build(), builder.Build());
        }
示例#4
0
        public void ObjectBuilderRemove()
        {
            var builder = LdValue.BuildObject().Add("a", 1).Add("b", 2);

            builder.Remove("a");
            builder.Remove("c"); // nonexistent key is no-op
            Assert.Equal(LdValue.BuildObject().Add("b", 2).Build(), builder.Build());
        }
        public void CanDeserializeStringProperty(StringPropertyDesc p)
        {
            var value      = "x";
            var jsonObject = LdValue.BuildObject().Add("key", "x").Add(p.Name, value).Build();
            var user       = LdJsonSerialization.DeserializeObject <User>(jsonObject.ToJsonString());

            Assert.Equal(value, p.Getter(user));
        }
示例#6
0
        public void DictionaryCanBeEnumerated()
        {
            var v = LdValue.BuildObject().Add("a", 100).Add("b", 200).Add("c", 300).Build();
            var d = v.AsDictionary(LdValue.Convert.Int);

            Assert.Equal(3, d.Count);
            Assert.Equal(new string[] { "a", "b", "c" }, new List <string>(d.Keys).OrderBy(s => s));
            Assert.Equal(new int[] { 100, 200, 300 }, new List <int>(d.Values).OrderBy(n => n));
            Assert.Equal(new KeyValuePair <string, int>[]
            {
                new KeyValuePair <string, int>("a", 100),
                new KeyValuePair <string, int>("b", 200),
                new KeyValuePair <string, int>("c", 300),
            }, d.OrderBy(e => e.Key));
        }
示例#7
0
 public void EqualsUsesDeepEqualityForObjects()
 {
     TypeBehavior.CheckEqualsAndHashCode(
         () => LdValue.BuildObject()
         .Add("a", "b")
         .Add("c", LdValue.BuildObject().Add("d", "e").Build())
         .Build(),
         () => LdValue.BuildObject()
         .Add("a", "b")
         .Build(),
         () => LdValue.BuildObject()
         .Add("a", "b")
         .Add("c", LdValue.BuildObject().Add("d", "e").Build())
         .Add("f", "g")
         .Build(),
         () => LdValue.BuildObject()
         .Add("a", "b")
         .Add("c", LdValue.BuildObject().Add("d", "f").Build())
         .Build()
         );
 }
示例#8
0
        public void DictionaryCanGetValueByKey()
        {
            var v = LdValue.BuildObject().Add("a", 100).Add("b", 200).Add("c", 300).Build();

            Assert.Equal(3, v.Count);
            Assert.Equal(LdValue.Of(200), v.Get("b"));
            Assert.NotEqual(LdValue.Null, v.Get(1));
            Assert.Equal(LdValue.Null, v.Get("x"));
            Assert.Equal(LdValue.Null, v.Get(-1));
            Assert.Equal(LdValue.Null, v.Get(3));

            var d = v.AsDictionary(LdValue.Convert.Int);

            Assert.True(d.ContainsKey("b"));
            Assert.Equal(200, d["b"]);
            Assert.True(d.TryGetValue("a", out var n));
            Assert.Equal(100, n);
            Assert.False(d.ContainsKey("x"));
            Assert.Throws <KeyNotFoundException>(() => d["x"]);
            Assert.False(d.TryGetValue("x", out n));
        }
示例#9
0
        public void ObjectBuilderAddDoesNotAllowDuplicates()
        {
            var builder = LdValue.BuildObject().Add("a", 1).Add("b", 2);

            Assert.ThrowsAny <Exception>(() => builder.Add("a", 3));
        }