public void TestBigSegmentsStatusSerializationDeserialization()
 {
     foreach (var test in new KeyValuePair <BigSegmentsStatus, string>[]
     {
         new KeyValuePair <BigSegmentsStatus, string>(BigSegmentsStatus.Healthy, "HEALTHY"),
         new KeyValuePair <BigSegmentsStatus, string>(BigSegmentsStatus.Stale, "STALE"),
         new KeyValuePair <BigSegmentsStatus, string>(BigSegmentsStatus.NotConfigured, "NOT_CONFIGURED"),
         new KeyValuePair <BigSegmentsStatus, string>(BigSegmentsStatus.StoreError, "STORE_ERROR"),
     })
     {
         var reason     = EvaluationReason.FallthroughReason.WithBigSegmentsStatus(test.Key);
         var reasonJson = LdJsonSerialization.SerializeObject(reason);
         Assert.Equal(LdValue.Parse(reasonJson).Get("bigSegmentsStatus"), LdValue.Of(test.Value));
         var reason1 = LdJsonSerialization.DeserializeObject <EvaluationReason>(reasonJson);
         Assert.Equal(test.Key, reason1.BigSegmentsStatus);
     }
 }
        public void TestBuiltIns()
        {
            TestBuiltInString(UserAttribute.Key, "key", (b, v) => b.Key(v));
            TestBuiltInString(UserAttribute.Secondary, "secondary", (b, v) => b.Secondary(v));
            TestBuiltInString(UserAttribute.IPAddress, "ip", (b, v) => b.IPAddress(v));
            TestBuiltInString(UserAttribute.Email, "email", (b, v) => b.Email(v));
            TestBuiltInString(UserAttribute.Name, "name", (b, v) => b.Name(v));
            TestBuiltInString(UserAttribute.Avatar, "avatar", (b, v) => b.Avatar(v));
            TestBuiltInString(UserAttribute.FirstName, "firstName", (b, v) => b.FirstName(v));
            TestBuiltInString(UserAttribute.LastName, "lastName", (b, v) => b.LastName(v));
            TestBuiltInString(UserAttribute.Country, "country", (b, v) => b.Country(v));

            Assert.Equal("anonymous", UserAttribute.Anonymous.AttributeName);
            Assert.True(UserAttribute.Anonymous.BuiltIn);
            Assert.Equal(LdValue.Null, User.WithKey(".").GetAttribute(UserAttribute.Anonymous));
            Assert.Equal(LdValue.Of(true), User.Builder(".").Anonymous(true).Build()
                         .GetAttribute(UserAttribute.Anonymous));
        }
 public void TestErrorKindSerializationDeserialization()
 {
     foreach (var test in new KeyValuePair <EvaluationErrorKind, string>[]
     {
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.ClientNotReady, "CLIENT_NOT_READY"),
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.Exception, "EXCEPTION"),
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.FlagNotFound, "FLAG_NOT_FOUND"),
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.MalformedFlag, "MALFORMED_FLAG"),
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.UserNotSpecified, "USER_NOT_SPECIFIED"),
         new KeyValuePair <EvaluationErrorKind, string>(EvaluationErrorKind.WrongType, "WRONG_TYPE"),
     })
     {
         var reason     = EvaluationReason.ErrorReason(test.Key);
         var reasonJson = LdJsonSerialization.SerializeObject(reason);
         Assert.Equal(LdValue.Parse(reasonJson).Get("errorKind"), LdValue.Of(test.Value));
         var reason1 = LdJsonSerialization.DeserializeObject <EvaluationReason>(reasonJson);
         Assert.Equal(test.Key, reason1.ErrorKind);
     }
 }
示例#4
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));
        }
示例#5
0
 /// <summary>
 /// Adds a key-value pair to the object being built.
 /// </summary>
 /// <param name="key">the key to add</param>
 /// <param name="value">the value to add</param>
 /// <returns>the same builder</returns>
 public ObjectBuilder Add(string key, string value)
 {
     _builder.Add(key, LdValue.Of(value));
     return(this);
 }
示例#6
0
 /// <summary>
 /// Adds a key-value pair to the object being built or replaces an existing key.
 /// </summary>
 /// <param name="key">the key</param>
 /// <param name="value">the value to add or replace</param>
 /// <returns>the same builder</returns>
 public ObjectBuilder Set(string key, string value) =>
 Set(key, LdValue.Of(value));
示例#7
0
 /// <summary>
 /// Adds a key-value pair to the object being built.
 /// </summary>
 /// <remarks>
 /// Numeric values in LaunchDarkly have some precision limitations. For more details, see our
 /// documentation on <see href="https://docs.launchdarkly.com/sdk/concepts/flag-types">flag
 /// value types</see>.
 /// </remarks>
 /// <param name="key">the key to add</param>
 /// <param name="value">the value to add</param>
 /// <returns>the same builder</returns>
 public ObjectBuilder Add(string key, double value) =>
 Add(key, LdValue.Of(value));
示例#8
0
 /// <summary>
 /// Adds a value to the array being built.
 /// </summary>
 /// <param name="value">the value to add</param>
 /// <returns>the same builder</returns>
 public ArrayBuilder Add(string value)
 {
     _builder.Add(LdValue.Of(value));
     return(this);
 }
示例#9
0
 /// <summary>
 /// Adds a value to the array being built.
 /// </summary>
 /// <remarks>
 /// Numeric values in LaunchDarkly have some precision limitations. For more details, see our
 /// documentation on <see href="https://docs.launchdarkly.com/sdk/concepts/flag-types">flag
 /// value types</see>.
 /// </remarks>
 /// <param name="value">the value to add</param>
 /// <returns>the same builder</returns>
 public ArrayBuilder Add(double value)
 {
     _builder.Add(LdValue.Of(value));
     return(this);
 }
示例#10
0
 public void TestNullStringConstructorIsEquivalentToNullInstance()
 {
     Assert.Equal(LdValue.Null, LdValue.Of(null));
 }
示例#11
0
 public IUserBuilderCanMakeAttributePrivate Custom(string name, double value)
 {
     return(Custom(name, LdValue.Of(value)));
 }