コード例 #1
0
ファイル: ParserTest.cs プロジェクト: kranack/CAR
        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);
        }
コード例 #2
0
ファイル: ParserTest.cs プロジェクト: kranack/CAR
        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);
        }
コード例 #3
0
ファイル: ParserTest.cs プロジェクト: kranack/CAR
        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);
        }
コード例 #4
0
ファイル: ParserTest.cs プロジェクト: pombredanne/Serpent
        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);
        }
コード例 #5
0
ファイル: ParserTest.cs プロジェクト: pombredanne/Serpent
        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);
        }
コード例 #6
0
ファイル: ParserTest.cs プロジェクト: pombredanne/Serpent
        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);
        }