public void Merge_WithComplexPriority_ShouldWork() { var opt1 = new FlexibleOptions(); opt1.Set("k1", "v1"); opt1.Set("k2", "v2"); opt1.Set("k3", "v3"); opt1.SetAlias("k3", "3", "key3"); var opt2 = new FlexibleOptions(); opt2.Set("k2", "v2.2"); var opt3 = new FlexibleOptions(); opt3.Set("k3", "v3.3"); // opt1 has lower priority var merge = FlexibleOptions.Merge(opt1, opt2, opt3); Assert.NotNull(merge); Assert.Equal(opt1.Get("k1"), merge.Get("k1")); Assert.Equal(opt2.Get("k2"), merge.Get("k2")); Assert.Equal(opt3.Get("k3"), merge.Get("k3")); // alias Assert.Equal(opt3.Get("k3"), merge.Get("key3")); Assert.Equal(opt3.Get("k3"), merge.Get("3")); // opt1 has higher priority merge = FlexibleOptions.Merge(opt2, opt3, opt1); Assert.NotNull(merge); Assert.Equal(opt1.Get("k1"), merge.Get("k1")); Assert.NotEqual(opt2.Get("k2"), merge.Get("k2")); Assert.NotEqual(opt3.Get("k3"), merge.Get("k3")); Assert.Equal(opt1.Get("k2"), merge.Get("k2")); Assert.Equal(opt1.Get("k3"), merge.Get("k3")); // alias Assert.Equal(opt1.Get("k3"), merge.Get("key3")); Assert.Equal(opt1.Get("k3"), merge.Get("3")); // opt1 has higher priority but with null options merge = FlexibleOptions.Merge(null, opt2, null, opt3, opt1, null); Assert.NotNull(merge); Assert.Equal(opt1.Get("k1"), merge.Get("k1")); Assert.NotEqual(opt2.Get("k2"), merge.Get("k2")); Assert.NotEqual(opt3.Get("k3"), merge.Get("k3")); Assert.Equal(opt1.Get("k2"), merge.Get("k2")); Assert.Equal(opt1.Get("k3"), merge.Get("k3")); // alias Assert.Equal(opt1.Get("k3"), merge.Get("key3")); Assert.Equal(opt1.Get("k3"), merge.Get("3")); }
public void SetAlias_AllowCaseInsensitiveGet_ShouldWork() { var expected = "v3"; var opt1 = new FlexibleOptions(); opt1.Set("k3", expected); opt1.SetAlias("k3", "3", "key3"); Assert.Equal(expected, opt1.Get("K3")); Assert.Equal(expected, opt1.Get("KEY3")); }
public void SetAlias_AllowGet_ShouldWork() { var expected = "v3"; var opt1 = new FlexibleOptions (); opt1.Set ("k3", expected); opt1.SetAlias ("k3", "3", "key3"); Assert.Equal (expected, opt1.Get ("k3")); Assert.Equal (expected, opt1.Get ("key3")); Assert.Equal (expected, opt1.Get ("3")); Assert.True (String.IsNullOrEmpty (opt1.Get ("KEY"))); }
public void SetAlias_AllowGet_ShouldWork() { var expected = "v3"; var opt1 = new FlexibleOptions(); opt1.Set("k3", expected); opt1.SetAlias("k3", "3", "key3"); Assert.Equal(expected, opt1.Get("k3")); Assert.Equal(expected, opt1.Get("key3")); Assert.Equal(expected, opt1.Get("3")); Assert.True(String.IsNullOrEmpty(opt1.Get("KEY"))); }
public void Merge_WithComplexPriority_ShouldWork () { var opt1 = new FlexibleOptions (); opt1.Set ("k1", "v1"); opt1.Set ("k2", "v2"); opt1.Set ("k3", "v3"); opt1.SetAlias ("k3", "3", "key3"); var opt2 = new FlexibleOptions (); opt2.Set ("k2", "v2.2"); var opt3 = new FlexibleOptions (); opt3.Set ("k3", "v3.3"); // opt1 has lower priority var merge = FlexibleOptions.Merge (opt1, opt2, opt3); Assert.NotNull (merge); Assert.Equal (opt1.Get ("k1"), merge.Get ("k1")); Assert.Equal (opt2.Get ("k2"), merge.Get ("k2")); Assert.Equal (opt3.Get ("k3"), merge.Get ("k3")); // alias Assert.Equal (opt3.Get ("k3"), merge.Get ("key3")); Assert.Equal (opt3.Get ("k3"), merge.Get ("3")); // opt1 has higher priority merge = FlexibleOptions.Merge (opt2, opt3, opt1); Assert.NotNull (merge); Assert.Equal (opt1.Get ("k1"), merge.Get ("k1")); Assert.NotEqual (opt2.Get ("k2"), merge.Get ("k2")); Assert.NotEqual (opt3.Get ("k3"), merge.Get ("k3")); Assert.Equal (opt1.Get ("k2"), merge.Get ("k2")); Assert.Equal (opt1.Get ("k3"), merge.Get ("k3")); // alias Assert.Equal (opt1.Get ("k3"), merge.Get ("key3")); Assert.Equal (opt1.Get ("k3"), merge.Get ("3")); // opt1 has higher priority but with null options merge = FlexibleOptions.Merge (null, opt2, null, opt3, opt1, null); Assert.NotNull (merge); Assert.Equal (opt1.Get ("k1"), merge.Get ("k1")); Assert.NotEqual (opt2.Get ("k2"), merge.Get ("k2")); Assert.NotEqual (opt3.Get ("k3"), merge.Get ("k3")); Assert.Equal (opt1.Get ("k2"), merge.Get ("k2")); Assert.Equal (opt1.Get ("k3"), merge.Get ("k3")); // alias Assert.Equal (opt1.Get ("k3"), merge.Get ("key3")); Assert.Equal (opt1.Get ("k3"), merge.Get ("3")); }
public void SetAlias_AllowCaseInsensitiveGet_ShouldWork () { var expected = "v3"; var opt1 = new FlexibleOptions (); opt1.Set ("k3", expected); opt1.SetAlias ("k3", "3", "key3"); Assert.Equal (expected, opt1.Get ("K3")); Assert.Equal (expected, opt1.Get ("KEY3")); }