public void ClrTypeMappingVocabularyAnnotationConvertBetweenCollectionValueToCollectionType()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            this.VerifyThrowsException
            (
                typeof(InvalidCastException),
                () =>
                this.ValidateClrObjectConverter
                (
                    this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "MultiMonitors").Single(),
                    new List <Coordination>()
            {
                new Coordination()
                {
                    X = 10, Y = 20
                },
                new Coordination()
                {
                    X = 30, Y = 40
                }
            }
                ),
                "EdmToClr_CannotConvertEdmCollectionValueToClrType"
            );
        }
        public void ClrTypeMappingVocabularyAnnotationInterfacePropertyTest()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single();

            this.VerifyThrowsException(typeof(InvalidCastException), () => this.ConvertToClrObject <ClassWithInterfaceProperty>(valueAnnotation));
        }
        public void ClrTypeMappingVocabularyAnnotationConversionToAbstractType()
        {
            this.InitializeOperationDefinitions();

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            this.VerifyThrowsException(typeof(MissingMethodException), () => this.ConvertToClrObject <AbstractClass>(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "Coordination").Single()));
        }
        public void ClrTypeMappingValueStructTypePropertyTest()
        {
            this.InitializeOperationDefinitions();

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single();

            this.VerifyThrowsException(typeof(InvalidCastException), () => this.ConvertToClrObject <ClassWithStructProperty>(valueAnnotation));
        }
        public void ClrTypeMappingGenerics()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single();

            this.ValidateClrObjectConverter(valueAnnotation, new Person9 <string>()
            {
                Id = 10, FirstName = "Young", LastName = "Hong"
            });
        }
        public void ClrTypeMappingPrivateConstructor()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single();

            this.VerifyThrowsException(typeof(MissingMethodException), () => ConvertToClrObject <Person3>(valueAnnotation));

            this.VerifyThrowsException(typeof(MissingMethodException), () => ConvertToClrObject <Person4>(valueAnnotation));

            this.VerifyThrowsException(typeof(MissingMethodException), () => ConvertToClrObject <Person5>(valueAnnotation));
        }
        public void ClrTypeMappingVocabularyAnnotationConvertBetweenCollectionValueAndSingularObject()
        {
            var    edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());
            Action action   = null;

            action = () =>
                     this.ValidateClrObjectConverter <IEnumerable <Coordination> >(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single(), null);
            this.VerifyThrowsException(typeof(InvalidCastException), action);

            action = () =>
                     this.ValidateClrObjectConverter <Coordination>(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "MultiMonitors").Single(), null);
            this.VerifyThrowsException(typeof(InvalidCastException), action);
        }
        public void ClrTypeMappingVocabularyAnnotationClassTypeBasicTest()
        {
            this.InitializeOperationDefinitions();

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);

            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "Coordination").Single(),
                                            new Coordination()
            {
                X = 10, Y = 20
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single(),
                                            new Person()
            {
                Id = 10, FirstName = "Young", LastName = "Hong"
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single(),
                                            new DisplayCoordination()
            {
                X = 10, Y = 20, Origin = new Coordination()
                {
                    X = 10, Y = 20
                }
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single(),
                                            new Coordination()
            {
                X = 10, Y = 20
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "MultiMonitors").Single(),
                                            (IEnumerable <Coordination>) new List <Coordination>()
            {
                new Coordination()
                {
                    X = 10, Y = 20
                }, new Coordination()
                {
                    X = 30, Y = 40
                }
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "LabledMultiMonitors").Single(),
                                            (IEnumerable <Coordination>) new List <Coordination>()
            {
                new Coordination()
                {
                    X = 10, Y = 20
                }
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "EmptyCollection").Single(),
                                            (IEnumerable <Coordination>) new List <Coordination>());
        }
        public void ClrTypeMappingVocabularyAnnotationTryPopulateObjectInstance()
        {
            this.InitializeOperationDefinitions();

            EdmToClrEvaluator ev = new EdmToClrEvaluator(this.operationDefinitions);

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);
            var value    = ev.Evaluate(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single().Value);

            var    isObjectPopulated     = false;
            var    isObjectInitialized   = true;
            object createdObjectInstance = new Display1()
            {
                X = 0, Y = 1
            };
            TryCreateObjectInstance tryCreateObjectInstance = (IEdmStructuredValue edmValue, Type clrType, EdmToClrConverter converter, out object objectInstance, out bool objectInstanceInitialized) =>
            {
                objectInstance            = createdObjectInstance;
                objectInstanceInitialized = isObjectPopulated;
                return(isObjectInitialized);
            };

            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);

            this.VerifyThrowsException(typeof(InvalidCastException), () => ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)));

            isObjectPopulated     = false;
            isObjectInitialized   = false;
            createdObjectInstance = new Display1()
            {
                X = 0, Y = 1
            };
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsTrue(CompareObjects((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), new Display2()
            {
                X = 10, Y = 20, Origin = new Display1()
                {
                    X = 10, Y = 20
                }
            }), "The returned object has incorrect values.");

            isObjectPopulated     = true;
            isObjectInitialized   = true;
            createdObjectInstance = new Display1()
            {
                X = 0, Y = 1
            };
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            this.VerifyThrowsException(typeof(InvalidCastException), () => ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)));
        }
