public void CanGetValuesAsList() { Assert.Equal(new bool[] { true, false }, LdValue.Convert.Bool.ArrayFrom(new bool[] { true, false }).AsList(LdValue.Convert.Bool)); Assert.Equal(new bool[] { true, false }, LdValue.Convert.Bool.ArrayOf(true, false).AsList(LdValue.Convert.Bool)); Assert.Equal(new bool[] { true, false }, LdValue.BuildArray().Add(true).Add(false).Build().AsList(LdValue.Convert.Bool)); Assert.Equal(new int[] { 1, 2 }, LdValue.Convert.Int.ArrayFrom(new int[] { 1, 2 }).AsList(LdValue.Convert.Int)); Assert.Equal(new int[] { 1, 2 }, LdValue.Convert.Int.ArrayOf(1, 2).AsList(LdValue.Convert.Int)); Assert.Equal(new int[] { 1, 2 }, LdValue.BuildArray().Add(1).Add(2).Build().AsList(LdValue.Convert.Int)); Assert.Equal(new long[] { 1, 2 }, LdValue.Convert.Long.ArrayFrom(new long[] { 1, 2 }).AsList(LdValue.Convert.Long)); Assert.Equal(new long[] { 1, 2 }, LdValue.Convert.Long.ArrayOf(1, 2).AsList(LdValue.Convert.Long)); Assert.Equal(new long[] { 1, 2 }, LdValue.BuildArray().Add(1).Add(2).Build().AsList(LdValue.Convert.Long)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.Convert.Float.ArrayFrom(new float[] { 1.0f, 2.0f }).AsList(LdValue.Convert.Float)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.Convert.Float.ArrayOf(1.0f, 2.0f).AsList(LdValue.Convert.Float)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.BuildArray().Add(1.0f).Add(2.0f).Build().AsList(LdValue.Convert.Float)); Assert.Equal(new double[] { 1.0d, 2.0d }, LdValue.Convert.Double.ArrayFrom(new double[] { 1.0d, 2.0d }).AsList(LdValue.Convert.Double)); Assert.Equal(new double[] { 1.0d, 2.0d }, LdValue.Convert.Double.ArrayOf(1.0d, 2.0d).AsList(LdValue.Convert.Double)); Assert.Equal(new double[] { 1.0f, 2.0f }, LdValue.BuildArray().Add(1.0d).Add(2.0d).Build().AsList(LdValue.Convert.Double)); Assert.Equal(new string[] { "a", "b" }, LdValue.Convert.String.ArrayFrom(new string[] { "a", "b" }).AsList(LdValue.Convert.String)); Assert.Equal(new string[] { "a", "b" }, LdValue.Convert.String.ArrayOf("a", "b").AsList(LdValue.Convert.String)); Assert.Equal(new string[] { "a", "b" }, LdValue.BuildArray().Add("a").Add("b").Build().AsList(LdValue.Convert.String)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.ArrayFrom(new LdValue[] { anIntValue, aStringValue }).AsList(LdValue.Convert.Json)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.ArrayOf(anIntValue, aStringValue).AsList(LdValue.Convert.Json)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.BuildArray().Add(anIntValue).Add(aStringValue).Build().AsList(LdValue.Convert.Json)); Assert.Equal(LdValue.Null, LdValue.Convert.Int.ArrayFrom((IEnumerable <int>)null)); }
private void TestPrivateAttribute(string privateAttrName, bool globallyPrivate) { var builder = User.Builder("userkey") .Anonymous(true) .SecondaryKey("s"); var topJsonBuilder = LdValue.BuildObject() .Add("key", "userkey") .Add("anonymous", true) .Add("secondary", "s"); var customJsonBuilder = LdValue.BuildObject(); Action <string, Func <string, IUserBuilderCanMakeAttributePrivate>, string, LdValue.ObjectBuilder> setAttr = (attrName, setter, value, jsonBuilder) => { if (attrName == privateAttrName) { if (globallyPrivate) { setter(value); } else { setter(value).AsPrivateAttribute(); } } else { setter(value); jsonBuilder.Add(attrName, value); } }; setAttr("avatar", builder.Avatar, "http://avatar", topJsonBuilder); setAttr("country", builder.Country, "US", topJsonBuilder); setAttr("custom1", v => builder.Custom("custom1", v), "value1", customJsonBuilder); setAttr("custom2", v => builder.Custom("custom2", v), "value2", customJsonBuilder); setAttr("email", builder.Email, "*****@*****.**", topJsonBuilder); setAttr("firstName", builder.FirstName, "first", topJsonBuilder); setAttr("ip", builder.IPAddress, "1.2.3.4", topJsonBuilder); setAttr("lastName", builder.LastName, "last", topJsonBuilder); setAttr("name", builder.Name, "me", topJsonBuilder); topJsonBuilder.Add("custom", customJsonBuilder.Build()); topJsonBuilder.Add("privateAttrs", LdValue.ArrayOf(LdValue.Of(privateAttrName))); var userJson = topJsonBuilder.Build(); var config = new SimpleConfiguration(); if (globallyPrivate) { config.PrivateAttributeNames = new HashSet <string> { privateAttrName }; } ; TestInlineUserSerialization(builder.Build(), userJson, config); }
public void CanGetValuesAsList() { Assert.Equal(new bool[] { true, false }, LdValue.Convert.Bool.ArrayFrom(new bool[] { true, false }).AsList(LdValue.Convert.Bool)); Assert.Equal(new bool[] { true, false }, LdValue.Convert.Bool.ArrayOf(true, false).AsList(LdValue.Convert.Bool)); Assert.Equal(new bool[] { true, false }, LdValue.BuildArray().Add(true).Add(false).Build().AsList(LdValue.Convert.Bool)); Assert.Equal(new int[] { 1, 2 }, LdValue.Convert.Int.ArrayFrom(new int[] { 1, 2 }).AsList(LdValue.Convert.Int)); Assert.Equal(new int[] { 1, 2 }, LdValue.Convert.Int.ArrayOf(1, 2).AsList(LdValue.Convert.Int)); Assert.Equal(new int[] { 1, 2 }, LdValue.BuildArray().Add(1).Add(2).Build().AsList(LdValue.Convert.Int)); Assert.Equal(new long[] { 1, 2 }, LdValue.Convert.Long.ArrayFrom(new long[] { 1, 2 }).AsList(LdValue.Convert.Long)); Assert.Equal(new long[] { 1, 2 }, LdValue.Convert.Long.ArrayOf(1, 2).AsList(LdValue.Convert.Long)); Assert.Equal(new long[] { 1, 2 }, LdValue.BuildArray().Add(1).Add(2).Build().AsList(LdValue.Convert.Long)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.Convert.Float.ArrayFrom(new float[] { 1.0f, 2.0f }).AsList(LdValue.Convert.Float)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.Convert.Float.ArrayOf(1.0f, 2.0f).AsList(LdValue.Convert.Float)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.BuildArray().Add(1.0f).Add(2.0f).Build().AsList(LdValue.Convert.Float)); Assert.Equal(new double[] { 1.0d, 2.0d }, LdValue.Convert.Double.ArrayFrom(new double[] { 1.0d, 2.0d }).AsList(LdValue.Convert.Double)); Assert.Equal(new double[] { 1.0d, 2.0d }, LdValue.Convert.Double.ArrayOf(1.0d, 2.0d).AsList(LdValue.Convert.Double)); Assert.Equal(new double[] { 1.0f, 2.0f }, LdValue.BuildArray().Add(1.0d).Add(2.0d).Build().AsList(LdValue.Convert.Double)); Assert.Equal(new string[] { "a", "b" }, LdValue.Convert.String.ArrayFrom(new string[] { "a", "b" }).AsList(LdValue.Convert.String)); Assert.Equal(new string[] { "a", "b" }, LdValue.Convert.String.ArrayOf("a", "b").AsList(LdValue.Convert.String)); Assert.Equal(new string[] { "a", "b" }, LdValue.BuildArray().Add("a").Add("b").Build().AsList(LdValue.Convert.String)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.ArrayFrom(new LdValue[] { anIntValue, aStringValue }).AsList(LdValue.Convert.Json)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.ArrayOf(anIntValue, aStringValue).AsList(LdValue.Convert.Json)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.BuildArray().Add(anIntValue).Add(aStringValue).Build().AsList(LdValue.Convert.Json)); #pragma warning disable 0618 Assert.Equal(new bool[] { true, false }, LdValue.FromJToken(new JArray { new JValue(true), new JValue(false) }).AsList(LdValue.Convert.Bool)); Assert.Equal(new int[] { 1, 2 }, LdValue.FromJToken(new JArray { new JValue(1), new JValue(2) }).AsList(LdValue.Convert.Int)); Assert.Equal(new long[] { 1, 2 }, LdValue.FromJToken(new JArray { new JValue(1L), new JValue(2L) }).AsList(LdValue.Convert.Long)); Assert.Equal(new float[] { 1.0f, 2.0f }, LdValue.FromJToken(new JArray { new JValue(1.0f), new JValue(2.0f) }).AsList(LdValue.Convert.Float)); Assert.Equal(new double[] { 1.0d, 2.0d }, LdValue.FromJToken(new JArray { new JValue(1.0d), new JValue(2.0d) }).AsList(LdValue.Convert.Double)); Assert.Equal(new string[] { "a", "b" }, LdValue.FromJToken(new JArray { new JValue("a"), new JValue("b") }).AsList(LdValue.Convert.String)); Assert.Equal(new LdValue[] { anIntValue, aStringValue }, LdValue.FromJToken(new JArray { new JValue(someInt), new JValue(someString) }).AsList(LdValue.Convert.Json)); #pragma warning restore 0618 Assert.Equal(LdValue.Null, LdValue.Convert.Int.ArrayFrom((IEnumerable <int>)null)); }
// Constructs a flag that always returns the same value. This is done by giving it a // single variation and setting the fallthrough variation to that. internal static object FlagWithValue(string key, LdValue value, int version) { var json = LdValue.BuildObject() .Add("key", key) .Add("version", version) .Add("on", true) .Add("variations", LdValue.ArrayOf(value)) .Add("fallthrough", LdValue.BuildObject().Add("variation", 0).Build()) .Build() .ToJsonString(); return(DataModel.Features.Deserialize(json).Item); }
public static ItemDescriptor MakeFlagThatReturnsVariationForSegmentMatch(int version, int variation) { var flagJson = LdValue.BuildObject() .Add("key", FlagKey) .Add("version", version) .Add("on", true) .Add("variations", LdValue.ArrayOf(GoodValue1, GoodValue2, BadValue)) .Add("fallthrough", LdValue.BuildObject().Add("variation", BadVariation).Build()) .Add("rules", LdValue.BuildArray() .Add(LdValue.BuildObject() .Add("variation", variation) .Add("clauses", LdValue.BuildArray() .Add(LdValue.BuildObject() .Add("attribute", "") .Add("op", "segmentMatch") .Add("values", LdValue.ArrayOf(LdValue.Of(SegmentKey))) .Build()) .Build()) .Build()) .Build()) .Build().ToJsonString(); return(DataModel.Features.Deserialize(flagJson)); }