annotate UnitTests/CS/DataAccess/ArrayTest.cs @ 4:f757da6161a1

!bug 100 + 2h fixed gregression
author cin
date Sun, 24 Aug 2014 17:57:42 +0400
parents f990fcb411a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 #if ORACLE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 #else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.TypeBuilder;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 namespace DataAccess
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class ArrayTest
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public ArrayTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 TypeFactory.SaveTypes = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 #if ORACLE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public abstract class TestAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 public abstract void ArrayTest(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 int[] @intArray, out int[] @outputIntArray, ref int[] @inputOutputIntArray,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 string[] @strArray, out string[] @outputStrArray, ref string[] @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 [ScalarSource(ScalarSourceType.OutputParameter)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 public abstract int[] ScalarArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 [SqlQuery(@"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 DECLARE
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 intArray DBMS_UTILITY.NUMBER_ARRAY;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 BEGIN
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 intArray := :intArray;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 FOR i IN intArray.FIRST..intArray.LAST LOOP
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 :inputOutputIntArray(i) := intArray(i);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 END LOOP;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 END;"
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 )]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public abstract void Query(int[] @intArray, ref int[] @inputOutputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 public abstract void ArrayTest(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 int?[] @intArray, out int?[] @outputIntArray, ref int?[] @inputOutputIntArray,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 string[] @strArray, out string[] @outputStrArray, ref string[] @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 [ScalarSource(ScalarSourceType.OutputParameter), SprocName("ScalarArray")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public abstract int?[] NullableScalarArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 int[] @outputIntArray;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 int[] @inputOutputIntArray = new int[] {1,2,3,4,5};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 string[] @outputStrArray;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 string[] @inputOutputStrArray = new string[] {"9","8","7","6","5"};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))).ArrayTest(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 new int[] {1,2,3,4,5}, out @outputIntArray, ref @inputOutputIntArray,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 new string[] {"5","4","3","2","1"}, out @outputStrArray, ref @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 Assert.AreEqual(new int[] {1,2,3,4,5}, @outputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Assert.AreEqual(new int[] {2,4,6,8,10}, @inputOutputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Assert.AreEqual(new string[] { "5","4","3","2","1"}, @outputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 Assert.AreEqual(new string[] { "95","84","73","62","51"}, @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 public void ScalarTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 int[] @outputIntArray = ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))).ScalarArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 Assert.AreEqual(new int[] { 1, 2, 3, 4, 5 }, @outputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 public void NullableTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 int?[] @outputIntArray;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 int?[] @inputOutputIntArray = new int?[] {1,2,3,4,5};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 string[] @outputStrArray;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 string[] @inputOutputStrArray = new string[] {"9","8","7","6","5"};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))).ArrayTest(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 new int?[] {1,null,3,4,5}, out @outputIntArray, ref @inputOutputIntArray,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 new string[] {"5","4","3","2","1"}, out @outputStrArray, ref @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 Assert.AreEqual(new int?[] {1,0,3,4,5}, @outputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 Assert.AreEqual(new int?[] {2,0,6,8,10}, @inputOutputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 Assert.AreEqual(new string[] { "5","4","3","2","1"}, @outputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 Assert.AreEqual(new string[] { "95","84","73","62","51"}, @inputOutputStrArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 public void NullableScalarTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 int?[] @outputIntArray = ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))).NullableScalarArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 Assert.AreEqual(new int?[] { 1, 2, 3, 4, 5 }, @outputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 public void QueryTest()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 int[] intArray = new int[]{1,2,3,4,5};
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 int[] inputOutputIntArray = new int[5];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 ((TestAccessor)DataAccessor.CreateInstance(typeof(TestAccessor))).Query(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 intArray, ref inputOutputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 Assert.AreEqual(intArray, inputOutputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 #elif MSSQL
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 public abstract class TestAccessor : DataAccessor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 [SprocName("ArrayTest")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 public abstract IList<int> SprocTest(int[] @inputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 [SqlQuery("SELECT Num * 3 FROM @inputIntArray")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 public abstract IList<int> QueryTest([ParamTypeName("IntArray")] int[] @inputIntArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 public void Test()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 int[] intArray = { 1, 2, 3, 4, 5 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 TestAccessor a = TypeFactory.CreateInstance<TestAccessor>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 IList<int> list;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 list = a.SprocTest(intArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 for (int i = 0; i < list.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 Assert.That(list[i], Is.EqualTo(intArray[i]*2));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 list = a.QueryTest(intArray);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 for (int i = 0; i < list.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 Assert.That(list[i], Is.EqualTo(intArray[i]*3));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 }