File: EdmxSerializerTests.cs

package info (click to toggle)
mono-reference-assemblies 3.12.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 604,240 kB
  • ctags: 625,505
  • sloc: cs: 3,967,741; xml: 2,793,081; ansic: 418,042; java: 60,435; sh: 14,833; makefile: 11,576; sql: 7,956; perl: 1,467; cpp: 1,446; yacc: 1,203; python: 598; asm: 422; sed: 16; php: 1
file content (91 lines) | stat: -rw-r--r-- 3,715 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.

namespace System.Data.Entity.ModelConfiguration.Edm.Serialization.UnitTests
{
    using System.Data.Entity.Core.Metadata;
    using System.Data.Entity.Core.Metadata.Edm;
    
    using System.Data.Entity.ModelConfiguration.Edm.Common;
    using System.Data.Entity.ModelConfiguration.Edm.Services;
    using System.Reflection;
    using System.Xml;
    using System.Xml.Linq;
    using System.Xml.Schema;
    using Xunit;

    public sealed class EdmxSerializerTests
    {
        [Fact]
        public void Serialize_should_return_valid_edmx_xml_v2()
        {
            var databaseMapping = CreateSimpleModel(2.0);
            var edmx = new XDocument();

            using (var xmlWriter = edmx.CreateWriter())
            {
                new EdmxSerializer().Serialize(databaseMapping, ProviderRegistry.Sql2008_ProviderInfo, xmlWriter);
            }

            edmx.Validate(LoadEdmxSchemaSet(2), (_, e) => { throw e.Exception; });
        }

        [Fact]
        public void Serialize_should_return_valid_edmx_xml_v3()
        {
            var databaseMapping = CreateSimpleModel(3.0);
            var edmx = new XDocument();

            using (var xmlWriter = edmx.CreateWriter())
            {
                new EdmxSerializer().Serialize(databaseMapping, ProviderRegistry.Sql2008_ProviderInfo, xmlWriter);
            }

            edmx.Validate(LoadEdmxSchemaSet(3), (_, e) => { throw e.Exception; });
        }

        private static DbDatabaseMapping CreateSimpleModel(double version)
        {
            var model = new EdmModel(DataSpace.CSpace, version);

            var entityType = model.AddEntityType("E");
            var type = typeof(object);

            entityType.Annotations.SetClrType(type);
            model.AddEntitySet("ESet", entityType);

            var property1 = EdmProperty.Primitive("Id", PrimitiveType.GetEdmPrimitiveType(PrimitiveTypeKind.String));

            entityType.AddMember(property1);
            var property = property1;
            property.Nullable = false;
            entityType.AddKeyMember(property);

            return new DatabaseMappingGenerator(ProviderRegistry.Sql2008_ProviderManifest).Generate(model);
        }

        private static XmlSchemaSet LoadEdmxSchemaSet(int version)
        {
            const string resourcePath
                = "System.Data.Entity.ModelConfiguration.Edm.Serialization.Xsd.";

            var schemaSet = new XmlSchemaSet();
            var assembly = Assembly.GetExecutingAssembly();

            foreach (var schema in new[]
                                       {
                                           "Microsoft.Data.Entity.Design.Edmx_" + version + ".xsd",
                                           "System.Data.Resources.AnnotationSchema.xsd",
                                           "System.Data.Resources.CodeGenerationSchema.xsd",
                                           "System.Data.Resources.CSDLSchema_" + version + ".xsd",
                                           "System.Data.Resources.CSMSL_" + version + ".xsd",
                                           "System.Data.Resources.EntityStoreSchemaGenerator.xsd",
                                           "System.Data.Resources.SSDLSchema_" + version + ".xsd"
                                       })
            {
                schemaSet.Add(null, XmlReader.Create(assembly.GetManifestResourceStream(resourcePath + schema)));
            }

            return schemaSet;
        }
    }
}