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)); }
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()); }
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()); }
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)); }
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)); }
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() ); }
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)); }
public void ObjectBuilderAddDoesNotAllowDuplicates() { var builder = LdValue.BuildObject().Add("a", 1).Add("b", 2); Assert.ThrowsAny <Exception>(() => builder.Add("a", 3)); }