|
1 |
| -#if NET_4_5 |
2 |
| -using System; |
3 |
| -using System.IO; |
4 |
| -using System.Reflection; |
5 |
| -using System.Reflection.Emit; |
6 |
| -using NHibernate.Cfg; |
7 |
| -using NUnit.Framework; |
8 |
| -using System.Threading.Tasks; |
9 |
| - |
10 |
| -namespace NHibernate.Test.CfgTest |
11 |
| -{ |
12 |
| - [TestFixture] |
13 |
| - [System.CodeDom.Compiler.GeneratedCode("AsyncGenerator", "1.0.0")] |
14 |
| - public partial class DefaultNsAssmFixtureAsync |
15 |
| - { |
16 |
| - // Working directory |
17 |
| - private static string dir_; |
18 |
| - // Base class mapping |
19 |
| - private const string aJoinedHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
20 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" namespace=""NHibernate.Test.CfgTest"" assembly=""NHibernate.Test"" default-lazy=""false""> |
21 |
| - <class name=""A"" table=""A""> |
22 |
| - <id name=""Id""> |
23 |
| - <generator class=""assigned"" /> |
24 |
| - </id> |
25 |
| - </class> |
26 |
| - </hibernate-mapping>"; |
27 |
| - // Derived class mapping |
28 |
| - private const string bJoinedHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
29 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" namespace=""NHibernate.Test.CfgTest"" default-lazy=""false""> |
30 |
| - <joined-subclass |
31 |
| - name=""B, NHibernate.Test"" |
32 |
| - extends=""NHibernate.Test.CfgTest.A, NHibernate.Test"" |
33 |
| - table=""B""> |
34 |
| - <key column=""Id"" /> |
35 |
| - <property name=""Value"" type=""Int32"" /> |
36 |
| - </joined-subclass> |
37 |
| - </hibernate-mapping>"; |
38 |
| - // Add another level |
39 |
| - private const string cJoinedHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
40 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" assembly=""NHibernate.Test"" default-lazy=""false""> |
41 |
| - <joined-subclass |
42 |
| - name=""NHibernate.Test.CfgTest.C"" |
43 |
| - extends=""NHibernate.Test.CfgTest.B, NHibernate.Test"" |
44 |
| - table=""B""> |
45 |
| - <key column=""Id"" /> |
46 |
| - <property name=""Description"" type=""String"" /> |
47 |
| - </joined-subclass> |
48 |
| - </hibernate-mapping>"; |
49 |
| - private const string aSubclassHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
50 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" namespace=""NHibernate.Test.CfgTest"" assembly=""NHibernate.Test"" default-lazy=""false""> |
51 |
| - <class name=""A"" table=""A"" discriminator-value=""0""> |
52 |
| - <id name=""Id""> |
53 |
| - <generator class=""assigned"" /> |
54 |
| - </id> |
55 |
| - <discriminator column=""disc_col"" type=""Int32"" /> |
56 |
| - </class> |
57 |
| - </hibernate-mapping>"; |
58 |
| - // Derived class mapping |
59 |
| - private const string bSubclassHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
60 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" default-lazy=""false""> |
61 |
| - <joined-subclass |
62 |
| - name=""NHibernate.Test.CfgTest.B, NHibernate.Test"" |
63 |
| - extends=""NHibernate.Test.CfgTest.A, NHibernate.Test"" |
64 |
| - table=""B"" |
65 |
| - discriminator-value=""1""> |
66 |
| - <key column=""Id"" /> |
67 |
| - <property name=""Value"" type=""Int32"" /> |
68 |
| - </joined-subclass> |
69 |
| - </hibernate-mapping>"; |
70 |
| - // Add another level |
71 |
| - private const string cSubclassHbmXml = @"<?xml version=""1.0"" encoding=""utf-8"" ?> |
72 |
| - <hibernate-mapping xmlns=""urn:nhibernate-mapping-2.2"" namespace=""NHibernate.Test.CfgTest"" assembly=""NHibernate.Test"" default-lazy=""false""> |
73 |
| - <joined-subclass |
74 |
| - name=""NHibernate.Test.CfgTest.C, NHibernate.Test"" |
75 |
| - extends=""B"" |
76 |
| - table=""B"" |
77 |
| - discriminator-value=""2""> |
78 |
| - <key column=""Id"" /> |
79 |
| - <property name=""Description"" type=""String"" /> |
80 |
| - </joined-subclass> |
81 |
| - </hibernate-mapping>"; |
82 |
| -#region NUnit.Framework.TestFixture Members |
83 |
| - [TestFixtureSetUp] |
84 |
| - public async Task TestFixtureSetUpAsync() |
85 |
| - { |
86 |
| - dir_ = Directory.GetCurrentDirectory(); |
87 |
| - // Create hbm files (ideally, we could just embed them directly into the |
88 |
| - // assembly - same as VS does when 'Build Action' = 'Embedded Resource' - but |
89 |
| - // I could not find a way to do this, so we use files instead) |
90 |
| - StreamWriter aw = new StreamWriter("A1.hbm.xml"); |
91 |
| - await (aw.WriteAsync(aJoinedHbmXml)); |
92 |
| - aw.Close(); |
93 |
| - StreamWriter bw = new StreamWriter("B1.hbm.xml"); |
94 |
| - await (bw.WriteAsync(bJoinedHbmXml)); |
95 |
| - bw.Close(); |
96 |
| - StreamWriter cw = new StreamWriter("C1.hbm.xml"); |
97 |
| - await (cw.WriteAsync(cJoinedHbmXml)); |
98 |
| - cw.Close(); |
99 |
| - StreamWriter asw = new StreamWriter("A1.subclass.hbm.xml"); |
100 |
| - await (asw.WriteAsync(aJoinedHbmXml)); |
101 |
| - asw.Close(); |
102 |
| - StreamWriter bsw = new StreamWriter("B1.subclass.hbm.xml"); |
103 |
| - await (bsw.WriteAsync(bJoinedHbmXml)); |
104 |
| - bsw.Close(); |
105 |
| - StreamWriter csw = new StreamWriter("C1.subclass.hbm.xml"); |
106 |
| - await (csw.WriteAsync(cJoinedHbmXml)); |
107 |
| - csw.Close(); |
108 |
| - } |
109 |
| - |
110 |
| - [SetUp] |
111 |
| - public virtual void SetUp() |
112 |
| - { |
113 |
| - } |
114 |
| - |
115 |
| - [TearDown] |
116 |
| - public virtual void TearDown() |
117 |
| - { |
118 |
| - } |
119 |
| - |
120 |
| - [TestFixtureTearDown] |
121 |
| - public virtual void TestFixtureTearDown() |
122 |
| - { |
123 |
| - } |
124 |
| - |
125 |
| -#endregion |
126 |
| - [Test] |
127 |
| - public void TopDownJoined() |
128 |
| - { |
129 |
| - AssemblyName assemblyName = new AssemblyName(); |
130 |
| - assemblyName.Name = "MyTestA1.dll"; |
131 |
| - AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); |
132 |
| - ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name, true); |
133 |
| - assemblyBuilder.AddResourceFile("A.hbm.xml", "A1.hbm.xml"); |
134 |
| - assemblyBuilder.AddResourceFile("B.hbm.xml", "B1.hbm.xml"); |
135 |
| - assemblyBuilder.AddResourceFile("C.hbm.xml", "C1.hbm.xml"); |
136 |
| - assemblyBuilder.Save(assemblyName.Name); |
137 |
| - Configuration cfg = new Configuration(); |
138 |
| - cfg.AddAssembly(Assembly.LoadFile(dir_ + "/" + assemblyName.Name)); |
139 |
| - // if no exception, success |
140 |
| - } |
141 |
| - |
142 |
| - [Test] |
143 |
| - public void BottomUpJoined() |
144 |
| - { |
145 |
| - AssemblyName assemblyName = new AssemblyName(); |
146 |
| - assemblyName.Name = "MyTestB1.dll"; |
147 |
| - AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); |
148 |
| - ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name, true); |
149 |
| - assemblyBuilder.AddResourceFile("C.hbm.xml", "C1.hbm.xml"); |
150 |
| - assemblyBuilder.AddResourceFile("B.hbm.xml", "B1.hbm.xml"); |
151 |
| - assemblyBuilder.AddResourceFile("A.hbm.xml", "A1.hbm.xml"); |
152 |
| - assemblyBuilder.Save(assemblyName.Name); |
153 |
| - Configuration cfg = new Configuration(); |
154 |
| - cfg.AddAssembly(Assembly.LoadFile(dir_ + "/" + assemblyName.Name)); |
155 |
| - // if no exception, success |
156 |
| - } |
157 |
| - |
158 |
| - [Test] |
159 |
| - public void MixedJoined() |
160 |
| - { |
161 |
| - AssemblyName assemblyName = new AssemblyName(); |
162 |
| - assemblyName.Name = "MyTestC1.dll"; |
163 |
| - AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); |
164 |
| - ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name, true); |
165 |
| - assemblyBuilder.AddResourceFile("B.hbm.xml", "B1.hbm.xml"); |
166 |
| - assemblyBuilder.AddResourceFile("A.hbm.xml", "A1.hbm.xml"); |
167 |
| - assemblyBuilder.AddResourceFile("C.hbm.xml", "C1.hbm.xml"); |
168 |
| - assemblyBuilder.Save(assemblyName.Name); |
169 |
| - Configuration cfg = new Configuration(); |
170 |
| - cfg.AddAssembly(Assembly.LoadFile(dir_ + "/" + assemblyName.Name)); |
171 |
| - // if no exception, success |
172 |
| - } |
173 |
| - |
174 |
| - [Test] |
175 |
| - public void MixedSubclass() |
176 |
| - { |
177 |
| - AssemblyName assemblyName = new AssemblyName(); |
178 |
| - assemblyName.Name = "MyTestCSubclass1.dll"; |
179 |
| - AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave); |
180 |
| - ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule(assemblyName.Name, assemblyName.Name, true); |
181 |
| - assemblyBuilder.AddResourceFile("B.subclass.hbm.xml", "B1.hbm.xml"); |
182 |
| - assemblyBuilder.AddResourceFile("A.subclass.hbm.xml", "A1.hbm.xml"); |
183 |
| - assemblyBuilder.AddResourceFile("C.subclass.hbm.xml", "C1.hbm.xml"); |
184 |
| - assemblyBuilder.Save(assemblyName.Name); |
185 |
| - Configuration cfg = new Configuration(); |
186 |
| - cfg.AddAssembly(Assembly.LoadFile(dir_ + "/" + assemblyName.Name)); |
187 |
| - // if no exception, success |
188 |
| - } |
189 |
| - } |
190 |
| -} |
191 |
| -#endif |
0 commit comments