Exemple #10
0
        public void ClrTypeMappingVocabularyAnnotationConversionToStructType()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            this.VerifyThrowsException(typeof(InvalidCastException), () => this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "Coordination").Single(), new Display1StructType()));
            this.VerifyThrowsException(typeof(InvalidCastException), () => this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single(), new Display2StructTypeWithObjectProperty()
            {
                X = 10, Y = 20, Origin = new Display1()
            }));
            this.VerifyThrowsException(typeof(InvalidCastException), () => this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single(), new Display2StructTypeWithStructProperty()
            {
                X = 10, Y = 20, Origin = new Display1StructType()
            }));
        }
Exemple #11
0
        public void ClrTypeMappingVocabularyAnnotationVirtualMemberTest()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single();

            this.ValidateClrObjectConverter(valueAnnotation, new ClassWithVirtualMember()
            {
                X = 10
            });
            this.ValidateClrObjectConverter(valueAnnotation, new DerivedClassWithVirtualMember()
            {
                X = 10
            });
        }
Exemple #12
0
        public void ClrTypeMappingPrivateProperties()
        {
            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest());

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single();

            this.ValidateClrObjectConverter(valueAnnotation, new Person6());

            this.ValidateClrObjectConverter(valueAnnotation, new Person7()
            {
                Id = 10
            });

            Person8 actual = ConvertToClrObject <Person8>(valueAnnotation);

            Assert.AreEqual(10, actual.Id, "Failed");
            Assert.AreEqual("Young", actual.FirstName, "Failed");
        }
Exemple #13
0
        public void ClrTypeMappingDifferentPropertyTypes()
        {
            this.InitializeOperationDefinitions();

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);

            var valueAnnotation = this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single();

            this.ValidateClrObjectConverter(valueAnnotation, new Display2()
            {
                X = 10, Y = 20, Origin = new Display1()
                {
                    X = 10, Y = 20
                }
            });
            this.ValidateClrObjectConverter(valueAnnotation, new Display1()
            {
                X = 10, Y = 20
            });
        }
Exemple #14
0
        public void ClrTypeMappingInterface()
        {
            this.InitializeOperationDefinitions();

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);

            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "Coordination").Single(),
                                            new Coordination2()
            {
                X = 10, Y = 20
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "InspectedBy").Single(),
                                            new Person2()
            {
                Id = 10, FirstName = "Young", LastName = "Hong"
            });
            this.ValidateClrObjectConverter(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "AdoptPet").Single(),
                                            new Pet()
            {
                Name = "Jacquine", Breed = "Bull Dog", Age = 3
            });
        }
