public void TestTuple() { Parser p = new Parser(); Ast.TupleNode tuple = new Ast.TupleNode(); Ast.TupleNode tuple2 = new Ast.TupleNode(); Assert.AreEqual(tuple, tuple2); tuple.Elements.Add(new Ast.IntegerNode(42)); tuple2.Elements.Add(new Ast.IntegerNode(99)); Assert.AreNotEqual(tuple, tuple2); tuple2.Elements.Clear(); tuple2.Elements.Add(new Ast.IntegerNode(42)); Assert.AreEqual(tuple, tuple2); tuple2.Elements.Add(new Ast.IntegerNode(43)); tuple2.Elements.Add(new Ast.IntegerNode(44)); Assert.AreNotEqual(tuple, tuple2); Assert.AreEqual(new Ast.TupleNode(), p.Parse("()").Root); Assert.AreEqual(tuple, p.Parse("(42,)").Root); Assert.AreEqual(tuple2, p.Parse("( 42,43, 44 )").Root); Assert.Throws <ParseException>(() => p.Parse("(42,43]")); Assert.Throws <ParseException>(() => p.Parse("()@")); Assert.Throws <ParseException>(() => p.Parse("(42,43)@")); }
public void TestWhitespace() { Parser p = new Parser(); Assert.AreEqual(new Ast.IntegerNode(42), p.Parse(" 42 ").Root); Assert.AreEqual(new Ast.IntegerNode(42), p.Parse(" 42 ").Root); Assert.AreEqual(new Ast.IntegerNode(42), p.Parse("\t42\r\n").Root); Assert.AreEqual(new Ast.IntegerNode(42), p.Parse(" \t 42 \r \n ").Root); Assert.AreEqual(new Ast.StringNode(" string value "), p.Parse(" ' string value ' ").Root); Assert.Throws <ParseException>(() => p.Parse(" ( 42 , ( 'x', 'y' ) ")); // missing tuple close ) Ast ast = p.Parse(" ( 42 , ( 'x', 'y' ) ) "); Ast.TupleNode tuple = (Ast.TupleNode)ast.Root; Assert.AreEqual(new Ast.IntegerNode(42), tuple.Elements[0]); tuple = (Ast.TupleNode)tuple.Elements[1]; Assert.AreEqual(new Ast.StringNode("x"), tuple.Elements[0]); Assert.AreEqual(new Ast.StringNode("y"), tuple.Elements[1]); p.Parse(" ( 52 , ) "); p.Parse(" [ 52 ] "); p.Parse(" { 'a' : 42 } "); p.Parse(" { 52 } "); }
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 TestTuple() { Parser p = new Parser(); Ast.TupleNode tuple = new Ast.TupleNode(); Ast.TupleNode tuple2 = new Ast.TupleNode(); Assert.AreEqual(tuple, tuple2); tuple.Elements.Add(new Ast.IntegerNode(42)); tuple2.Elements.Add(new Ast.IntegerNode(99)); Assert.AreNotEqual(tuple, tuple2); tuple2.Elements.Clear(); tuple2.Elements.Add(new Ast.IntegerNode(42)); Assert.AreEqual(tuple, tuple2); tuple2.Elements.Add(new Ast.IntegerNode(43)); tuple2.Elements.Add(new Ast.IntegerNode(44)); Assert.AreNotEqual(tuple, tuple2); Assert.AreEqual(new Ast.TupleNode(), p.Parse("()").Root); Assert.AreEqual(tuple, p.Parse("(42,)").Root); Assert.AreEqual(tuple2, p.Parse("( 42,43, 44 )").Root); Assert.Throws<ParseException>(()=>p.Parse("(42,43]")); Assert.Throws<ParseException>(()=>p.Parse("()@")); Assert.Throws<ParseException>(()=>p.Parse("(42,43)@")); }
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); }