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); } }
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)); }
/// <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); }
/// <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));
/// <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));
/// <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); }
/// <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); }
public void TestNullStringConstructorIsEquivalentToNullInstance() { Assert.Equal(LdValue.Null, LdValue.Of(null)); }
public IUserBuilderCanMakeAttributePrivate Custom(string name, double value) { return(Custom(name, LdValue.Of(value))); }