public void TypeNode_ArrayTypeNodeHash_Test()
        {
            var hashSet = new HashSet <TypeNode>();

            hashSet.Add(ArrayTypeNode.BoolType());
            Assert.AreEqual(1, hashSet.Count);
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.BoolType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.ByteType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.CharType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.IntType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.VoidType()));
            hashSet.Add(ArrayTypeNode.BoolType());
            Assert.AreEqual(1, hashSet.Count);

            hashSet.Add(ArrayTypeNode.ByteType());
            Assert.AreEqual(2, hashSet.Count);
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.BoolType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.ByteType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.CharType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.IntType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.VoidType()));
            hashSet.Add(ArrayTypeNode.ByteType());
            Assert.AreEqual(2, hashSet.Count);

            hashSet.Add(ArrayTypeNode.CharType());
            Assert.AreEqual(3, hashSet.Count);
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.BoolType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.ByteType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.CharType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.IntType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.VoidType()));
            hashSet.Add(ArrayTypeNode.CharType());
            Assert.AreEqual(3, hashSet.Count);

            hashSet.Add(ArrayTypeNode.IntType());
            Assert.AreEqual(4, hashSet.Count);
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.BoolType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.ByteType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.CharType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.IntType()));
            Assert.IsFalse(hashSet.Contains(ArrayTypeNode.VoidType()));
            hashSet.Add(ArrayTypeNode.IntType());
            Assert.AreEqual(4, hashSet.Count);


            hashSet.Add(ArrayTypeNode.VoidType());
            Assert.AreEqual(5, hashSet.Count);
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.BoolType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.ByteType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.CharType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.IntType()));
            Assert.IsTrue(hashSet.Contains(ArrayTypeNode.VoidType()));
            hashSet.Add(ArrayTypeNode.VoidType());
            Assert.AreEqual(5, hashSet.Count);
        }
 public void TypeNode_ArrayTypeNodeEquals_Test()
 {
     Assert.IsTrue(ArrayTypeNode.BoolType().Equals(ArrayTypeNode.BoolType()));
     Assert.IsTrue(ArrayTypeNode.ByteType().Equals(ArrayTypeNode.ByteType()));
     Assert.IsTrue(ArrayTypeNode.CharType().Equals(ArrayTypeNode.CharType()));
     Assert.IsTrue(ArrayTypeNode.IntType().Equals(ArrayTypeNode.IntType()));
     Assert.IsTrue(ArrayTypeNode.VoidType().Equals(ArrayTypeNode.VoidType()));
     Assert.IsFalse(ArrayTypeNode.ByteType().Equals(ArrayTypeNode.VoidType()));
     Assert.IsFalse(ArrayTypeNode.BoolType().Equals(ArrayTypeNode.VoidType()));
     Assert.IsFalse(ArrayTypeNode.IntType().Equals(ArrayTypeNode.VoidType()));
     Assert.IsFalse(ArrayTypeNode.CharType().Equals(ArrayTypeNode.VoidType()));
     Assert.IsFalse(ArrayTypeNode.BoolType().Equals(ArrayTypeNode.IntType()));
     Assert.IsFalse(ArrayTypeNode.ByteType().Equals(ArrayTypeNode.IntType()));
     Assert.IsFalse(ArrayTypeNode.CharType().Equals(ArrayTypeNode.IntType()));
     Assert.IsFalse(ArrayTypeNode.BoolType().Equals(ArrayTypeNode.CharType()));
     Assert.IsFalse(ArrayTypeNode.ByteType().Equals(ArrayTypeNode.CharType()));
     Assert.IsFalse(ArrayTypeNode.BoolType().Equals(ArrayTypeNode.ByteType()));
     Assert.IsFalse(ArrayTypeNode.ByteType().Equals(ArrayTypeNode.BoolType()));
 }