public void EdmValueTermReferenceExpression()
        {
            var e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal));

            Assert.AreEqual(EdmExpressionKind.ValueTermReference, e.ExpressionKind, "e.ExpressionKind");
            Assert.AreEqual("base", ((IEdmStringValue)e.Base).Value, "e.Base");
            Assert.AreEqual("t1", e.Term.Name, "e.Term.Name");
            Assert.IsNull(e.Qualifier, "e.Qualifier");
            Assert.IsFalse(e.IsBad(), "e good");

            e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal), "qq");
            Assert.AreEqual("qq", e.Qualifier, "e.Qualifier");

            try
            {
                new EdmValueTermReferenceExpression(null, new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal));
                Assert.Fail("exception expected");
            }
            catch (ArgumentNullException)
            {
            }

            try
            {
                new EdmValueTermReferenceExpression(new EdmStringConstant("base"), null);
                Assert.Fail("exception expected");
            }
            catch (ArgumentNullException)
            {
            }

            e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal), null);
            Assert.IsNull(e.Qualifier, "e.Qualifier");
            Assert.IsFalse(e.IsBad(), "e good");

            var ee = new MutableValueTermReferenceExpression();

            Assert.IsNull(ee.Base, "ee.Base");
            Assert.IsNull(ee.Term, "ee.Term");
            Assert.IsNull(ee.Qualifier, "ee.Qualifier");
            Assert.IsTrue(ee.IsBad(), "Expression is bad.");
            Assert.AreEqual(2, ee.Errors().Count(), "Expression has errors");
        }
        public void EdmValueTermReferenceExpression()
        {
            var e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal));
            Assert.AreEqual(EdmExpressionKind.ValueTermReference, e.ExpressionKind, "e.ExpressionKind");
            Assert.AreEqual("base", ((IEdmStringValue)e.Base).Value, "e.Base");
            Assert.AreEqual("t1", e.Term.Name, "e.Term.Name");
            Assert.IsNull(e.Qualifier, "e.Qualifier");
            Assert.IsFalse(e.IsBad(), "e good");

            e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal), "qq");
            Assert.AreEqual("qq", e.Qualifier, "e.Qualifier");

            try
            {
                new EdmValueTermReferenceExpression(null, new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal));
                Assert.Fail("exception expected");
            }
            catch (ArgumentNullException)
            {
            }

            try
            {
                new EdmValueTermReferenceExpression(new EdmStringConstant("base"), null);
                Assert.Fail("exception expected");
            }
            catch (ArgumentNullException)
            {
            }

            e = new EdmValueTermReferenceExpression(new EdmStringConstant("base"), new EdmTerm("ns1", "t1", EdmPrimitiveTypeKind.Decimal), null);
            Assert.IsNull(e.Qualifier, "e.Qualifier");
            Assert.IsFalse(e.IsBad(), "e good");

            var ee = new MutableValueTermReferenceExpression();
            Assert.IsNull(ee.Base, "ee.Base");
            Assert.IsNull(ee.Term, "ee.Term");
            Assert.IsNull(ee.Qualifier, "ee.Qualifier");
            Assert.IsTrue(ee.IsBad(), "Expression is bad.");
            Assert.AreEqual(2, ee.Errors().Count(), "Expression has errors");
        }