Exemplo n.º 1
0
        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)@"));
        }
Exemplo n.º 2
0
        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 } ");
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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)@"));
        }
Exemplo n.º 5
0
        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);
        }