public void NullComparisonEquivalence()
        {
            EdmEntityType entity = new EdmEntityType("Foo", "Bar", null, false, false);

            Assert.IsFalse(entity.IsEquivalentTo(null), "Type RHS");
            Assert.IsFalse(((IEdmEntityType)null).IsEquivalentTo(entity), "Type LHS");
            Assert.IsTrue(((IEdmEntityType)null).IsEquivalentTo(null), "Type Both");

            Assert.IsFalse(new EdmEntityTypeReference(entity, false).IsEquivalentTo(null), "TypeReference RHS");
            Assert.IsFalse(((IEdmEntityTypeReference)null).IsEquivalentTo(new EdmEntityTypeReference(entity, false)), "TypeReference LHS");
            Assert.IsTrue(((IEdmEntityTypeReference)null).IsEquivalentTo(null), "TypeReference Both");
        }
        public void EqualityEntityTypeTest()
        {
            var baseEntityType = new EdmEntityType("NS", "Base", new EdmEntityType("NS", "BaseBase"), false, false);
            var differentBaseEntityType = new EdmEntityType("NS", "Base", new EdmEntityType("NS", "BaseBase"), true, false);

            var baseline = new EdmEntityType("NS", "Baseline", baseEntityType, false, false);
            baseline.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var match = new EdmEntityType("NS", "Baseline", baseEntityType, false, false);
            match.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentNamespace = new EdmEntityType("foo", "Baseline", baseEntityType, false, false);
            differentNamespace.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentName = new EdmEntityType("NS", "foo", baseEntityType, false, false);
            differentName.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentBaseType = new EdmEntityType("NS", "Baseline", differentBaseEntityType, false, false);
            differentBaseType.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var nullBaseType = new EdmEntityType("NS", "Baseline", null, false, false);
            nullBaseType.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentAbstract = new EdmEntityType("NS", "Baseline", baseEntityType, true, false);
            differentAbstract.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentIsOpen = new EdmEntityType("NS", "Baseline", baseEntityType, false, true);
            differentIsOpen.AddStructuralProperty("Id", EdmCoreModel.Instance.GetInt32(false));

            var differentProperties = new EdmEntityType("NS", "Baseline", baseEntityType, false, false);
            differentProperties.AddStructuralProperty("foo", EdmCoreModel.Instance.GetInt32(false));

            var differentKey = new EdmEntityType("NS", "Baseline", baseEntityType, false, false);
            var differentKeyId = differentProperties.AddStructuralProperty("id", EdmCoreModel.Instance.GetInt32(false));
            differentKey.AddKeys(differentKeyId);

            Assert.IsTrue(baseline.IsEquivalentTo(baseline), "Is the same.");
            Assert.IsFalse(baseline.IsEquivalentTo(match), "Is the same, different obj refs.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentNamespace), "Different namespace.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentName), "Different name.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentBaseType), "Different base type.");
            Assert.IsFalse(baseline.IsEquivalentTo(nullBaseType), "Null base type.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentAbstract), "Different abstract.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentIsOpen), "Different is open.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentProperties), "Different properties.");
            Assert.IsFalse(baseline.IsEquivalentTo(differentKey), "Different key.");
        }