annotate UnitTests/CS/Data/ExecuteForEach.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 namespace Data
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 public class ExecuteForEach
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 public class TypeWrapper<T>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public TypeWrapper(T value)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 _value = value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 private T _value;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 public T Value
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 get { return _value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 set { _value = value; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 public void TestFixedTypes()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 RunTest(new int[] { 1, 2, 3, 4 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 RunTest(new bool[] { true, false });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 RunTest(new DateTime[] { DateTime.Now, DateTime.Today });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 RunTest(new double[] { 1, 2, 3, 4 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 public void TestVarTypes()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 RunTest(new byte[][] { new byte[] { 1, 2 }, new byte[] { 3, 4 } });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 RunTest(new char[][] { new char[] { '1', '2' }, new char[] { '3', '4' } });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 public void TestDecimal()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 RunTest(new decimal[] { 1, 2, 3, 4 });
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 TestString()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 RunTest(new string[] { "1", "2", "3", "4" });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 public class Item
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 public int Length;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 public string Name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 public Item(string s)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 Length = s.Length;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 Name = s;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public Item()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 Name = string.Empty;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 public void TestStringWithDiffLength()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 List<Item> test = new List<Item>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 test.Add(new Item("aaaa"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 test.Add(new Item("bb"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 test.Add(new Item("ccccccc"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 .BeginTransaction()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 .SetCommand(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 @"if exists (select 1 from sysobjects where id = object_id('_tmp'))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 drop table _tmp
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 create table _tmp ( Length int, name varchar(50) )")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 .ExecuteNonQuery();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 .SetCommand(CommandType.Text,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 "insert into _tmp ( [Length], [name] ) VALUES ( @Length, @name )")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 .ExecuteForEach<Item>(test);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 List<Item> actial = db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 .SetCommand("select [Length], [name] from _tmp order by [Name]")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 .ExecuteList<Item>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 Assert.AreEqual(test.Count, actial.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 for (int i = 0; i < test.Count; ++i)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 Assert.AreEqual(test[i].Length, actial[i].Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 Assert.AreEqual(test[i].Name, actial[i].Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 private static void RunTest<T>(T[] args)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 List<TypeWrapper<T>> col = new List<TypeWrapper<T>>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 col.AddRange(Array.ConvertAll<T, TypeWrapper<T>>(args, delegate(T val) { return new TypeWrapper<T>(val); }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 using (DbManager db = new DbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 db
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 .SetCommand(@"SELECT @Value as 'value'")
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 .ExecuteForEach<TypeWrapper<T>>(col);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126 }