Пример #1
0
        public void GenerateDynamicPropertyContainer()
        {
            var edmx = @"<?xml version=""1.0"" standalone=""yes"" ?>
<edmx:Edmx Version=""4.0"" xmlns:edmx=""http://docs.oasis-open.org/odata/ns/edmx"">
  <edmx:DataServices>
    <Schema Namespace=""NS"" xmlns=""http://docs.oasis-open.org/odata/ns/edm"">
      <ComplexType Name=""Address"" OpenType=""True"">
        <Property Name=""Street"" Type=""Edm.String"" Nullable=""false"" />
        <Property Name=""City"" Type=""Edm.String"" Nullable=""false"" />
      </ComplexType>
    </Schema>
    <Schema xmlns=""http://docs.oasis-open.org/odata/ns/edm"" Namespace=""NS"">
      <EntityContainer Name=""Container""/>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>
";
            var languageOptionTargets = new Dictionary <ODataT4CodeGenerator.LanguageOption, Tuple <string, string> >
            {
                {
                    ODataT4CodeGenerator.LanguageOption.CSharp,
                    new Tuple <string, string>("DynamicPropertyContainerTest.cs", "[global::Microsoft.OData.Client.ContainerProperty]publicvirtualglobal::System.Collections.Generic.IDictionary<string,object>DynamicProperties")
                },
                {
                    ODataT4CodeGenerator.LanguageOption.VB,
                    new Tuple <string, string>("DynamicPropertyContainerTest.vb", "<Global.Microsoft.OData.Client.ContainerProperty>_PublicOverridablePropertyDynamicProperties()AsGlobal.System.Collections.Generic.IDictionary(OfString,Object)")
                }
            };

            foreach (var languageOption in new[] { ODataT4CodeGenerator.LanguageOption.CSharp, ODataT4CodeGenerator.LanguageOption.VB })
            {
                var expectedCodeFileName = languageOptionTargets[languageOption].Item1;
                var containerPropertyAttributeSnippet = languageOptionTargets[languageOption].Item2;

                var t4CodeGenerator = new ODataT4CodeGenerator
                {
                    Edmx = edmx,
                    GetReferencedModelReaderFunc = null,
                    NamespacePrefix   = null,
                    TargetLanguage    = languageOption,
                    EnableNamingAlias = false,
                    IgnoreUnexpectedElementsAndAttributes = false,
                    GenerateMultipleFiles          = false,
                    ExcludedSchemaTypes            = null,
                    EmitContainerPropertyAttribute = true
                };

                var generatedCode = t4CodeGenerator.TransformText();
                var expectedCode  = ODataT4CodeGeneratorTestDescriptors.GetFileContent(expectedCodeFileName);

                var normalizedGeneratedCode = GeneratedCodeHelpers.NormalizeGeneratedCode(generatedCode);
                var normalizedExpectedCode  = GeneratedCodeHelpers.NormalizeGeneratedCode(expectedCode);

                Assert.AreEqual(normalizedGeneratedCode, normalizedExpectedCode);
                Assert.IsTrue(normalizedGeneratedCode.IndexOf(containerPropertyAttributeSnippet, StringComparison.Ordinal) > 0);
            }
        }
Пример #2
0
        public void CodeGenUsingTempMetadataFileTest()
        {
            MetadataFilePath = "tempMetadata.xml";
            File.Delete(MetadataFilePath);
            CodeGenWithT4Template(ODataT4CodeGeneratorTestDescriptors.AbstractEntityTypeWithoutKey.Metadata, null, true, true, false, false, null, true, MetadataFilePath);
            Action action = () => ODataT4CodeGeneratorTestDescriptors.ValidateXMLFile(MetadataFilePath);

            action.ShouldNotThrow <XmlException>();
            ODataT4CodeGeneratorTestDescriptors.ValidateEdmx(MetadataFilePath);
        }
        public void CodeGenSimpleEdmxMultipleFiles()
        {
            string code = CodeGenWithT4Template(ODataT4CodeGeneratorTestDescriptors.SimpleMultipleFiles.Metadata, null, true, false, generateMultipleFiles: true);

            ODataT4CodeGeneratorTestDescriptors.SimpleMultipleFiles.Verify(code, true /*isCSharp*/, false /*useDSC*/);

            string expectedTestType = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFilecontent("SimpleMultipleTestType.cs"));
            string actualTestType   = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "TestType.cs")));

            string expectedPersonGender = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFilecontent("SimpleMultipleFilesPersonGender.cs"));
            string actualPersonGender   = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "PersonGender.cs")));

            string expectedCity = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFilecontent("SimpleMultipleFilesCity.cs"));
            string actualCity   = ODataT4CodeGeneratorTest.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "City.cs")));

            Assert.AreEqual(expectedTestType, actualTestType);
            Assert.AreEqual(expectedPersonGender, actualPersonGender);
            Assert.AreEqual(expectedCity, actualCity);
        }
Пример #4
0
        public void CodeGenSimpleEdmxMultipleFiles()
        {
            string code = CodeGenWithT4Template(ODataT4CodeGeneratorTestDescriptors.SimpleMultipleFiles.Metadata, null, true, false, generateMultipleFiles: true);

            string expectedTestType = GeneratedCodeHelpers.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFileContent("SimpleMultipleTestType.cs"));
            string actualTestType   = GeneratedCodeHelpers.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "TestType.cs")));

            string expectedPersonGender = GeneratedCodeHelpers.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFileContent("SimpleMultipleFilesPersonGender.cs"));
            string actualPersonGender   = GeneratedCodeHelpers.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "PersonGender.cs")));

            string expectedCity = GeneratedCodeHelpers.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFileContent("SimpleMultipleFilesCity.cs"));
            string actualCity   = GeneratedCodeHelpers.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "City.cs")));

            string expectedExtensionMethods = GeneratedCodeHelpers.NormalizeGeneratedCode(ODataT4CodeGeneratorTestDescriptors.GetFileContent("SimpleMultipleFilesMain.cs"));
            string actualExtenisonMethods   = GeneratedCodeHelpers.NormalizeGeneratedCode(File.ReadAllText(Path.Combine(Path.GetTempPath(), "ExtensionMethods.cs")));

            Assert.AreEqual(expectedTestType, actualTestType);
            Assert.AreEqual(expectedPersonGender, actualPersonGender);
            Assert.AreEqual(expectedCity, actualCity);
            Assert.AreEqual(expectedExtensionMethods, actualExtenisonMethods);
        }