Exemple #15
0
        public void ClrTypeMappingVocabularyAnnotationTryCreateObjectInstance()
        {
            this.InitializeOperationDefinitions();

            EdmToClrEvaluator ev = new EdmToClrEvaluator(this.operationDefinitions);

            var edmModel = this.GetParserResult(ClrTypeMappingTestModelBuilder.VocabularyAnnotationClassTypeBasicTest(), this.operationDeclarationModel);
            var value    = ev.Evaluate(this.GetVocabularyAnnotations(edmModel, edmModel.FindType("NS1.Person"), "TVDisplay").Single().Value);

            var    isObjectPopulated     = true;
            var    isObjectInitialized   = true;
            object createdObjectInstance = null;
            TryCreateObjectInstance tryCreateObjectInstance = (IEdmStructuredValue edmValue, Type clrType, EdmToClrConverter converter, out object objectInstance, out bool objectInstanceInitialized) =>
            {
                objectInstance            = createdObjectInstance;
                objectInstanceInitialized = isObjectPopulated;
                return(isObjectInitialized);
            };

            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsNull((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), "The returned object should be null.");

            isObjectPopulated    = false;
            isObjectInitialized  = true;
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsNull((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), "The returned object should be null.");

            isObjectPopulated    = true;
            isObjectInitialized  = false;
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsTrue(CompareObjects((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), new Display2()
            {
                X = 10, Y = 20, Origin = new Display1()
                {
                    X = 10, Y = 20
                }
            }), "The returned object has incorrect values.");

            isObjectPopulated    = false;
            isObjectInitialized  = false;
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsTrue(CompareObjects((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), new Display2()
            {
                X = 10, Y = 20, Origin = new Display1()
                {
                    X = 10, Y = 20
                }
            }), "The returned object has incorrect values.");

            createdObjectInstance = new Display2()
            {
                X = 0, Y = 1, Origin = new Display1 {
                    X = 3, Y = 4
                }
            };
            isObjectPopulated    = true;
            isObjectInitialized  = true;
            ev.EdmToClrConverter = new EdmToClrConverter(tryCreateObjectInstance);
            Assert.IsTrue(CompareObjects((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), createdObjectInstance), "The returned object has incorrect values.");

            ev.EdmToClrConverter = new EdmToClrConverter((IEdmStructuredValue edmValue, Type clrType, EdmToClrConverter converter, out object objectInstance, out bool objectInstanceInitialized) =>
            {
                if (clrType == typeof(Display2))
                {
                    objectInstance = new Display2()
                    {
                        X = 0, Y = 1, Origin = new Display1 {
                            X = 3, Y = 4
                        }
                    };
                    objectInstanceInitialized = false;
                    return(true);
                }
                else if (clrType == typeof(Display1))
                {
                    objectInstance = new Display1 {
                        X = 3, Y = 4
                    };
                    objectInstanceInitialized = false;
                    return(true);
                }
                else
                {
                    objectInstance            = null;
                    objectInstanceInitialized = false;
                    return(false);
                }
            });
            Assert.IsTrue(CompareObjects((Display2)ev.EdmToClrConverter.AsClrValue(value, typeof(Display2)), new Display2()
            {
                X = 10, Y = 20, Origin = new Display1()
                {
                    X = 10, Y = 20
                }
            }), "The returned object has incorrect values.");

            isObjectPopulated     = false;
            isObjectInitialized   = true;
            createdObjectInstance = new DisplayCoordination();
            ev.EdmToClrConverter  = new EdmToClrConverter(tryCreateObjectInstance);
            Coordination actual   = (Coordination)ev.EdmToClrConverter.AsClrValue(value, typeof(Coordination));
            Coordination expected = new Coordination()
            {
                X = 10, Y = 20
            };

            Assert.AreEqual(expected.X, actual.X, "The returned object has incorrect values. X");
            Assert.AreEqual(expected.Y, actual.Y, "The returned object has incorrect values. X");
        }