Datei: IntegrationTests/IntegrationTests/DataTypeTest.cs
Last Commit (08b23aa)
1 | // |
2 | // Copyright (c) 2002-2016 Mirko Matytschak |
3 | // (www.netdataobjects.de) |
4 | // |
5 | // Author: Mirko Matytschak |
6 | // |
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
11 | // conditions: |
12 | |
13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
14 | // of the Software. |
15 | // |
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. |
21 | |
22 | |
23 | using System; |
24 | using System.Reflection; |
25 | using System.Collections; |
26 | using DataTypeTestClasses; |
27 | using NDO; |
28 | using NDO.Mapping; |
29 | using NUnit.Framework; |
30 | using NDO.Query; |
31 | using System.Linq; |
32 | |
33 | namespace NdoUnitTests |
34 | { |
35 | ····[TestFixture] |
36 | public class DataTypeTest |
37 | ····{ |
38 | ········[SetUp] |
39 | ········public void Setup() |
40 | ········{ |
41 | ········} |
42 | |
43 | ········[TearDown] |
44 | ········public void TearDown() |
45 | ········{ |
46 | ············var pm = PmFactory.NewPersistenceManager(); |
47 | |
48 | ············IList l = pm.GetClassExtent(typeof(DataContainer), true); |
49 | ············if (l.Count > 0) |
50 | ············{ |
51 | ················pm.Delete( l ); |
52 | ················pm.Save(); |
53 | ············} |
54 | ············l = pm.GetClassExtent( typeof( DataContainerDerived ), true ); |
55 | ············if (l.Count > 0) |
56 | ············{ |
57 | ················pm.Delete( l ); |
58 | ················pm.Save(); |
59 | ············} |
60 | ············l = pm.GetClassExtent( typeof( VtAndEtContainer ), true ); |
61 | ············if (l.Count > 0) |
62 | ············{ |
63 | ················pm.Delete( l ); |
64 | ················pm.Save(); |
65 | ············} |
66 | ············l = pm.GetClassExtent( typeof( VtAndEtContainerDerived ), true ); |
67 | ············if (l.Count > 0) |
68 | ············{ |
69 | ················pm.Delete( l ); |
70 | ················pm.Save(); |
71 | ············} |
72 | ············l = pm.GetClassExtent( typeof( NullableDataContainer ), true ); |
73 | ············if (l.Count > 0) |
74 | ············{ |
75 | ················pm.Delete( l ); |
76 | ················pm.Save(); |
77 | ············} |
78 | ············l = pm.GetClassExtent( typeof( NullableDataContainerDerived ), true ); |
79 | ············if (l.Count > 0) |
80 | ············{ |
81 | ················pm.Delete( l ); |
82 | ················pm.Save(); |
83 | ············} |
84 | |
85 | ············pm.Close(); |
86 | ········} |
87 | |
88 | ········[Test] |
89 | ········public void TestDataContainer() |
90 | ········{ |
91 | ············DataContainer dc = new DataContainer(); |
92 | |
93 | ············dc.Init(); |
94 | |
95 | ············var pm = PmFactory.NewPersistenceManager(); |
96 | |
97 | ············pm.MakePersistent(dc); |
98 | ············pm.Save(); |
99 | ············pm.UnloadCache(); |
100 | ············IList l = pm.GetClassExtent(typeof(DataContainer)); |
101 | ············Assert.That(1 ==··l.Count, "Ein Objekt sollte in der Liste sein"); |
102 | ············dc = (DataContainer) l[0]; |
103 | ············AssertDataContainer(dc); |
104 | ········} |
105 | |
106 | ········[Test] |
107 | ········public void TestNullableDataContainer() |
108 | ········{ |
109 | ············NullableDataContainer ndc = new NullableDataContainer(); |
110 | ············ndc.Init(); |
111 | |
112 | ············var pm = PmFactory.NewPersistenceManager(); |
113 | ············pm.MakePersistent(ndc); |
114 | ············pm.Save(); |
115 | ············pm.UnloadCache(); |
116 | ············ndc = new NDOQuery<NullableDataContainer>(pm, null, false).ExecuteSingle(true); |
117 | ············AssertNullableDataContainer(ndc); |
118 | ········} |
119 | |
120 | |
121 | ········[Test] |
122 | ········public void TestNullableDataContainerDerived() |
123 | ········{ |
124 | ············NullableDataContainerDerived ndc = new NullableDataContainerDerived(); |
125 | ············ndc.Init(); |
126 | |
127 | ············var pm = PmFactory.NewPersistenceManager(); |
128 | ············pm.MakePersistent(ndc); |
129 | ············pm.Save(); |
130 | ············pm.UnloadCache(); |
131 | ············ndc = new NDOQuery<NullableDataContainerDerived>(pm, null, false).ExecuteSingle(true); |
132 | ············AssertNullableDataContainer(ndc); |
133 | ········} |
134 | |
135 | ········private bool FieldWithNameExists(Class cl, string name) |
136 | ········{ |
137 | ············foreach(Field field in cl.Fields) |
138 | ················if (field.Name.IndexOf(name) > -1) |
139 | ····················return true; |
140 | ············return false; |
141 | ········} |
142 | |
143 | ········//public void TestDataContainerEvent() |
144 | ········//{ |
145 | ········//····Type t = typeof(DataContainer.QueryHelper); |
146 | |
147 | ········//····Class cl = pm.NDOMapping.FindClass(typeof(DataContainer)); |
148 | ········//····Assert.That(cl.FindField("TestEvent") == null, "Events should not be mapped"); |
149 | |
150 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
151 | ········//····PropertyInfo pi = t.GetProperty("TestEvent"); |
152 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
153 | |
154 | ········//····//---- |
155 | ········//····t = typeof(DataContainerDerived.QueryHelper); |
156 | |
157 | ········//····cl = pm.NDOMapping.FindClass(typeof(DataContainerDerived)); |
158 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
159 | |
160 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
161 | ········//····pi = t.GetProperty("TestEvent"); |
162 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
163 | |
164 | ········//····//---- |
165 | ········//····t = typeof(VtAndEtContainer.QueryHelper); |
166 | |
167 | ········//····cl = pm.NDOMapping.FindClass(typeof(VtAndEtContainer)); |
168 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
169 | |
170 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
171 | ········//····pi = t.GetProperty("TestEvent"); |
172 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
173 | |
174 | ········//····//---- |
175 | ········//····t = typeof(VtAndEtContainerDerived.QueryHelper); |
176 | |
177 | ········//····cl = pm.NDOMapping.FindClass(typeof(VtAndEtContainerDerived)); |
178 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
179 | |
180 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
181 | ········//····pi = t.GetProperty("TestEvent"); |
182 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
183 | |
184 | ········//} |
185 | |
186 | ········[Test] |
187 | ········public void TestDataContainerDerived() |
188 | ········{············ |
189 | ············DataContainerDerived dcd = new DataContainerDerived(); |
190 | ············dcd.Init(); |
191 | ············var pm = PmFactory.NewPersistenceManager(); |
192 | ············pm.MakePersistent(dcd); |
193 | ············pm.Save(); |
194 | ············pm.UnloadCache(); |
195 | ············IList l = pm.GetClassExtent(typeof(DataContainerDerived)); |
196 | ············Assert.That(1 ==··l.Count, "Ein Objekt sollte in der Liste sein"); |
197 | ············dcd = (DataContainerDerived) l[0]; |
198 | ············AssertDataContainer(dcd); |
199 | ········} |
200 | |
201 | ········bool CheckDouble( double d1, double d2 ) |
202 | ········{ |
203 | ············double eps = Math.Abs(d1 * 1E-6); |
204 | ············return (d1 - eps) <= d2 && d2 <= (d1 + eps); |
205 | ········} |
206 | |
207 | ········bool CheckFloat( float d1, float d2 ) |
208 | ········{ |
209 | ············double eps = Math.Abs( d1 * 1E-6 ); |
210 | ············return (d1 - eps) <= d2 && d2 <= (d1 + eps); |
211 | ········} |
212 | |
213 | ········void AssertDataContainer(DataContainer dc) |
214 | ········{ |
215 | ············Assert.That(true ==··dc.BoolVar, "BoolVar falsc h"); |
216 | ············Assert.That(127 ==··dc.ByteVar, "ByteVar falsch"); |
217 | ············Assert.That("Test" ==··dc.StringVar, "StringVar falsch"); |
218 | ············Assert.That(DateTime.Now.Date ==··dc.DateTimeVar.Date, "DateTimeVar falsch"); |
219 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··dc.GuidVar, "GuidVar falsch"); |
220 | ············Assert.That(1231.12m ==··dc.DecVar, "DecVar falsch"); |
221 | ············Assert.That(int.MaxValue ==··dc.Int32Var, "Int32Var falsch"); |
222 | ············Assert.That((uint) int.MaxValue ==··dc.Uint32Var, "UInt32Var falsch"); |
223 | #if SQLITE |
224 | ············Assert.That(CheckDouble(1E28, dc.DoubleVar), "DoubleVar falsch"); |
225 | ············Assert.That(CheckFloat(1E14F, dc.FloatVar), "FloatVar falsch"); |
226 | #else |
227 | ············Assert.That(1E28 ==··dc.DoubleVar, "DoubleVar falsch"); |
228 | ············Assert.That(1E14F ==··dc.FloatVar, "FloatVar falsch"); |
229 | #endif |
230 | ············Assert.That(0x1ffffffff ==··dc.Int64Var, "Int64Var falsch"); |
231 | ············Assert.That(short.MaxValue ==··dc.Int16Var, "Int16Var falsch"); |
232 | ············Assert.That((ushort) short.MaxValue ==··dc.Uint16Var, "UInt16Var falsch"); |
233 | ············Assert.That(0x1ffffffff ==··dc.Uint64Var, "UInt64Var falsch"); |
234 | ············Assert.That(EnumType.drei ==··dc.EnumVar, "EnumType falsch"); |
235 | ············Assert.That(Guid.Empty ==··dc.EmptyGuidVar, "Empty Guid falsch"); |
236 | ············Assert.That(DateTime.MinValue ==··dc.EmptyDateTimeVar, "Empty DateTime falsch"); |
237 | ············Assert.That(dc.NullString == null, "Empty String falsch"); |
238 | ········} |
239 | |
240 | |
241 | ········void AssertNullableDataContainer(NullableDataContainer dc) |
242 | ········{ |
243 | ············Assert.That(true ==··dc.BoolVar, "BoolVar falsch"); |
244 | ············Assert.That(127 ==··dc.ByteVar, "ByteVar falsch"); |
245 | ············Assert.That(DateTime.Now.Date ==··dc.DateTimeVar.Value.Date, "DateTimeVar falsch"); |
246 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··dc.GuidVar, "GuidVar falsch"); |
247 | ············Assert.That(1231.12m ==··dc.DecVar, "DecVar falsch"); |
248 | ············Assert.That(int.MaxValue ==··dc.Int32Var, "Int32Var falsch"); |
249 | ············Assert.That((uint)int.MaxValue ==··dc.Uint32Var, "UInt32Var falsch"); |
250 | #if SQLITE |
251 | ············Assert.That(CheckDouble(1E28, dc.DoubleVar.Value), "DoubleVar falsch"); |
252 | ············Assert.That(CheckFloat(1E14F, dc.FloatVar.Value), "FloatVar falsch"); |
253 | #else |
254 | ············Assert.That(1E28 ==··dc.DoubleVar.Value, "DoubleVar falsch"); |
255 | ············Assert.That(1E14F ==··dc.FloatVar.Value, "FloatVar falsch"); |
256 | #endif |
257 | ············Assert.That(0x1ffffffff ==··dc.Int64Var, "Int64Var falsch"); |
258 | ············Assert.That(short.MaxValue ==··dc.Int16Var, "Int16Var falsch"); |
259 | ············Assert.That((ushort)short.MaxValue ==··dc.Uint16Var, "UInt16Var falsch"); |
260 | ············Assert.That(0x1ffffffff ==··dc.Uint64Var, "UInt64Var falsch"); |
261 | ············Assert.That(EnumType.drei ==··dc.EnumVar, "EnumType falsch"); |
262 | |
263 | #if !ACCESS··// Access initializes bool vars always with False |
264 | ············Assert.That(!dc.BoolEmptyVar.HasValue, "BoolEmptyVar falsch"); |
265 | #endif |
266 | ············Assert.That(!dc.ByteEmptyVar.HasValue, "ByteVar falsch"); |
267 | ············Assert.That(!dc.DateTimeEmptyVar.HasValue, "DateTimeVar falsch"); |
268 | ············Assert.That(!dc.GuidEmptyVar.HasValue, "GuidVar falsch"); |
269 | ············Assert.That(!dc.DecEmptyVar.HasValue, "DecVar falsch"); |
270 | ············Assert.That(!dc.Int32EmptyVar.HasValue, "Int32Var falsch"); |
271 | ············Assert.That(!dc.Uint32EmptyVar.HasValue, "UInt32Var falsch"); |
272 | ············Assert.That(!dc.DoubleEmptyVar.HasValue, "DoubleVar falsch"); |
273 | ············Assert.That(!dc.FloatEmptyVar.HasValue, "FloatVar falsch"); |
274 | ············Assert.That(!dc.Int64EmptyVar.HasValue, "Int64Var falsch"); |
275 | ············Assert.That(!dc.Int16EmptyVar.HasValue, "Int16Var falsch"); |
276 | ············Assert.That(!dc.Uint16EmptyVar.HasValue, "UInt16Var falsch"); |
277 | ············Assert.That(!dc.Uint64EmptyVar.HasValue, "UInt64Var falsch"); |
278 | ············Assert.That(!dc.EnumEmptyVar.HasValue, "EnumType falsch"); |
279 | |
280 | ········} |
281 | |
282 | ········[Test] |
283 | ········public void QueryWithEmptyGuidParameterSearchesForNull() |
284 | ········{ |
285 | ············var pm = PmFactory.NewPersistenceManager(); |
286 | |
287 | ············DataContainer dc = new DataContainer(); |
288 | ············dc.Init(); |
289 | ············dc.GuidVar = Guid.Empty; |
290 | ············pm.MakePersistent( dc ); |
291 | ············pm.Save(); |
292 | ············pm.UnloadCache(); |
293 | |
294 | ············var q = new NDOQuery<DataContainer>(pm, "guidVar = {0}"); |
295 | ············q.Parameters.Add( Guid.Empty ); |
296 | ············var list = q.Execute(); |
297 | ············Assert.That(Guid.Empty ==··list.First().GuidVar ); |
298 | ········} |
299 | |
300 | ········[Test] |
301 | ········public void QueryWithDateTimeMinValueParameterSearchesForNull() |
302 | ········{ |
303 | ············var pm = PmFactory.NewPersistenceManager(); |
304 | |
305 | ············DataContainer dc = new DataContainer(); |
306 | |
307 | ············dc.Init(); |
308 | ············dc.DateTimeVar = DateTime.MinValue; |
309 | ············pm.MakePersistent( dc ); |
310 | ············pm.Save(); |
311 | ············pm.UnloadCache(); |
312 | |
313 | ············var q = new NDOQuery<DataContainer>(pm, "dateTimeVar = {0}"); |
314 | ············q.Parameters.Add( DateTime.MinValue ); |
315 | ············var list = q.Execute(); |
316 | ············Assert.That(DateTime.MinValue ==··list.First().DateTimeVar ); |
317 | ········} |
318 | |
319 | |
320 | ········[Test] |
321 | ········public void ParametersTest() |
322 | ········{ |
323 | ············var pm = PmFactory.NewPersistenceManager(); |
324 | |
325 | ············DataContainer dc = new DataContainer(); |
326 | ············dc.Init(); |
327 | ············pm.MakePersistent(dc); |
328 | ············pm.Save(); |
329 | ············IQuery q = new NDOQuery<DataContainer>(pm, "boolVar" + " = " + "{0}"); |
330 | #if !ORACLE |
331 | ············q.Parameters.Add(true); |
332 | #else |
333 | ············q.Parameters.Add(1); |
334 | #endif |
335 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
336 | ············ |
337 | ············q = new NDOQuery<DataContainer>(pm, "byteVar" + " = " + "{0}"); |
338 | ············q.Parameters.Add((byte)127); |
339 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
340 | |
341 | ············q = new NDOQuery<DataContainer>(pm, "dateTimeVar" + " <= " + "{0}"); |
342 | ············q.Parameters.Add(DateTime.Now); |
343 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
344 | |
345 | ············q = new NDOQuery<DataContainer>(pm, "guidVar" + " = " + "{0}"); |
346 | ············q.Parameters.Add(new Guid("12341234-1234-1234-1234-123412341234")); |
347 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
348 | |
349 | ············q = new NDOQuery<DataContainer>(pm, "decVar" + " = " + "{0}"); |
350 | ············q.Parameters.Add(1231.12m); |
351 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
352 | |
353 | ············q = new NDOQuery<DataContainer>(pm, "doubleVar" + " = " + "{0}"); |
354 | ············q.Parameters.Add(1E28); |
355 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
356 | |
357 | ············q = new NDOQuery<DataContainer>(pm, "enumVar" + " = " + "{0}"); |
358 | ············q.Parameters.Add(EnumType.drei); |
359 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
360 | |
361 | #if !MYSQL |
362 | ············q = new NDOQuery<DataContainer>(pm, "floatVar" + " = " + "{0}"); |
363 | ············q.Parameters.Add(1E14F); |
364 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
365 | #endif |
366 | ············q = new NDOQuery<DataContainer>(pm, "int16Var" + " = " + "{0}"); |
367 | ············q.Parameters.Add(short.MaxValue); |
368 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
369 | |
370 | ············q = new NDOQuery<DataContainer>(pm, "int32Var" + " = " + "{0}"); |
371 | ············q.Parameters.Add(int.MaxValue); |
372 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
373 | |
374 | ············q = new NDOQuery<DataContainer>(pm, "int64Var" + " = " + "{0}"); |
375 | ············q.Parameters.Add(0x1ffffffff); |
376 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
377 | |
378 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + " = " + "{0}"); |
379 | ············q.Parameters.Add("Test"); |
380 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
381 | |
382 | ············q = new NDOQuery<DataContainer>(pm, "uint16Var" + " = " + "{0}"); |
383 | ············q.Parameters.Add((ushort) short.MaxValue); |
384 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
385 | |
386 | ············q = new NDOQuery<DataContainer>(pm, "uint32Var" + " = " + "{0}"); |
387 | ············q.Parameters.Add((uint) int.MaxValue); |
388 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
389 | |
390 | ············q = new NDOQuery<DataContainer>(pm, "uint64Var" + " = " + "{0}"); |
391 | ············q.Parameters.Add(0x1ffffffff); |
392 | ············dc = (DataContainer) q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
393 | |
394 | ············dc.StringVar = ""; |
395 | ············pm.Save(); |
396 | |
397 | #if ORACLE |
398 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + Query.Op.IsNull); |
399 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
400 | #else |
401 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + " = " + "{0}"); |
402 | ············q.Parameters.Add(""); |
403 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
404 | #endif |
405 | |
406 | ········} |
407 | |
408 | |
409 | #if nix |
410 | ········[Test] |
411 | ········public void TestQueryHelpers() |
412 | ········{············ |
413 | ············Assert.That("propValType.ByteVar" ==··"propValType.ByteVar", "ByteVar falsch #1"); |
414 | ············Assert.That("propValType.BoolVar" ==·· "propValType.BoolVar", "BoolVar falsch #1"); |
415 | ············Assert.That("propValType.DecVar" ==··"propValType.DecVar", "DecVar falsch #1"); |
416 | ············Assert.That("propValType.DateTimeVar" ==··"propValType.DateTimeVar", "DateTimeVar falsch #1"); |
417 | ············Assert.That("propValType.DoubleVar" ==··"propValType.DoubleVar", "DoubleVar falsch #1"); |
418 | ············Assert.That("propValType.FloatVar" ==··"propValType.FloatVar", "FloatVar falsch #1"); |
419 | ············Assert.That("propValType.GuidVar" ==··"propValType.GuidVar", "GuidVar falsch #1"); |
420 | ············Assert.That("propValType.Int16Var" ==··"propValType.Int16Var", "Int16Var falsch #1"); |
421 | ············Assert.That("propValType.Int32Var" ==··"propValType.Int32Var", "Int32Var falsch #1"); |
422 | ············Assert.That("propValType.Int64Var" ==··"propValType.Int64Var", "Int64Var falsch #1"); |
423 | ············Assert.That("propValType.StringVar" ==··"propValType.StringVar", "StringVar falsch #1"); |
424 | ············Assert.That("propValType.Uint16Var" ==··"propValType.Uint16Var", "Uint16Var falsch #1"); |
425 | ············Assert.That("propValType.Uint32Var" ==··"propValType.Uint32Var", "Uint32Var falsch #1"); |
426 | ············Assert.That("propValType.Uint64Var" ==··"propValType.Uint64Var", "Uint64Var falsch #1"); |
427 | ············Assert.That("propValType.EnumVar" ==··"propValType.EnumVar", "EnumVar falsch #1"); |
428 | |
429 | ············Assert.That("pubValType.ByteVar" ==··"pubValType.ByteVar", "ByteVar falsch #2"); |
430 | ············Assert.That("pubValType.BoolVar" ==·· "pubValType.BoolVar", "BoolVar falsch #2"); |
431 | ············Assert.That("pubValType.DecVar" ==··"pubValType.DecVar", "DecVar falsch #2"); |
432 | ············Assert.That("pubValType.DateTimeVar" ==··"pubValType.DateTimeVar", "DateTimeVar falsch #2"); |
433 | ············Assert.That("pubValType.DoubleVar" ==··"pubValType.DoubleVar", "DoubleVar falsch #2"); |
434 | ············Assert.That("pubValType.FloatVar" ==··"pubValType.FloatVar", "FloatVar falsch #2"); |
435 | ············Assert.That("pubValType.GuidVar" ==··"pubValType.GuidVar", "GuidVar falsch #2"); |
436 | ············Assert.That("pubValType.Int16Var" ==··"pubValType.Int16Var", "Int16Var falsch #2"); |
437 | ············Assert.That("pubValType.Int32Var" ==··"pubValType.Int32Var", "Int32Var falsch #2"); |
438 | ············Assert.That("pubValType.Int64Var" ==··"pubValType.Int64Var", "Int64Var falsch #2"); |
439 | ············Assert.That("pubValType.StringVar" ==··"pubValType.StringVar", "StringVar falsch #2"); |
440 | ············Assert.That("pubValType.Uint16Var" ==··"pubValType.Uint16Var", "Uint16Var falsch #2"); |
441 | ············Assert.That("pubValType.Uint32Var" ==··"pubValType.Uint32Var", "Uint32Var falsch #2"); |
442 | ············Assert.That("pubValType.Uint64Var" ==··"pubValType.Uint64Var", "Uint64Var falsch #2"); |
443 | ············Assert.That("pubValType.EnumVar" ==··"pubValType.EnumVar", "EnumVar falsch #2"); |
444 | |
445 | ············Assert.That("embeddedType.byteVar" ==··"embeddedType.byteVar", "ByteVar falsch #3"); |
446 | ············Assert.That("embeddedType.boolVar" ==·· "embeddedType.boolVar", "BoolVar falsch #3"); |
447 | ············Assert.That("embeddedType.decVar" ==··"embeddedType.decVar", "DecVar falsch #3"); |
448 | ············Assert.That("embeddedType.dateTimeVar" ==··"embeddedType.dateTimeVar", "DateTimeVar falsch #3"); |
449 | ············Assert.That("embeddedType.doubleVar" ==··"embeddedType.doubleVar", "DoubleVar falsch #3"); |
450 | ············Assert.That("embeddedType.floatVar" ==··"embeddedType.floatVar", "FloatVar falsch #3"); |
451 | ············Assert.That("embeddedType.guidVar" ==··"embeddedType.guidVar", "GuidVar falsch #3"); |
452 | ············Assert.That("embeddedType.int16Var" ==··"embeddedType.int16Var", "Int16Var falsch #3"); |
453 | ············Assert.That("embeddedType.int32Var" ==··"embeddedType.int32Var", "Int32Var falsch #3"); |
454 | ············Assert.That("embeddedType.int64Var" ==··"embeddedType.int64Var", "Int64Var falsch #3"); |
455 | ············Assert.That("embeddedType.stringVar" ==··"embeddedType.stringVar", "StringVar falsch #3"); |
456 | ············Assert.That("embeddedType.uint16Var" ==··"embeddedType.uint16Var", "Uint16Var falsch #3"); |
457 | ············Assert.That("embeddedType.uint32Var" ==··"embeddedType.uint32Var", "Uint32Var falsch #3"); |
458 | ············Assert.That("embeddedType.uint64Var" ==··"embeddedType.uint64Var", "Uint64Var falsch #3"); |
459 | ············Assert.That("embeddedType.enumVar" ==··"embeddedType.enumVar", "Uint64Var falsch #3"); |
460 | |
461 | ············VtAndEtContainerDerived.QueryHelper "" = new VtAndEtContainerDerived.QueryHelper(); |
462 | ············ |
463 | ············Assert.That("propValType.ByteVar" ==··".propValType.ByteVar", "ByteVar falsch #1"); |
464 | ············Assert.That("propValType.BoolVar" ==·· ".propValType.BoolVar", "BoolVar falsch #1"); |
465 | ············Assert.That("propValType.DecVar" ==··".propValType.DecVar", "DecVar falsch #1"); |
466 | ············Assert.That("propValType.DateTimeVar" ==··".propValType.DateTimeVar", "DateTimeVar falsch #1"); |
467 | ············Assert.That("propValType.DoubleVar" ==··".propValType.DoubleVar", "DoubleVar falsch #1"); |
468 | ············Assert.That("propValType.FloatVar" ==··".propValType.FloatVar", "FloatVar falsch #1"); |
469 | ············Assert.That("propValType.GuidVar" ==··".propValType.GuidVar", "GuidVar falsch #1"); |
470 | ············Assert.That("propValType.Int16Var" ==··".propValType.Int16Var", "Int16Var falsch #1"); |
471 | ············Assert.That("propValType.Int32Var" ==··".propValType.Int32Var", "Int32Var falsch #1"); |
472 | ············Assert.That("propValType.Int64Var" ==··".propValType.Int64Var", "Int64Var falsch #1"); |
473 | ············Assert.That("propValType.StringVar" ==··".propValType.StringVar", "StringVar falsch #1"); |
474 | ············Assert.That("propValType.Uint16Var" ==··".propValType.Uint16Var", "Uint16Var falsch #1"); |
475 | ············Assert.That("propValType.Uint32Var" ==··".propValType.Uint32Var", "Uint32Var falsch #1"); |
476 | ············Assert.That("propValType.Uint64Var" ==··".propValType.Uint64Var", "Uint64Var falsch #1"); |
477 | ············Assert.That("propValType.EnumVar" ==··".propValType.EnumVar", "EnumVar falsch #1"); |
478 | |
479 | ············Assert.That("pubValType.ByteVar" ==··".pubValType.ByteVar", "ByteVar falsch #2"); |
480 | ············Assert.That("pubValType.BoolVar" ==·· ".pubValType.BoolVar", "BoolVar falsch #2"); |
481 | ············Assert.That("pubValType.DecVar" ==··".pubValType.DecVar", "DecVar falsch #2"); |
482 | ············Assert.That("pubValType.DateTimeVar" ==··".pubValType.DateTimeVar", "DateTimeVar falsch #2"); |
483 | ············Assert.That("pubValType.DoubleVar" ==··".pubValType.DoubleVar", "DoubleVar falsch #2"); |
484 | ············Assert.That("pubValType.FloatVar" ==··".pubValType.FloatVar", "FloatVar falsch #2"); |
485 | ············Assert.That("pubValType.GuidVar" ==··".pubValType.GuidVar", "GuidVar falsch #2"); |
486 | ············Assert.That("pubValType.Int16Var" ==··".pubValType.Int16Var", "Int16Var falsch #2"); |
487 | ············Assert.That("pubValType.Int32Var" ==··".pubValType.Int32Var", "Int32Var falsch #2"); |
488 | ············Assert.That("pubValType.Int64Var" ==··".pubValType.Int64Var", "Int64Var falsch #2"); |
489 | ············Assert.That("pubValType.StringVar" ==··".pubValType.StringVar", "StringVar falsch #2"); |
490 | ············Assert.That("pubValType.Uint16Var" ==··".pubValType.Uint16Var", "Uint16Var falsch #2"); |
491 | ············Assert.That("pubValType.Uint32Var" ==··".pubValType.Uint32Var", "Uint32Var falsch #2"); |
492 | ············Assert.That("pubValType.Uint64Var" ==··".pubValType.Uint64Var", "Uint64Var falsch #2"); |
493 | ············Assert.That("pubValType.EnumVar" ==··".pubValType.EnumVar", "EnumVar falsch #2"); |
494 | |
495 | ············Assert.That("embeddedType.byteVar" ==··".embeddedType.byteVar", "ByteVar falsch #3"); |
496 | ············Assert.That("embeddedType.boolVar" ==·· ".embeddedType.boolVar", "BoolVar falsch #3"); |
497 | ············Assert.That("embeddedType.decVar" ==··".embeddedType.decVar", "DecVar falsch #3"); |
498 | ············Assert.That("embeddedType.dateTimeVar" ==··".embeddedType.dateTimeVar", "DateTimeVar falsch #3"); |
499 | ············Assert.That("embeddedType.doubleVar" ==··".embeddedType.doubleVar", "DoubleVar falsch #3"); |
500 | ············Assert.That("embeddedType.floatVar" ==··".embeddedType.floatVar", "FloatVar falsch #3"); |
501 | ············Assert.That("embeddedType.guidVar" ==··".embeddedType.guidVar", "GuidVar falsch #3"); |
502 | ············Assert.That("embeddedType.int16Var" ==··".embeddedType.int16Var", "Int16Var falsch #3"); |
503 | ············Assert.That("embeddedType.int32Var" ==··".embeddedType.int32Var", "Int32Var falsch #3"); |
504 | ············Assert.That("embeddedType.int64Var" ==··".embeddedType.int64Var", "Int64Var falsch #3"); |
505 | ············Assert.That("embeddedType.stringVar" ==··".embeddedType.stringVar", "StringVar falsch #3"); |
506 | ············Assert.That("embeddedType.uint16Var" ==··".embeddedType.uint16Var", "Uint16Var falsch #3"); |
507 | ············Assert.That("embeddedType.uint32Var" ==··".embeddedType.uint32Var", "Uint32Var falsch #3"); |
508 | ············Assert.That("embeddedType.uint64Var" ==··".embeddedType.uint64Var", "Uint64Var falsch #3"); |
509 | ············Assert.That("embeddedType.enumVar" ==··".embeddedType.enumVar", "Uint64Var falsch #3"); |
510 | |
511 | ········} |
512 | #endif |
513 | |
514 | ········[Test] |
515 | ········public void TestPrimitiveTypeMethodCall() |
516 | ········{ |
517 | ············PrimitiveTypeMethodCaller mc1 = new PrimitiveTypeMethodCaller(); |
518 | ············PrimitiveTypeMethodCaller mc2 = new PrimitiveTypeMethodCaller(); |
519 | ············Assert.That(0 ==··mc1.StringTest(mc2), "Result must be 0 #1"); |
520 | ············Assert.That(0 ==··mc1.DoubleTest(mc2), "Result must be 0 #2"); |
521 | ············Assert.That(0 ==··mc1.DateTimeTest(mc2), "Result must be 0 #3"); |
522 | ············Assert.That(0 ==··mc1.BoolTest(mc2), "Result must be 0 #4"); |
523 | ············Assert.That(0 ==··mc1.IntTest(mc2), "Result must be 0 #5"); |
524 | ········} |
525 | |
526 | ········[Test] |
527 | ········public void TestValueTypeAndEmbeddedType() |
528 | ········{ |
529 | ············var pm = PmFactory.NewPersistenceManager(); |
530 | |
531 | ············Class cl = pm.NDOMapping.FindClass("DataTypeTestClasses.VtAndEtContainer"); |
532 | ············Field f = cl.FindField("embeddedType.doubleVar"); |
533 | ············f.Column.Size = 12; |
534 | ············f.Column.Precision = 7; |
535 | ············VtAndEtContainer cont = new VtAndEtContainer(); |
536 | ············cont.Init(); |
537 | ············pm.MakePersistent(cont); |
538 | ············pm.Save(); |
539 | ············pm.UnloadCache(); |
540 | ············IList l = pm.GetClassExtent(typeof(VtAndEtContainer)); |
541 | ············Assert.That(1 ==··l.Count, "Anzahl Container stimmt nicht"); |
542 | ············cont = (VtAndEtContainer) l[0]; |
543 | ············AssertVtAndEtContainer(cont);········ |
544 | ········} |
545 | |
546 | ········[Test] |
547 | ········public void TestValueTypeAndEmbeddedTypeDerived() |
548 | ········{ |
549 | ············var pm = PmFactory.NewPersistenceManager(); |
550 | |
551 | ············VtAndEtContainerDerived cont = new VtAndEtContainerDerived(); |
552 | ············cont.Init(); |
553 | ············pm.MakePersistent(cont); |
554 | ············pm.Save(); |
555 | ············pm.UnloadCache(); |
556 | ············IList l = pm.GetClassExtent(typeof(VtAndEtContainerDerived)); |
557 | ············Assert.That(1 ==··l.Count, "Anzahl Container stimmt nicht"); |
558 | ············cont = (VtAndEtContainerDerived) l[0]; |
559 | ············AssertVtAndEtContainer(cont);········ |
560 | ········} |
561 | |
562 | |
563 | ········void AssertVtAndEtContainer(VtAndEtContainer cont) |
564 | ········{ |
565 | ············Assert.That(0x55 ==··cont.PropValType.ByteVar, "ByteVar falsch #1"); |
566 | ············Assert.That(true ==·· cont.PropValType.BoolVar, "BoolVar falsch #1"); |
567 | ············Assert.That(12.34m ==··cont.PropValType.DecVar, "DecVar falsch #1"); |
568 | #if !FIREBIRD && !POSTGRE |
569 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.PropValType.DateTimeVar, "DateTimeVar falsch #1"); |
570 | #else |
571 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.PropValType.DateTimeVar, "DateTimeVar falsch #1"); |
572 | #endif |
573 | #if SQLITE |
574 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
575 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
576 | #else |
577 | ············Assert.That(12345.123456 ==··cont.PropValType.DoubleVar, "DoubleVar falsch #1"); |
578 | ············Assert.That(12345.1f ==··cont.PropValType.FloatVar, "FloatVar falsch #1"); |
579 | #endif |
580 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.PropValType.GuidVar, "GuidVar falsch #1"); |
581 | ············Assert.That(0x1234 ==··cont.PropValType.Int16Var, "Int16Var falsch #1"); |
582 | ············Assert.That(0x12341234 ==··cont.PropValType.Int32Var, "Int32Var falsch #1"); |
583 | ············Assert.That(0x143214321 ==··cont.PropValType.Int64Var, "Int64Var falsch #1"); |
584 | ············Assert.That("Teststring" ==··cont.PropValType.StringVar, "StringVar falsch #1"); |
585 | ············Assert.That(0xabc ==··cont.PropValType.Uint16Var, "Uint16Var falsch #1"); |
586 | ············Assert.That(0x12341234 ==··cont.PropValType.Uint32Var, "Uint32Var falsch #1"); |
587 | ············Assert.That(0x143214321 ==··cont.PropValType.Uint64Var, "Uint64Var falsch #1"); |
588 | ············Assert.That(EnumType.zwei ==··cont.PropValType.EnumVar, "EnumVar falsch #1"); |
589 | ············Assert.That(Guid.Empty ==··cont.PropValType.EmptyGuidVar, "EmptyGuidVar falsch #1"); |
590 | ············Assert.That(DateTime.MinValue ==··cont.PropValType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #1"); |
591 | ············Assert.That(cont.PropValType.NullString == null, "Empty String falsch #1"); |
592 | |
593 | ············Assert.That(0x55 ==··cont.PubValType.ByteVar, "ByteVar falsch #2"); |
594 | ············Assert.That(true ==·· cont.PubValType.BoolVar, "BoolVar falsch #2"); |
595 | ············Assert.That(12.34m ==··cont.PubValType.DecVar, "DecVar falsch #2"); |
596 | #if !FIREBIRD && !POSTGRE |
597 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.PubValType.DateTimeVar, "DateTimeVar falsch #2"); |
598 | #else |
599 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.PubValType.DateTimeVar, "DateTimeVar falsch #2"); |
600 | #endif |
601 | #if SQLITE |
602 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
603 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
604 | #else |
605 | ············Assert.That(12345.123456 ==··cont.PubValType.DoubleVar, "DoubleVar falsch #2"); |
606 | ············Assert.That(12345.1f ==··cont.PubValType.FloatVar, "FloatVar falsch #2"); |
607 | #endif |
608 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.PubValType.GuidVar, "GuidVar falsch #2"); |
609 | ············Assert.That(0x1234 ==··cont.PubValType.Int16Var, "Int16Var falsch #2"); |
610 | ············Assert.That(0x12341234 ==··cont.PubValType.Int32Var, "Int32Var falsch #2"); |
611 | ············Assert.That(0x143214321 ==··cont.PubValType.Int64Var, "Int64Var falsch #2"); |
612 | ············Assert.That("Teststring" ==··cont.PubValType.StringVar, "StringVar falsch #2"); |
613 | ············Assert.That(0xabc ==··cont.PubValType.Uint16Var, "Uint16Var falsch #2"); |
614 | ············Assert.That(0x12341234 ==··cont.PubValType.Uint32Var, "Uint32Var falsch #2"); |
615 | ············Assert.That(0x143214321 ==··cont.PubValType.Uint64Var, "Uint64Var falsch #2"); |
616 | ············Assert.That(EnumType.zwei ==··cont.PubValType.EnumVar, "EnumVar falsch #2"); |
617 | ············Assert.That(Guid.Empty ==··cont.PubValType.EmptyGuidVar, "EmptyGuidVar falsch #2"); |
618 | ············Assert.That(DateTime.MinValue ==··cont.PubValType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #2"); |
619 | ············Assert.That(cont.PubValType.NullString == null, "Empty String falsch #1"); |
620 | |
621 | ············Assert.That(0x55 ==··cont.EmbeddedType.ByteVar, "ByteVar falsch #3"); |
622 | ············Assert.That(true ==·· cont.EmbeddedType.BoolVar, "BoolVar falsch #3"); |
623 | ············Assert.That(12.34m ==··cont.EmbeddedType.DecVar, "DecVar falsch #3"); |
624 | #if !FIREBIRD && !POSTGRE |
625 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.EmbeddedType.DateTimeVar, "DateTimeVar falsch #2"); |
626 | #else |
627 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.EmbeddedType.DateTimeVar, "DateTimeVar falsch #2"); |
628 | #endif |
629 | #if SQLITE |
630 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
631 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
632 | #else |
633 | ············Assert.That(12345.123456 ==··cont.EmbeddedType.DoubleVar, "DoubleVar falsch #3"); |
634 | ············Assert.That(12345.1f ==··cont.EmbeddedType.FloatVar, "FloatVar falsch #3"); |
635 | #endif |
636 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.EmbeddedType.GuidVar, "GuidVar falsch #3"); |
637 | ············Assert.That(0x1234 ==··cont.EmbeddedType.Int16Var, "Int16Var falsch #3"); |
638 | ············Assert.That(0x12341234 ==··cont.EmbeddedType.Int32Var, "Int32Var falsch #3"); |
639 | ············Assert.That(0x143214321 ==··cont.EmbeddedType.Int64Var, "Int64Var falsch #3"); |
640 | ············Assert.That("Teststring" ==··cont.EmbeddedType.StringVar, "StringVar falsch #3"); |
641 | ············Assert.That(0xabc ==··cont.EmbeddedType.Uint16Var, "Uint16Var falsch #3"); |
642 | ············Assert.That(0x12341234 ==··cont.EmbeddedType.Uint32Var, "Uint32Var falsch #3"); |
643 | ············Assert.That(0x143214321 ==··cont.EmbeddedType.Uint64Var, "Uint64Var falsch #3"); |
644 | ············Assert.That(EnumType.drei ==··cont.EmbeddedType.EnumVar, "EnumVar falsch #3"); |
645 | ············Assert.That(Guid.Empty ==··cont.EmbeddedType.EmptyGuidVar, "EmptyGuidVar falsch #3"); |
646 | ············Assert.That(DateTime.MinValue ==··cont.EmbeddedType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #3"); |
647 | ············Assert.That(cont.EmbeddedType.NullString == null, "Empty String falsch #1"); |
648 | ········} |
649 | ····} |
650 | } |
651 |
New Commit (60aa080)
1 | // |
2 | // Copyright (c) 2002-2016 Mirko Matytschak |
3 | // (www.netdataobjects.de) |
4 | // |
5 | // Author: Mirko Matytschak |
6 | // |
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
11 | // conditions: |
12 | |
13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
14 | // of the Software. |
15 | // |
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. |
21 | |
22 | |
23 | using System; |
24 | using System.Reflection; |
25 | using System.Collections; |
26 | using DataTypeTestClasses; |
27 | using NDO; |
28 | using NDO.Mapping; |
29 | using NUnit.Framework; |
30 | using NDO.Query; |
31 | using System.Linq; |
32 | |
33 | namespace NdoUnitTests |
34 | { |
35 | ····[TestFixture] |
36 | public class DataTypeTest : NDOTest |
37 | ····{ |
38 | ········[SetUp] |
39 | ········public void Setup() |
40 | ········{ |
41 | ········} |
42 | |
43 | ········[TearDown] |
44 | ········public void TearDown() |
45 | ········{ |
46 | ············var pm = PmFactory.NewPersistenceManager(); |
47 | |
48 | ············IList l = pm.GetClassExtent(typeof(DataContainer), true); |
49 | ············if (l.Count > 0) |
50 | ············{ |
51 | ················pm.Delete( l ); |
52 | ················pm.Save(); |
53 | ············} |
54 | ············l = pm.GetClassExtent( typeof( DataContainerDerived ), true ); |
55 | ············if (l.Count > 0) |
56 | ············{ |
57 | ················pm.Delete( l ); |
58 | ················pm.Save(); |
59 | ············} |
60 | ············l = pm.GetClassExtent( typeof( VtAndEtContainer ), true ); |
61 | ············if (l.Count > 0) |
62 | ············{ |
63 | ················pm.Delete( l ); |
64 | ················pm.Save(); |
65 | ············} |
66 | ············l = pm.GetClassExtent( typeof( VtAndEtContainerDerived ), true ); |
67 | ············if (l.Count > 0) |
68 | ············{ |
69 | ················pm.Delete( l ); |
70 | ················pm.Save(); |
71 | ············} |
72 | ············l = pm.GetClassExtent( typeof( NullableDataContainer ), true ); |
73 | ············if (l.Count > 0) |
74 | ············{ |
75 | ················pm.Delete( l ); |
76 | ················pm.Save(); |
77 | ············} |
78 | ············l = pm.GetClassExtent( typeof( NullableDataContainerDerived ), true ); |
79 | ············if (l.Count > 0) |
80 | ············{ |
81 | ················pm.Delete( l ); |
82 | ················pm.Save(); |
83 | ············} |
84 | |
85 | ············pm.Close(); |
86 | ········} |
87 | |
88 | ········[Test] |
89 | ········public void TestDataContainer() |
90 | ········{ |
91 | ············DataContainer dc = new DataContainer(); |
92 | |
93 | ············dc.Init(); |
94 | |
95 | ············var pm = PmFactory.NewPersistenceManager(); |
96 | |
97 | ············pm.MakePersistent(dc); |
98 | ············pm.Save(); |
99 | ············pm.UnloadCache(); |
100 | ············IList l = pm.GetClassExtent(typeof(DataContainer)); |
101 | ············Assert.That(1 ==··l.Count, "Ein Objekt sollte in der Liste sein"); |
102 | ············dc = (DataContainer) l[0]; |
103 | ············AssertDataContainer(dc); |
104 | ········} |
105 | |
106 | ········[Test] |
107 | ········public void TestNullableDataContainer() |
108 | ········{ |
109 | ············NullableDataContainer ndc = new NullableDataContainer(); |
110 | ············ndc.Init(); |
111 | |
112 | ············var pm = PmFactory.NewPersistenceManager(); |
113 | ············pm.MakePersistent(ndc); |
114 | ············pm.Save(); |
115 | ············pm.UnloadCache(); |
116 | ············ndc = new NDOQuery<NullableDataContainer>(pm, null, false).ExecuteSingle(true); |
117 | ············AssertNullableDataContainer(ndc); |
118 | ········} |
119 | |
120 | |
121 | ········[Test] |
122 | ········public void TestNullableDataContainerDerived() |
123 | ········{ |
124 | ············NullableDataContainerDerived ndc = new NullableDataContainerDerived(); |
125 | ············ndc.Init(); |
126 | |
127 | ············var pm = PmFactory.NewPersistenceManager(); |
128 | ············pm.MakePersistent(ndc); |
129 | ············pm.Save(); |
130 | ············pm.UnloadCache(); |
131 | ············ndc = new NDOQuery<NullableDataContainerDerived>(pm, null, false).ExecuteSingle(true); |
132 | ············AssertNullableDataContainer(ndc); |
133 | ········} |
134 | |
135 | ········private bool FieldWithNameExists(Class cl, string name) |
136 | ········{ |
137 | ············foreach(Field field in cl.Fields) |
138 | ················if (field.Name.IndexOf(name) > -1) |
139 | ····················return true; |
140 | ············return false; |
141 | ········} |
142 | |
143 | ········//public void TestDataContainerEvent() |
144 | ········//{ |
145 | ········//····Type t = typeof(DataContainer.QueryHelper); |
146 | |
147 | ········//····Class cl = pm.NDOMapping.FindClass(typeof(DataContainer)); |
148 | ········//····Assert.That(cl.FindField("TestEvent") == null, "Events should not be mapped"); |
149 | |
150 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
151 | ········//····PropertyInfo pi = t.GetProperty("TestEvent"); |
152 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
153 | |
154 | ········//····//---- |
155 | ········//····t = typeof(DataContainerDerived.QueryHelper); |
156 | |
157 | ········//····cl = pm.NDOMapping.FindClass(typeof(DataContainerDerived)); |
158 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
159 | |
160 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
161 | ········//····pi = t.GetProperty("TestEvent"); |
162 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
163 | |
164 | ········//····//---- |
165 | ········//····t = typeof(VtAndEtContainer.QueryHelper); |
166 | |
167 | ········//····cl = pm.NDOMapping.FindClass(typeof(VtAndEtContainer)); |
168 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
169 | |
170 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
171 | ········//····pi = t.GetProperty("TestEvent"); |
172 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
173 | |
174 | ········//····//---- |
175 | ········//····t = typeof(VtAndEtContainerDerived.QueryHelper); |
176 | |
177 | ········//····cl = pm.NDOMapping.FindClass(typeof(VtAndEtContainerDerived)); |
178 | ········//····Assert.That(!FieldWithNameExists(cl, "TestEvent"), "Events should not be mapped"); |
179 | |
180 | ········//····Assert.That(t.GetMember("int16Var" != null, BindingFlags.Instance), "Variables should appear in qh"); |
181 | ········//····pi = t.GetProperty("TestEvent"); |
182 | ········//····Assert.That(pi == null, "Events should not appear in qh"); |
183 | |
184 | ········//} |
185 | |
186 | ········[Test] |
187 | ········public void TestDataContainerDerived() |
188 | ········{············ |
189 | ············DataContainerDerived dcd = new DataContainerDerived(); |
190 | ············dcd.Init(); |
191 | ············var pm = PmFactory.NewPersistenceManager(); |
192 | ············pm.MakePersistent(dcd); |
193 | ············pm.Save(); |
194 | ············pm.UnloadCache(); |
195 | ············IList l = pm.GetClassExtent(typeof(DataContainerDerived)); |
196 | ············Assert.That(1 ==··l.Count, "Ein Objekt sollte in der Liste sein"); |
197 | ············dcd = (DataContainerDerived) l[0]; |
198 | ············AssertDataContainer(dcd); |
199 | ········} |
200 | |
201 | ········bool CheckDouble( double d1, double d2 ) |
202 | ········{ |
203 | ············double eps = Math.Abs(d1 * 1E-6); |
204 | ············return (d1 - eps) <= d2 && d2 <= (d1 + eps); |
205 | ········} |
206 | |
207 | ········bool CheckFloat( float d1, float d2 ) |
208 | ········{ |
209 | ············double eps = Math.Abs( d1 * 1E-6 ); |
210 | ············return (d1 - eps) <= d2 && d2 <= (d1 + eps); |
211 | ········} |
212 | |
213 | ········void AssertDataContainer(DataContainer dc) |
214 | ········{ |
215 | ············Assert.That(true ==··dc.BoolVar, "BoolVar falsc h"); |
216 | ············Assert.That(127 ==··dc.ByteVar, "ByteVar falsch"); |
217 | ············Assert.That("Test" ==··dc.StringVar, "StringVar falsch"); |
218 | ············Assert.That(DateTime.Now.Date ==··dc.DateTimeVar.Date, "DateTimeVar falsch"); |
219 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··dc.GuidVar, "GuidVar falsch"); |
220 | ············Assert.That(1231.12m ==··dc.DecVar, "DecVar falsch"); |
221 | ············Assert.That(int.MaxValue ==··dc.Int32Var, "Int32Var falsch"); |
222 | ············Assert.That((uint) int.MaxValue ==··dc.Uint32Var, "UInt32Var falsch"); |
223 | #if SQLITE |
224 | ············Assert.That(CheckDouble(1E28, dc.DoubleVar), "DoubleVar falsch"); |
225 | ············Assert.That(CheckFloat(1E14F, dc.FloatVar), "FloatVar falsch"); |
226 | #else |
227 | ············Assert.That(1E28 ==··dc.DoubleVar, "DoubleVar falsch"); |
228 | ············Assert.That(1E14F ==··dc.FloatVar, "FloatVar falsch"); |
229 | #endif |
230 | ············Assert.That(0x1ffffffff ==··dc.Int64Var, "Int64Var falsch"); |
231 | ············Assert.That(short.MaxValue ==··dc.Int16Var, "Int16Var falsch"); |
232 | ············Assert.That((ushort) short.MaxValue ==··dc.Uint16Var, "UInt16Var falsch"); |
233 | ············Assert.That(0x1ffffffff ==··dc.Uint64Var, "UInt64Var falsch"); |
234 | ············Assert.That(EnumType.drei ==··dc.EnumVar, "EnumType falsch"); |
235 | ············Assert.That(Guid.Empty ==··dc.EmptyGuidVar, "Empty Guid falsch"); |
236 | ············Assert.That(DateTime.MinValue ==··dc.EmptyDateTimeVar, "Empty DateTime falsch"); |
237 | ············Assert.That(dc.NullString == null, "Empty String falsch"); |
238 | ········} |
239 | |
240 | |
241 | ········void AssertNullableDataContainer(NullableDataContainer dc) |
242 | ········{ |
243 | ············Assert.That(true ==··dc.BoolVar, "BoolVar falsch"); |
244 | ············Assert.That(127 ==··dc.ByteVar, "ByteVar falsch"); |
245 | ············Assert.That(DateTime.Now.Date ==··dc.DateTimeVar.Value.Date, "DateTimeVar falsch"); |
246 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··dc.GuidVar, "GuidVar falsch"); |
247 | ············Assert.That(1231.12m ==··dc.DecVar, "DecVar falsch"); |
248 | ············Assert.That(int.MaxValue ==··dc.Int32Var, "Int32Var falsch"); |
249 | ············Assert.That((uint)int.MaxValue ==··dc.Uint32Var, "UInt32Var falsch"); |
250 | #if SQLITE |
251 | ············Assert.That(CheckDouble(1E28, dc.DoubleVar.Value), "DoubleVar falsch"); |
252 | ············Assert.That(CheckFloat(1E14F, dc.FloatVar.Value), "FloatVar falsch"); |
253 | #else |
254 | ············Assert.That(1E28 ==··dc.DoubleVar.Value, "DoubleVar falsch"); |
255 | ············Assert.That(1E14F ==··dc.FloatVar.Value, "FloatVar falsch"); |
256 | #endif |
257 | ············Assert.That(0x1ffffffff ==··dc.Int64Var, "Int64Var falsch"); |
258 | ············Assert.That(short.MaxValue ==··dc.Int16Var, "Int16Var falsch"); |
259 | ············Assert.That((ushort)short.MaxValue ==··dc.Uint16Var, "UInt16Var falsch"); |
260 | ············Assert.That(0x1ffffffff ==··dc.Uint64Var, "UInt64Var falsch"); |
261 | ············Assert.That(EnumType.drei ==··dc.EnumVar, "EnumType falsch"); |
262 | |
263 | #if !ACCESS··// Access initializes bool vars always with False |
264 | ············Assert.That(!dc.BoolEmptyVar.HasValue, "BoolEmptyVar falsch"); |
265 | #endif |
266 | ············Assert.That(!dc.ByteEmptyVar.HasValue, "ByteVar falsch"); |
267 | ············Assert.That(!dc.DateTimeEmptyVar.HasValue, "DateTimeVar falsch"); |
268 | ············Assert.That(!dc.GuidEmptyVar.HasValue, "GuidVar falsch"); |
269 | ············Assert.That(!dc.DecEmptyVar.HasValue, "DecVar falsch"); |
270 | ············Assert.That(!dc.Int32EmptyVar.HasValue, "Int32Var falsch"); |
271 | ············Assert.That(!dc.Uint32EmptyVar.HasValue, "UInt32Var falsch"); |
272 | ············Assert.That(!dc.DoubleEmptyVar.HasValue, "DoubleVar falsch"); |
273 | ············Assert.That(!dc.FloatEmptyVar.HasValue, "FloatVar falsch"); |
274 | ············Assert.That(!dc.Int64EmptyVar.HasValue, "Int64Var falsch"); |
275 | ············Assert.That(!dc.Int16EmptyVar.HasValue, "Int16Var falsch"); |
276 | ············Assert.That(!dc.Uint16EmptyVar.HasValue, "UInt16Var falsch"); |
277 | ············Assert.That(!dc.Uint64EmptyVar.HasValue, "UInt64Var falsch"); |
278 | ············Assert.That(!dc.EnumEmptyVar.HasValue, "EnumType falsch"); |
279 | |
280 | ········} |
281 | |
282 | ········[Test] |
283 | ········public void QueryWithEmptyGuidParameterSearchesForNull() |
284 | ········{ |
285 | ············var pm = PmFactory.NewPersistenceManager(); |
286 | |
287 | ············DataContainer dc = new DataContainer(); |
288 | ············dc.Init(); |
289 | ············dc.GuidVar = Guid.Empty; |
290 | ············pm.MakePersistent( dc ); |
291 | ············pm.Save(); |
292 | ············pm.UnloadCache(); |
293 | |
294 | ············var q = new NDOQuery<DataContainer>(pm, "guidVar = {0}"); |
295 | ············q.Parameters.Add( Guid.Empty ); |
296 | ············var list = q.Execute(); |
297 | ············Assert.That(Guid.Empty ==··list.First().GuidVar ); |
298 | ········} |
299 | |
300 | ········[Test] |
301 | ········public void QueryWithDateTimeMinValueParameterSearchesForNull() |
302 | ········{ |
303 | ············var pm = PmFactory.NewPersistenceManager(); |
304 | |
305 | ············DataContainer dc = new DataContainer(); |
306 | |
307 | ············dc.Init(); |
308 | ············dc.DateTimeVar = DateTime.MinValue; |
309 | ············pm.MakePersistent( dc ); |
310 | ············pm.Save(); |
311 | ············pm.UnloadCache(); |
312 | |
313 | ············var q = new NDOQuery<DataContainer>(pm, "dateTimeVar = {0}"); |
314 | ············q.Parameters.Add( DateTime.MinValue ); |
315 | ············var list = q.Execute(); |
316 | ············Assert.That(DateTime.MinValue ==··list.First().DateTimeVar ); |
317 | ········} |
318 | |
319 | |
320 | ········[Test] |
321 | ········public void ParametersTest() |
322 | ········{ |
323 | ············var pm = PmFactory.NewPersistenceManager(); |
324 | |
325 | ············DataContainer dc = new DataContainer(); |
326 | ············dc.Init(); |
327 | ············pm.MakePersistent(dc); |
328 | ············pm.Save(); |
329 | ············IQuery q = new NDOQuery<DataContainer>(pm, "boolVar" + " = " + "{0}"); |
330 | #if !ORACLE |
331 | ············q.Parameters.Add(true); |
332 | #else |
333 | ············q.Parameters.Add(1); |
334 | #endif |
335 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
336 | ············ |
337 | ············q = new NDOQuery<DataContainer>(pm, "byteVar" + " = " + "{0}"); |
338 | ············q.Parameters.Add((byte)127); |
339 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
340 | |
341 | ············q = new NDOQuery<DataContainer>(pm, "dateTimeVar" + " <= " + "{0}"); |
342 | ············q.Parameters.Add(DateTime.Now); |
343 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
344 | |
345 | ············q = new NDOQuery<DataContainer>(pm, "guidVar" + " = " + "{0}"); |
346 | ············q.Parameters.Add(new Guid("12341234-1234-1234-1234-123412341234")); |
347 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
348 | |
349 | ············q = new NDOQuery<DataContainer>(pm, "decVar" + " = " + "{0}"); |
350 | ············q.Parameters.Add(1231.12m); |
351 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
352 | |
353 | ············q = new NDOQuery<DataContainer>(pm, "doubleVar" + " = " + "{0}"); |
354 | ············q.Parameters.Add(1E28); |
355 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
356 | |
357 | ············q = new NDOQuery<DataContainer>(pm, "enumVar" + " = " + "{0}"); |
358 | ············q.Parameters.Add(EnumType.drei); |
359 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
360 | |
361 | #if !MYSQL |
362 | ············q = new NDOQuery<DataContainer>(pm, "floatVar" + " = " + "{0}"); |
363 | ············q.Parameters.Add(1E14F); |
364 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
365 | #endif |
366 | ············q = new NDOQuery<DataContainer>(pm, "int16Var" + " = " + "{0}"); |
367 | ············q.Parameters.Add(short.MaxValue); |
368 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
369 | |
370 | ············q = new NDOQuery<DataContainer>(pm, "int32Var" + " = " + "{0}"); |
371 | ············q.Parameters.Add(int.MaxValue); |
372 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
373 | |
374 | ············q = new NDOQuery<DataContainer>(pm, "int64Var" + " = " + "{0}"); |
375 | ············q.Parameters.Add(0x1ffffffff); |
376 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
377 | |
378 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + " = " + "{0}"); |
379 | ············q.Parameters.Add("Test"); |
380 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
381 | |
382 | ············q = new NDOQuery<DataContainer>(pm, "uint16Var" + " = " + "{0}"); |
383 | ············q.Parameters.Add((ushort) short.MaxValue); |
384 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
385 | |
386 | ············q = new NDOQuery<DataContainer>(pm, "uint32Var" + " = " + "{0}"); |
387 | ············q.Parameters.Add((uint) int.MaxValue); |
388 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
389 | |
390 | ············q = new NDOQuery<DataContainer>(pm, "uint64Var" + " = " + "{0}"); |
391 | ············q.Parameters.Add(0x1ffffffff); |
392 | ············dc = (DataContainer) q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
393 | |
394 | ············dc.StringVar = ""; |
395 | ············pm.Save(); |
396 | |
397 | #if ORACLE |
398 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + Query.Op.IsNull); |
399 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
400 | #else |
401 | ············q = new NDOQuery<DataContainer>(pm, "stringVar" + " = " + "{0}"); |
402 | ············q.Parameters.Add(""); |
403 | ············q.ExecuteSingle(true);··// If something goes wrong, an Exception will be thrown. |
404 | #endif |
405 | |
406 | ········} |
407 | |
408 | |
409 | #if nix |
410 | ········[Test] |
411 | ········public void TestQueryHelpers() |
412 | ········{············ |
413 | ············Assert.That("propValType.ByteVar" ==··"propValType.ByteVar", "ByteVar falsch #1"); |
414 | ············Assert.That("propValType.BoolVar" ==·· "propValType.BoolVar", "BoolVar falsch #1"); |
415 | ············Assert.That("propValType.DecVar" ==··"propValType.DecVar", "DecVar falsch #1"); |
416 | ············Assert.That("propValType.DateTimeVar" ==··"propValType.DateTimeVar", "DateTimeVar falsch #1"); |
417 | ············Assert.That("propValType.DoubleVar" ==··"propValType.DoubleVar", "DoubleVar falsch #1"); |
418 | ············Assert.That("propValType.FloatVar" ==··"propValType.FloatVar", "FloatVar falsch #1"); |
419 | ············Assert.That("propValType.GuidVar" ==··"propValType.GuidVar", "GuidVar falsch #1"); |
420 | ············Assert.That("propValType.Int16Var" ==··"propValType.Int16Var", "Int16Var falsch #1"); |
421 | ············Assert.That("propValType.Int32Var" ==··"propValType.Int32Var", "Int32Var falsch #1"); |
422 | ············Assert.That("propValType.Int64Var" ==··"propValType.Int64Var", "Int64Var falsch #1"); |
423 | ············Assert.That("propValType.StringVar" ==··"propValType.StringVar", "StringVar falsch #1"); |
424 | ············Assert.That("propValType.Uint16Var" ==··"propValType.Uint16Var", "Uint16Var falsch #1"); |
425 | ············Assert.That("propValType.Uint32Var" ==··"propValType.Uint32Var", "Uint32Var falsch #1"); |
426 | ············Assert.That("propValType.Uint64Var" ==··"propValType.Uint64Var", "Uint64Var falsch #1"); |
427 | ············Assert.That("propValType.EnumVar" ==··"propValType.EnumVar", "EnumVar falsch #1"); |
428 | |
429 | ············Assert.That("pubValType.ByteVar" ==··"pubValType.ByteVar", "ByteVar falsch #2"); |
430 | ············Assert.That("pubValType.BoolVar" ==·· "pubValType.BoolVar", "BoolVar falsch #2"); |
431 | ············Assert.That("pubValType.DecVar" ==··"pubValType.DecVar", "DecVar falsch #2"); |
432 | ············Assert.That("pubValType.DateTimeVar" ==··"pubValType.DateTimeVar", "DateTimeVar falsch #2"); |
433 | ············Assert.That("pubValType.DoubleVar" ==··"pubValType.DoubleVar", "DoubleVar falsch #2"); |
434 | ············Assert.That("pubValType.FloatVar" ==··"pubValType.FloatVar", "FloatVar falsch #2"); |
435 | ············Assert.That("pubValType.GuidVar" ==··"pubValType.GuidVar", "GuidVar falsch #2"); |
436 | ············Assert.That("pubValType.Int16Var" ==··"pubValType.Int16Var", "Int16Var falsch #2"); |
437 | ············Assert.That("pubValType.Int32Var" ==··"pubValType.Int32Var", "Int32Var falsch #2"); |
438 | ············Assert.That("pubValType.Int64Var" ==··"pubValType.Int64Var", "Int64Var falsch #2"); |
439 | ············Assert.That("pubValType.StringVar" ==··"pubValType.StringVar", "StringVar falsch #2"); |
440 | ············Assert.That("pubValType.Uint16Var" ==··"pubValType.Uint16Var", "Uint16Var falsch #2"); |
441 | ············Assert.That("pubValType.Uint32Var" ==··"pubValType.Uint32Var", "Uint32Var falsch #2"); |
442 | ············Assert.That("pubValType.Uint64Var" ==··"pubValType.Uint64Var", "Uint64Var falsch #2"); |
443 | ············Assert.That("pubValType.EnumVar" ==··"pubValType.EnumVar", "EnumVar falsch #2"); |
444 | |
445 | ············Assert.That("embeddedType.byteVar" ==··"embeddedType.byteVar", "ByteVar falsch #3"); |
446 | ············Assert.That("embeddedType.boolVar" ==·· "embeddedType.boolVar", "BoolVar falsch #3"); |
447 | ············Assert.That("embeddedType.decVar" ==··"embeddedType.decVar", "DecVar falsch #3"); |
448 | ············Assert.That("embeddedType.dateTimeVar" ==··"embeddedType.dateTimeVar", "DateTimeVar falsch #3"); |
449 | ············Assert.That("embeddedType.doubleVar" ==··"embeddedType.doubleVar", "DoubleVar falsch #3"); |
450 | ············Assert.That("embeddedType.floatVar" ==··"embeddedType.floatVar", "FloatVar falsch #3"); |
451 | ············Assert.That("embeddedType.guidVar" ==··"embeddedType.guidVar", "GuidVar falsch #3"); |
452 | ············Assert.That("embeddedType.int16Var" ==··"embeddedType.int16Var", "Int16Var falsch #3"); |
453 | ············Assert.That("embeddedType.int32Var" ==··"embeddedType.int32Var", "Int32Var falsch #3"); |
454 | ············Assert.That("embeddedType.int64Var" ==··"embeddedType.int64Var", "Int64Var falsch #3"); |
455 | ············Assert.That("embeddedType.stringVar" ==··"embeddedType.stringVar", "StringVar falsch #3"); |
456 | ············Assert.That("embeddedType.uint16Var" ==··"embeddedType.uint16Var", "Uint16Var falsch #3"); |
457 | ············Assert.That("embeddedType.uint32Var" ==··"embeddedType.uint32Var", "Uint32Var falsch #3"); |
458 | ············Assert.That("embeddedType.uint64Var" ==··"embeddedType.uint64Var", "Uint64Var falsch #3"); |
459 | ············Assert.That("embeddedType.enumVar" ==··"embeddedType.enumVar", "Uint64Var falsch #3"); |
460 | |
461 | ············VtAndEtContainerDerived.QueryHelper "" = new VtAndEtContainerDerived.QueryHelper(); |
462 | ············ |
463 | ············Assert.That("propValType.ByteVar" ==··".propValType.ByteVar", "ByteVar falsch #1"); |
464 | ············Assert.That("propValType.BoolVar" ==·· ".propValType.BoolVar", "BoolVar falsch #1"); |
465 | ············Assert.That("propValType.DecVar" ==··".propValType.DecVar", "DecVar falsch #1"); |
466 | ············Assert.That("propValType.DateTimeVar" ==··".propValType.DateTimeVar", "DateTimeVar falsch #1"); |
467 | ············Assert.That("propValType.DoubleVar" ==··".propValType.DoubleVar", "DoubleVar falsch #1"); |
468 | ············Assert.That("propValType.FloatVar" ==··".propValType.FloatVar", "FloatVar falsch #1"); |
469 | ············Assert.That("propValType.GuidVar" ==··".propValType.GuidVar", "GuidVar falsch #1"); |
470 | ············Assert.That("propValType.Int16Var" ==··".propValType.Int16Var", "Int16Var falsch #1"); |
471 | ············Assert.That("propValType.Int32Var" ==··".propValType.Int32Var", "Int32Var falsch #1"); |
472 | ············Assert.That("propValType.Int64Var" ==··".propValType.Int64Var", "Int64Var falsch #1"); |
473 | ············Assert.That("propValType.StringVar" ==··".propValType.StringVar", "StringVar falsch #1"); |
474 | ············Assert.That("propValType.Uint16Var" ==··".propValType.Uint16Var", "Uint16Var falsch #1"); |
475 | ············Assert.That("propValType.Uint32Var" ==··".propValType.Uint32Var", "Uint32Var falsch #1"); |
476 | ············Assert.That("propValType.Uint64Var" ==··".propValType.Uint64Var", "Uint64Var falsch #1"); |
477 | ············Assert.That("propValType.EnumVar" ==··".propValType.EnumVar", "EnumVar falsch #1"); |
478 | |
479 | ············Assert.That("pubValType.ByteVar" ==··".pubValType.ByteVar", "ByteVar falsch #2"); |
480 | ············Assert.That("pubValType.BoolVar" ==·· ".pubValType.BoolVar", "BoolVar falsch #2"); |
481 | ············Assert.That("pubValType.DecVar" ==··".pubValType.DecVar", "DecVar falsch #2"); |
482 | ············Assert.That("pubValType.DateTimeVar" ==··".pubValType.DateTimeVar", "DateTimeVar falsch #2"); |
483 | ············Assert.That("pubValType.DoubleVar" ==··".pubValType.DoubleVar", "DoubleVar falsch #2"); |
484 | ············Assert.That("pubValType.FloatVar" ==··".pubValType.FloatVar", "FloatVar falsch #2"); |
485 | ············Assert.That("pubValType.GuidVar" ==··".pubValType.GuidVar", "GuidVar falsch #2"); |
486 | ············Assert.That("pubValType.Int16Var" ==··".pubValType.Int16Var", "Int16Var falsch #2"); |
487 | ············Assert.That("pubValType.Int32Var" ==··".pubValType.Int32Var", "Int32Var falsch #2"); |
488 | ············Assert.That("pubValType.Int64Var" ==··".pubValType.Int64Var", "Int64Var falsch #2"); |
489 | ············Assert.That("pubValType.StringVar" ==··".pubValType.StringVar", "StringVar falsch #2"); |
490 | ············Assert.That("pubValType.Uint16Var" ==··".pubValType.Uint16Var", "Uint16Var falsch #2"); |
491 | ············Assert.That("pubValType.Uint32Var" ==··".pubValType.Uint32Var", "Uint32Var falsch #2"); |
492 | ············Assert.That("pubValType.Uint64Var" ==··".pubValType.Uint64Var", "Uint64Var falsch #2"); |
493 | ············Assert.That("pubValType.EnumVar" ==··".pubValType.EnumVar", "EnumVar falsch #2"); |
494 | |
495 | ············Assert.That("embeddedType.byteVar" ==··".embeddedType.byteVar", "ByteVar falsch #3"); |
496 | ············Assert.That("embeddedType.boolVar" ==·· ".embeddedType.boolVar", "BoolVar falsch #3"); |
497 | ············Assert.That("embeddedType.decVar" ==··".embeddedType.decVar", "DecVar falsch #3"); |
498 | ············Assert.That("embeddedType.dateTimeVar" ==··".embeddedType.dateTimeVar", "DateTimeVar falsch #3"); |
499 | ············Assert.That("embeddedType.doubleVar" ==··".embeddedType.doubleVar", "DoubleVar falsch #3"); |
500 | ············Assert.That("embeddedType.floatVar" ==··".embeddedType.floatVar", "FloatVar falsch #3"); |
501 | ············Assert.That("embeddedType.guidVar" ==··".embeddedType.guidVar", "GuidVar falsch #3"); |
502 | ············Assert.That("embeddedType.int16Var" ==··".embeddedType.int16Var", "Int16Var falsch #3"); |
503 | ············Assert.That("embeddedType.int32Var" ==··".embeddedType.int32Var", "Int32Var falsch #3"); |
504 | ············Assert.That("embeddedType.int64Var" ==··".embeddedType.int64Var", "Int64Var falsch #3"); |
505 | ············Assert.That("embeddedType.stringVar" ==··".embeddedType.stringVar", "StringVar falsch #3"); |
506 | ············Assert.That("embeddedType.uint16Var" ==··".embeddedType.uint16Var", "Uint16Var falsch #3"); |
507 | ············Assert.That("embeddedType.uint32Var" ==··".embeddedType.uint32Var", "Uint32Var falsch #3"); |
508 | ············Assert.That("embeddedType.uint64Var" ==··".embeddedType.uint64Var", "Uint64Var falsch #3"); |
509 | ············Assert.That("embeddedType.enumVar" ==··".embeddedType.enumVar", "Uint64Var falsch #3"); |
510 | |
511 | ········} |
512 | #endif |
513 | |
514 | ········[Test] |
515 | ········public void TestPrimitiveTypeMethodCall() |
516 | ········{ |
517 | ············PrimitiveTypeMethodCaller mc1 = new PrimitiveTypeMethodCaller(); |
518 | ············PrimitiveTypeMethodCaller mc2 = new PrimitiveTypeMethodCaller(); |
519 | ············Assert.That(0 ==··mc1.StringTest(mc2), "Result must be 0 #1"); |
520 | ············Assert.That(0 ==··mc1.DoubleTest(mc2), "Result must be 0 #2"); |
521 | ············Assert.That(0 ==··mc1.DateTimeTest(mc2), "Result must be 0 #3"); |
522 | ············Assert.That(0 ==··mc1.BoolTest(mc2), "Result must be 0 #4"); |
523 | ············Assert.That(0 ==··mc1.IntTest(mc2), "Result must be 0 #5"); |
524 | ········} |
525 | |
526 | ········[Test] |
527 | ········public void TestValueTypeAndEmbeddedType() |
528 | ········{ |
529 | ············var pm = PmFactory.NewPersistenceManager(); |
530 | |
531 | ············Class cl = pm.NDOMapping.FindClass("DataTypeTestClasses.VtAndEtContainer"); |
532 | ············Field f = cl.FindField("embeddedType.doubleVar"); |
533 | ············f.Column.Size = 12; |
534 | ············f.Column.Precision = 7; |
535 | ············VtAndEtContainer cont = new VtAndEtContainer(); |
536 | ············cont.Init(); |
537 | ············pm.MakePersistent(cont); |
538 | ············pm.Save(); |
539 | ············pm.UnloadCache(); |
540 | ············IList l = pm.GetClassExtent(typeof(VtAndEtContainer)); |
541 | ············Assert.That(1 ==··l.Count, "Anzahl Container stimmt nicht"); |
542 | ············cont = (VtAndEtContainer) l[0]; |
543 | ············AssertVtAndEtContainer(cont);········ |
544 | ········} |
545 | |
546 | ········[Test] |
547 | ········public void TestValueTypeAndEmbeddedTypeDerived() |
548 | ········{ |
549 | ············var pm = PmFactory.NewPersistenceManager(); |
550 | |
551 | ············VtAndEtContainerDerived cont = new VtAndEtContainerDerived(); |
552 | ············cont.Init(); |
553 | ············pm.MakePersistent(cont); |
554 | ············pm.Save(); |
555 | ············pm.UnloadCache(); |
556 | ············IList l = pm.GetClassExtent(typeof(VtAndEtContainerDerived)); |
557 | ············Assert.That(1 ==··l.Count, "Anzahl Container stimmt nicht"); |
558 | ············cont = (VtAndEtContainerDerived) l[0]; |
559 | ············AssertVtAndEtContainer(cont);········ |
560 | ········} |
561 | |
562 | |
563 | ········void AssertVtAndEtContainer(VtAndEtContainer cont) |
564 | ········{ |
565 | ············Assert.That(0x55 ==··cont.PropValType.ByteVar, "ByteVar falsch #1"); |
566 | ············Assert.That(true ==·· cont.PropValType.BoolVar, "BoolVar falsch #1"); |
567 | ············Assert.That(12.34m ==··cont.PropValType.DecVar, "DecVar falsch #1"); |
568 | #if !FIREBIRD && !POSTGRE |
569 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.PropValType.DateTimeVar, "DateTimeVar falsch #1"); |
570 | #else |
571 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.PropValType.DateTimeVar, "DateTimeVar falsch #1"); |
572 | #endif |
573 | #if SQLITE |
574 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
575 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
576 | #else |
577 | ············Assert.That(12345.123456 ==··cont.PropValType.DoubleVar, "DoubleVar falsch #1"); |
578 | ············Assert.That(12345.1f ==··cont.PropValType.FloatVar, "FloatVar falsch #1"); |
579 | #endif |
580 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.PropValType.GuidVar, "GuidVar falsch #1"); |
581 | ············Assert.That(0x1234 ==··cont.PropValType.Int16Var, "Int16Var falsch #1"); |
582 | ············Assert.That(0x12341234 ==··cont.PropValType.Int32Var, "Int32Var falsch #1"); |
583 | ············Assert.That(0x143214321 ==··cont.PropValType.Int64Var, "Int64Var falsch #1"); |
584 | ············Assert.That("Teststring" ==··cont.PropValType.StringVar, "StringVar falsch #1"); |
585 | ············Assert.That(0xabc ==··cont.PropValType.Uint16Var, "Uint16Var falsch #1"); |
586 | ············Assert.That(0x12341234 ==··cont.PropValType.Uint32Var, "Uint32Var falsch #1"); |
587 | ············Assert.That(0x143214321 ==··cont.PropValType.Uint64Var, "Uint64Var falsch #1"); |
588 | ············Assert.That(EnumType.zwei ==··cont.PropValType.EnumVar, "EnumVar falsch #1"); |
589 | ············Assert.That(Guid.Empty ==··cont.PropValType.EmptyGuidVar, "EmptyGuidVar falsch #1"); |
590 | ············Assert.That(DateTime.MinValue ==··cont.PropValType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #1"); |
591 | ············Assert.That(cont.PropValType.NullString == null, "Empty String falsch #1"); |
592 | |
593 | ············Assert.That(0x55 ==··cont.PubValType.ByteVar, "ByteVar falsch #2"); |
594 | ············Assert.That(true ==·· cont.PubValType.BoolVar, "BoolVar falsch #2"); |
595 | ············Assert.That(12.34m ==··cont.PubValType.DecVar, "DecVar falsch #2"); |
596 | #if !FIREBIRD && !POSTGRE |
597 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.PubValType.DateTimeVar, "DateTimeVar falsch #2"); |
598 | #else |
599 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.PubValType.DateTimeVar, "DateTimeVar falsch #2"); |
600 | #endif |
601 | #if SQLITE |
602 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
603 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
604 | #else |
605 | ············Assert.That(12345.123456 ==··cont.PubValType.DoubleVar, "DoubleVar falsch #2"); |
606 | ············Assert.That(12345.1f ==··cont.PubValType.FloatVar, "FloatVar falsch #2"); |
607 | #endif |
608 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.PubValType.GuidVar, "GuidVar falsch #2"); |
609 | ············Assert.That(0x1234 ==··cont.PubValType.Int16Var, "Int16Var falsch #2"); |
610 | ············Assert.That(0x12341234 ==··cont.PubValType.Int32Var, "Int32Var falsch #2"); |
611 | ············Assert.That(0x143214321 ==··cont.PubValType.Int64Var, "Int64Var falsch #2"); |
612 | ············Assert.That("Teststring" ==··cont.PubValType.StringVar, "StringVar falsch #2"); |
613 | ············Assert.That(0xabc ==··cont.PubValType.Uint16Var, "Uint16Var falsch #2"); |
614 | ············Assert.That(0x12341234 ==··cont.PubValType.Uint32Var, "Uint32Var falsch #2"); |
615 | ············Assert.That(0x143214321 ==··cont.PubValType.Uint64Var, "Uint64Var falsch #2"); |
616 | ············Assert.That(EnumType.zwei ==··cont.PubValType.EnumVar, "EnumVar falsch #2"); |
617 | ············Assert.That(Guid.Empty ==··cont.PubValType.EmptyGuidVar, "EmptyGuidVar falsch #2"); |
618 | ············Assert.That(DateTime.MinValue ==··cont.PubValType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #2"); |
619 | ············Assert.That(cont.PubValType.NullString == null, "Empty String falsch #1"); |
620 | |
621 | ············Assert.That(0x55 ==··cont.EmbeddedType.ByteVar, "ByteVar falsch #3"); |
622 | ············Assert.That(true ==·· cont.EmbeddedType.BoolVar, "BoolVar falsch #3"); |
623 | ············Assert.That(12.34m ==··cont.EmbeddedType.DecVar, "DecVar falsch #3"); |
624 | #if !FIREBIRD && !POSTGRE |
625 | ············Assert.That(new DateTime(2002, 12, 1, 1, 0, 20) == cont.EmbeddedType.DateTimeVar, "DateTimeVar falsch #2"); |
626 | #else |
627 | ············Assert.That(new DateTime(2002, 12, 1, 0, 0, 0) == cont.EmbeddedType.DateTimeVar, "DateTimeVar falsch #2"); |
628 | #endif |
629 | #if SQLITE |
630 | ············Assert.That( CheckDouble( 12345.123456, cont.PropValType.DoubleVar ), "DoubleVar falsch #1" ); |
631 | ············Assert.That( CheckFloat( 12345.1f, cont.PropValType.FloatVar ), "FloatVar falsch #1" ); |
632 | #else |
633 | ············Assert.That(12345.123456 ==··cont.EmbeddedType.DoubleVar, "DoubleVar falsch #3"); |
634 | ············Assert.That(12345.1f ==··cont.EmbeddedType.FloatVar, "FloatVar falsch #3"); |
635 | #endif |
636 | ············Assert.That(new Guid("12341234-1234-1234-1234-123412341234") ==··cont.EmbeddedType.GuidVar, "GuidVar falsch #3"); |
637 | ············Assert.That(0x1234 ==··cont.EmbeddedType.Int16Var, "Int16Var falsch #3"); |
638 | ············Assert.That(0x12341234 ==··cont.EmbeddedType.Int32Var, "Int32Var falsch #3"); |
639 | ············Assert.That(0x143214321 ==··cont.EmbeddedType.Int64Var, "Int64Var falsch #3"); |
640 | ············Assert.That("Teststring" ==··cont.EmbeddedType.StringVar, "StringVar falsch #3"); |
641 | ············Assert.That(0xabc ==··cont.EmbeddedType.Uint16Var, "Uint16Var falsch #3"); |
642 | ············Assert.That(0x12341234 ==··cont.EmbeddedType.Uint32Var, "Uint32Var falsch #3"); |
643 | ············Assert.That(0x143214321 ==··cont.EmbeddedType.Uint64Var, "Uint64Var falsch #3"); |
644 | ············Assert.That(EnumType.drei ==··cont.EmbeddedType.EnumVar, "EnumVar falsch #3"); |
645 | ············Assert.That(Guid.Empty ==··cont.EmbeddedType.EmptyGuidVar, "EmptyGuidVar falsch #3"); |
646 | ············Assert.That(DateTime.MinValue ==··cont.EmbeddedType.EmptyDateTimeVar, "EmptyDateTimeVar falsch #3"); |
647 | ············Assert.That(cont.EmbeddedType.NullString == null, "Empty String falsch #1"); |
648 | ········} |
649 | ····} |
650 | } |
651 |