Exemple #1
0
        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));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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)));
        }
Exemple #4
0
        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"));
        }
Exemple #5
0
        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));
            }
        }
Exemple #6
0
        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));
        }
Exemple #7
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));
        }
Exemple #8
0
        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));
        }