public void Shallow_Copy() { var vg = new VariablesGroup(); var kvp1 = new KeyValuePair <string, IVariable>("theKey1", new ObjectVariable("123")); var kvp2 = new KeyValuePair <string, IVariable>("theKey2", new FloatVariable(987.654f)); vg.Add(kvp1); vg.Add(kvp2); var vgCopy = vg.Clone(); Assert.That(vgCopy.Count, Is.EqualTo(vg.Count)); Assert.That(vgCopy.Values, Is.EquivalentTo(vg.Values)); Assert.That(vgCopy.Keys, Is.EquivalentTo(vg.Keys)); }
public void Add_Item_With_Illegal_Name_Should_Throw() { var vg = new VariablesGroup(); // Name must not be empty Assert.That(code: () => vg.Add(string.Empty, new IntVariable(1)), Throws.ArgumentException); }
public void Add_Key_Value_Pair() { var vg = new VariablesGroup(); var kvp = new KeyValuePair <string, IVariable>("theKey", new IntVariable(9876)); vg.Add(kvp); Assert.That(vg.Contains(new KeyValuePair <string, IVariable>(kvp.Key, kvp.Value))); }
public void Use_Globals_Without_Args_To_Formatter() { // The top container // It gets its name later, when being added to the PersistentVariablesSource var varGroup = new VariablesGroup(); // Add a (nested) VariablesGroup named 'group' to the top container varGroup.Add("group", new VariablesGroup { // Add variables to the nested group { "groupString", new StringVariable("groupStringValue") }, { "groupDateTime", new Variable <DateTime>(new DateTime(2024, 12, 31)) } }); // Add more variables to the top group container varGroup.Add(new KeyValuePair <string, IVariable>("topInteger", new IntVariable(12345))); var stringVar = new StringVariable("topStringValue"); varGroup.Add("topString", stringVar); // The formatter for persistent variables requires only 2 extensions var smart = new SmartFormatter(); smart.FormatterExtensions.Add(new DefaultFormatter()); // Add as the first in the source extensions list var pvs = new PersistentVariablesSource { // Here, the top container gets its name { "global", varGroup } }; smart.InsertExtension(0, pvs); // Act // Note: We don't need args to the formatter for globals var globalGroup = smart.Format(CultureInfo.InvariantCulture, "{global.group.groupString} {global.group.groupDateTime:'groupDateTime='yyyy-MM-dd}"); var topInteger = smart.Format("{global.topInteger}"); var topString = smart.Format("{global.topString}"); // Assert Assert.That(globalGroup, Is.EqualTo("groupStringValue groupDateTime=2024-12-31")); Assert.That(topString, Is.EqualTo(stringVar.ToString())); Assert.That(topInteger, Is.EqualTo("12345")); }
public void Copy_To_Array() { var vg = new VariablesGroup(); var kvp1 = new KeyValuePair <string, IVariable>("theKey1", new IntVariable(135)); var kvp2 = new KeyValuePair <string, IVariable>("theKey2", new IntVariable(987)); vg.Add(kvp1); vg.Add(kvp2); var array = new KeyValuePair <string, IVariable> [vg.Count]; vg.CopyTo(array, 0); Assert.That(vg.Count, Is.EqualTo(array.Length)); for (var i = 0; i < array.Length; i++) { Assert.That(vg.ContainsKey(array[i].Key)); } }
public void Clear_All_Items() { var vg = new VariablesGroup(); var kvp = new KeyValuePair <string, IVariable>("theKey", new IntVariable(135)); vg.Add(kvp); vg.Clear(); Assert.That(vg.Count, Is.EqualTo(0)); }
public void Remove_Item() { var vg = new VariablesGroup(); var kvp = new KeyValuePair <string, IVariable>("theKey", new IntVariable(12)); vg.Add(kvp); vg.Remove(kvp); Assert.That(vg.Count, Is.EqualTo(0)); Assert.That(vg.Remove("non-existent"), Is.EqualTo(false)); }
public void KeyValuePairs_By_Enumerators() { var vg = new VariablesGroup(); var kvp = new KeyValuePair <string, IVariable>("theKey", new IntVariable(9876)); vg.Add(kvp); var kvpFromEnumerator = vg.FirstOrDefault(keyValuePair => keyValuePair.Key.Equals("theKey")); // Test GetEnumerator() foreach (var keyValuePair in vg) { Assert.That(keyValuePair, Is.EqualTo(kvp)); } // Test IEnumerator<KeyValuePair<string, VariablesGroup>> Assert.That(kvpFromEnumerator, Is.EqualTo(kvp)); }