public void EdmCastExpression() { var e = new EdmCastExpression(new EdmStringConstant("qwerty"), EdmCoreModel.Instance.GetBoolean(false)); Assert.AreEqual(EdmExpressionKind.Cast, e.ExpressionKind, "e.ExpressionKind"); Assert.AreEqual("qwerty", ((IEdmStringValue)e.Operand).Value, "((IEdmStringValue)e.Operand).Value"); Assert.AreEqual("Edm.Boolean", e.Type.FullName(), "e.Type.FullName()"); Assert.IsFalse(e.IsBad(), "e good"); try { new EdmCastExpression(null, EdmCoreModel.Instance.GetBoolean(false)); Assert.Fail("exception expected."); } catch (ArgumentNullException) { } try { new EdmCastExpression(new EdmStringConstant("qwerty"), null); Assert.Fail("exception expected."); } catch (ArgumentNullException) { } var ee = new MutableCastExpression(); Assert.IsTrue(ee.IsBad(), "Expression is bad."); Assert.AreEqual(2, ee.Errors().Count(), "Expression has 2 errors"); }
public static IEdmModel CastNullableToNonNullableOnInlineAnnotationModel() { var model = new EdmModel(); var address = new EdmComplexType("NS", "Address"); address.AddStructuralProperty("StreetNumber", EdmCoreModel.Instance.GetInt32(true)); address.AddStructuralProperty("StreetName", EdmCoreModel.Instance.GetString(true)); model.AddElement(address); var friend = new EdmComplexType("NS", "Friend"); friend.AddStructuralProperty("Name", EdmCoreModel.Instance.GetString(true)); friend.AddStructuralProperty("NickNames", EdmCoreModel.GetCollection(EdmCoreModel.Instance.GetString(true))); friend.AddStructuralProperty("Address", new EdmComplexTypeReference(address, true)); model.AddElement(friend); var friendInfo = new EdmTerm("NS", "FriendInfo", EdmCoreModel.GetCollection(new EdmComplexTypeReference(friend, true))); model.AddElement(friendInfo); var valueAnnotationCast = new EdmCastExpression(new EdmCollectionExpression(new EdmStringConstant("foo"), new EdmStringConstant("bar")), new EdmComplexTypeReference(friend, true)); var valueAnnotation = new EdmVocabularyAnnotation( friendInfo, friendInfo, valueAnnotationCast); valueAnnotation.SetSerializationLocation(model, EdmVocabularyAnnotationSerializationLocation.Inline); model.AddVocabularyAnnotation(valueAnnotation); return(model); }
public static IEdmModel CastResultTrueEvaluationModel() { var model = new EdmModel(); var address = new EdmComplexType("NS", "Address"); address.AddStructuralProperty("StreetNumber", EdmCoreModel.Instance.GetInt32(true)); address.AddStructuralProperty("StreetName", EdmCoreModel.Instance.GetString(true)); model.AddElement(address); var friend = new EdmEntityType("NS", "Friend"); var friendName = friend.AddStructuralProperty("Name", EdmCoreModel.Instance.GetString(false)); friend.AddKeys(friendName); var friendAddress = friend.AddStructuralProperty("Address", new EdmComplexTypeReference(address, true)); model.AddElement(friend); var addressRecord = new EdmRecordExpression(new EdmPropertyConstructor[] { new EdmPropertyConstructor("StreetNumber", new EdmIntegerConstant(3)), new EdmPropertyConstructor("StreetName", new EdmStringConstant("에O詰 갂คำŚёæ")) }); var friendAddressCast = new EdmCastExpression(addressRecord, new EdmComplexTypeReference(address, true)); var friendTerm = new EdmTerm("NS", "FriendTerm", new EdmEntityTypeReference(friend, true)); model.AddElement(friendTerm); var valueAnnotation = new EdmVocabularyAnnotation( friend, friendTerm, new EdmRecordExpression( new EdmPropertyConstructor(friendName.Name, new EdmStringConstant("foo")), new EdmPropertyConstructor(friendAddress.Name, friendAddressCast))); valueAnnotation.SetSerializationLocation(model, EdmVocabularyAnnotationSerializationLocation.OutOfLine); model.AddVocabularyAnnotation(valueAnnotation); return(model); }