public void TestDict() { Parser p = new Parser(); Ast.DictNode dict1 = new Ast.DictNode(); Ast.DictNode dict2 = new Ast.DictNode(); Assert.AreEqual(dict1, dict2); Ast.KeyValueNode kv1 = new Ast.KeyValueNode { Key = new Ast.StringNode("key"), Value = new Ast.IntegerNode(42) }; Ast.KeyValueNode kv2 = new Ast.KeyValueNode { Key = new Ast.StringNode("key"), Value = new Ast.IntegerNode(99) }; Assert.AreNotEqual(kv1, kv2); kv2.Value = new Ast.IntegerNode(42); Assert.AreEqual(kv1, kv2); dict1.Elements.Add(new Ast.KeyValueNode { Key = new Ast.StringNode("key1"), Value = new Ast.IntegerNode(42) }); dict2.Elements.Add(new Ast.KeyValueNode { Key = new Ast.StringNode("key1"), Value = new Ast.IntegerNode(99) }); Assert.AreNotEqual(dict1, dict2); dict2.Elements.Clear(); dict2.Elements.Add(new Ast.KeyValueNode { Key = new Ast.StringNode("key1"), Value = new Ast.IntegerNode(42) }); Assert.AreEqual(dict1, dict2); dict2.Elements.Add(new Ast.KeyValueNode { Key = new Ast.StringNode("key2"), Value = new Ast.IntegerNode(43) }); dict2.Elements.Add(new Ast.KeyValueNode { Key = new Ast.StringNode("key3"), Value = new Ast.IntegerNode(44) }); Assert.AreNotEqual(dict1, dict2); Assert.AreEqual(new Ast.DictNode(), p.Parse("{}").Root); Assert.AreEqual(dict1, p.Parse("{'key1': 42}").Root); Assert.Throws <ParseException>(() => p.Parse("{'key1': 42,}")); Assert.AreEqual(dict2, p.Parse("{'key1': 42, 'key2': 43, 'key3':44}").Root); Assert.Throws <ParseException>(() => p.Parse("{'key': 42]")); Assert.Throws <ParseException>(() => p.Parse("{}@")); Assert.Throws <ParseException>(() => p.Parse("{'key': 42}@")); dict1 = p.Parse("{'a': 1, 'b': 2, 'c': 3, 'c': 4, 'c': 5, 'c': 6}").Root as Ast.DictNode; Assert.AreEqual("'a':1", dict1.Elements[0].ToString()); Assert.AreEqual("'b':2", dict1.Elements[1].ToString()); Assert.AreEqual("'c':6", dict1.Elements[2].ToString()); Assert.AreEqual(3, dict1.Elements.Count); }
public void TestDictEquality() { Ast.DictNode dict1 = new Ast.DictNode(); Ast.KeyValueNode kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key1"), Value = new Ast.IntegerNode(42) }; dict1.Elements.Add(kv); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key2"), Value = new Ast.IntegerNode(43) }; dict1.Elements.Add(kv); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key3"), Value = new Ast.IntegerNode(44) }; dict1.Elements.Add(kv); Ast.DictNode dict2 = new Ast.DictNode(); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key2"), Value = new Ast.IntegerNode(43) }; dict2.Elements.Add(kv); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key3"), Value = new Ast.IntegerNode(44) }; dict2.Elements.Add(kv); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key1"), Value = new Ast.IntegerNode(42) }; dict2.Elements.Add(kv); Assert.AreEqual(dict1, dict2); kv = new Ast.KeyValueNode() { Key = new Ast.StringNode("key4"), Value = new Ast.IntegerNode(45) }; dict2.Elements.Add(kv); Assert.AreNotEqual(dict1, dict2); }
public void TestEquality() { Ast.INode n1, n2; n1 = new Ast.IntegerNode(42); n2 = new Ast.IntegerNode(42); Assert.AreEqual(n1, n2); n2 = new Ast.IntegerNode(43); Assert.AreNotEqual(n1, n2); n1 = new Ast.StringNode("foo"); n2 = new Ast.StringNode("foo"); Assert.AreEqual(n1, n2); n2 = new Ast.StringNode("bar"); Assert.AreNotEqual(n1, n2); n1 = new Ast.ComplexNumberNode() { Real = 1.1, Imaginary = 2.2 }; n2 = new Ast.ComplexNumberNode() { Real = 1.1, Imaginary = 2.2 }; Assert.AreEqual(n1, n2); n2 = new Ast.ComplexNumberNode() { Real = 1.1, Imaginary = 3.3 }; Assert.AreNotEqual(n1, n2); n1 = new Ast.KeyValueNode() { Key = new Ast.IntegerNode(42), Value = new Ast.IntegerNode(42) }; n2 = new Ast.KeyValueNode() { Key = new Ast.IntegerNode(42), Value = new Ast.IntegerNode(42) }; Assert.AreEqual(n1, n2); n1 = new Ast.KeyValueNode() { Key = new Ast.IntegerNode(43), Value = new Ast.IntegerNode(43) }; Assert.AreNotEqual(n1, n2); n1 = Ast.NoneNode.Instance; n2 = Ast.NoneNode.Instance; Assert.AreEqual(n1, n2); n2 = new Ast.IntegerNode(42); Assert.AreNotEqual(n1, n2); n1 = new Ast.DictNode() { Elements = new List <Ast.INode>() { new Ast.KeyValueNode() { Key = new Ast.IntegerNode(42), Value = new Ast.IntegerNode(42) } } }; n2 = new Ast.DictNode() { Elements = new List <Ast.INode>() { new Ast.KeyValueNode() { Key = new Ast.IntegerNode(42), Value = new Ast.IntegerNode(42) } } }; Assert.AreEqual(n1, n2); n2 = new Ast.DictNode() { Elements = new List <Ast.INode>() { new Ast.KeyValueNode() { Key = new Ast.IntegerNode(42), Value = new Ast.IntegerNode(43) } } }; Assert.AreNotEqual(n1, n2); n1 = new Ast.ListNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; n2 = new Ast.ListNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1, n2); n2 = new Ast.ListNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1, n2); n1 = new Ast.SetNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; n2 = new Ast.SetNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1, n2); n2 = new Ast.SetNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1, n2); n1 = new Ast.TupleNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; n2 = new Ast.TupleNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1, n2); n2 = new Ast.TupleNode() { Elements = new List <Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1, n2); }
public void TestEquality() { Ast.INode n1, n2; n1 = new Ast.IntegerNode(42); n2 = new Ast.IntegerNode(42); Assert.AreEqual(n1, n2); n2 = new Ast.IntegerNode(43); Assert.AreNotEqual(n1, n2); n1 = new Ast.StringNode("foo"); n2 = new Ast.StringNode("foo"); Assert.AreEqual(n1, n2); n2 = new Ast.StringNode("bar"); Assert.AreNotEqual(n1, n2); n1 = new Ast.ComplexNumberNode() { Real=1.1, Imaginary=2.2 }; n2 = new Ast.ComplexNumberNode() { Real=1.1, Imaginary=2.2 }; Assert.AreEqual(n1, n2); n2 = new Ast.ComplexNumberNode() { Real=1.1, Imaginary=3.3 }; Assert.AreNotEqual(n1, n2); n1=new Ast.KeyValueNode() { Key=new Ast.IntegerNode(42), Value=new Ast.IntegerNode(42) }; n2=new Ast.KeyValueNode() { Key=new Ast.IntegerNode(42), Value=new Ast.IntegerNode(42) }; Assert.AreEqual(n1, n2); n1=new Ast.KeyValueNode() { Key=new Ast.IntegerNode(43), Value=new Ast.IntegerNode(43) }; Assert.AreNotEqual(n1,n2); n1=Ast.NoneNode.Instance; n2=Ast.NoneNode.Instance; Assert.AreEqual(n1, n2); n2=new Ast.IntegerNode(42); Assert.AreNotEqual(n1, n2); n1=new Ast.DictNode() { Elements=new List<Ast.INode>() { new Ast.KeyValueNode() { Key=new Ast.IntegerNode(42), Value=new Ast.IntegerNode(42) } } }; n2=new Ast.DictNode() { Elements=new List<Ast.INode>() { new Ast.KeyValueNode() { Key=new Ast.IntegerNode(42), Value=new Ast.IntegerNode(42) } } }; Assert.AreEqual(n1, n2); n2=new Ast.DictNode() { Elements=new List<Ast.INode>() { new Ast.KeyValueNode() { Key=new Ast.IntegerNode(42), Value=new Ast.IntegerNode(43) } } }; Assert.AreNotEqual(n1, n2); n1=new Ast.ListNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; n2=new Ast.ListNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1,n2); n2=new Ast.ListNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1,n2); n1=new Ast.SetNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; n2=new Ast.SetNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1,n2); n2=new Ast.SetNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1,n2); n1=new Ast.TupleNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; n2=new Ast.TupleNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(42) } }; Assert.AreEqual(n1,n2); n2=new Ast.TupleNode() { Elements=new List<Ast.INode>() { new Ast.IntegerNode(43) } }; Assert.AreNotEqual(n1,n2); }
public void TestDictEquality() { Ast.DictNode dict1 = new Ast.DictNode(); Ast.KeyValueNode kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key1"), Value=new Ast.IntegerNode(42) }; dict1.Elements.Add(kv); kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key2"), Value=new Ast.IntegerNode(43) }; dict1.Elements.Add(kv); kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key3"), Value=new Ast.IntegerNode(44) }; dict1.Elements.Add(kv); Ast.DictNode dict2 = new Ast.DictNode(); kv=new Ast.KeyValueNode(){ Key=new Ast.StringNode("key2"), Value=new Ast.IntegerNode(43) }; dict2.Elements.Add(kv); kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key3"), Value=new Ast.IntegerNode(44) }; dict2.Elements.Add(kv); kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key1"), Value=new Ast.IntegerNode(42) }; dict2.Elements.Add(kv); Assert.AreEqual(dict1, dict2); kv=new Ast.KeyValueNode() { Key=new Ast.StringNode("key4"), Value=new Ast.IntegerNode(45) }; dict2.Elements.Add(kv); Assert.AreNotEqual(dict1, dict2); }
public void TestDict() { Parser p = new Parser(); Ast.DictNode dict1 = new Ast.DictNode(); Ast.DictNode dict2 = new Ast.DictNode(); Assert.AreEqual(dict1, dict2); Ast.KeyValueNode kv1 = new Ast.KeyValueNode { Key=new Ast.StringNode("key"), Value=new Ast.IntegerNode(42) }; Ast.KeyValueNode kv2 = new Ast.KeyValueNode { Key=new Ast.StringNode("key"), Value=new Ast.IntegerNode(99) }; Assert.AreNotEqual(kv1, kv2); kv2.Value = new Ast.IntegerNode(42); Assert.AreEqual(kv1, kv2); dict1.Elements.Add(new Ast.KeyValueNode { Key=new Ast.StringNode("key1"), Value=new Ast.IntegerNode(42) }); dict2.Elements.Add(new Ast.KeyValueNode { Key=new Ast.StringNode("key1"), Value=new Ast.IntegerNode(99) }); Assert.AreNotEqual(dict1, dict2); dict2.Elements.Clear(); dict2.Elements.Add(new Ast.KeyValueNode { Key=new Ast.StringNode("key1"), Value=new Ast.IntegerNode(42) }); Assert.AreEqual(dict1, dict2); dict2.Elements.Add(new Ast.KeyValueNode { Key=new Ast.StringNode("key2"), Value=new Ast.IntegerNode(43) }); dict2.Elements.Add(new Ast.KeyValueNode { Key=new Ast.StringNode("key3"), Value=new Ast.IntegerNode(44) }); Assert.AreNotEqual(dict1, dict2); Assert.AreEqual(new Ast.DictNode(), p.Parse("{}").Root); Assert.AreEqual(dict1, p.Parse("{'key1': 42}").Root); Assert.AreEqual(dict2, p.Parse("{'key1': 42, 'key2': 43, 'key3':44}").Root); Assert.Throws<ParseException>(()=>p.Parse("{'key': 42]")); Assert.Throws<ParseException>(()=>p.Parse("{}@")); Assert.Throws<ParseException>(()=>p.Parse("{'key': 42}@")); dict1 = p.Parse("{'a': 1, 'b': 2, 'c': 3, 'c': 4, 'c': 5, 'c': 6}").Root as Ast.DictNode; Assert.AreEqual("'a':1", dict1.Elements[0].ToString()); Assert.AreEqual("'b':2", dict1.Elements[1].ToString()); Assert.AreEqual("'c':6", dict1.Elements[2].ToString()); Assert.AreEqual(3, dict1.Elements.Count); }