annotate UnitTests/Linq/ProviderSpecific/Oracle.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 using System;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 using System.Data.Linq.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using BLToolkit.DataAccess;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 using UnitTests.Linq.Interface.Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 namespace Data.Linq.ProviderSpecific
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 using Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 [TestFixture, Category("Oracle")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 public class Oracle : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 #region Sequence
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 public void SequenceInsert([IncludeDataContexts("Oracle")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 using (var db = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 db.Insert(new OracleSpecific.SequenceTest { Value = "SeqValue" });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 var id = db.GetTable<OracleSpecific.SequenceTest>().Single(_ => _.Value == "SeqValue").ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.ID == id).Delete();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 Assert.AreEqual(0, db.GetTable<OracleSpecific.SequenceTest>().Count(_ => _.Value == "SeqValue"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 public void SequenceInsertWithIdentity([IncludeDataContexts("Oracle")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 using (var db = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.Value == "SeqValue").Delete();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 var id1 = Convert.ToInt32(db.InsertWithIdentity(new OracleSpecific.SequenceTest { Value = "SeqValue" }));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 var id2 = db.GetTable<OracleSpecific.SequenceTest>().Single(_ => _.Value == "SeqValue").ID;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 Assert.AreEqual(id1, id2);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 db.GetTable<OracleSpecific.SequenceTest>().Where(_ => _.ID == id1).Delete();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 Assert.AreEqual(0, db.GetTable<OracleSpecific.SequenceTest>().Count(_ => _.Value == "SeqValue"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 #region InsertBatch
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 [Table(Name = "stg_trade_information")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 public class Trade
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 [MapField("STG_TRADE_ID")] public int ID { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 [MapField("STG_TRADE_VERSION")] public int Version { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 [MapField("INFORMATION_TYPE_ID")] public int TypeID { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 [MapField("INFORMATION_TYPE_NAME")] public string TypeName { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 [MapField("value")] public string Value { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 [MapField("value_as_integer")] public int? ValueAsInteger { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 [MapField("value_as_date")] public DateTime? ValueAsDate { get; set; }
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 InsertBatch1([IncludeDataContexts("Oracle")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 var data = new[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 new Trade { ID = 375, Version = 1, TypeID = 20224, TypeName = "Gas Month", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 new Trade { ID = 328, Version = 1, TypeID = 20224, TypeName = "Gas Month", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 new Trade { ID = 348, Version = 1, TypeID = 20224, TypeName = "Gas Month", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 new Trade { ID = 357, Version = 1, TypeID = 20224, TypeName = "Gas Month", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 new Trade { ID = 371, Version = 1, TypeID = 20224, TypeName = "Gas Month", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 new Trade { ID = 333, Version = 1, TypeID = 20224, TypeName = "Gas Month", ValueAsInteger = 1, ValueAsDate = new DateTime(2011, 1, 5) },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 new Trade { ID = 353, Version = 1, TypeID = 20224, TypeName = "Gas Month", ValueAsInteger = 1000000000, },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 new Trade { ID = 973, Version = 1, TypeID = 20160, TypeName = "EU Allowances", },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 using (var db = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 db.InsertBatch(5, data);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 }
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 InsertBatch2([IncludeDataContexts("Oracle")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 using (var db = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 db.Types2.Delete(_ => _.ID > 1000);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 db.InsertBatch(2, new[]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 new LinqDataTypes2 { ID = 1003, MoneyValue = 0m, DateTimeValue = null, BoolValue = true, GuidValue = new Guid("ef129165-6ffe-4df9-bb6b-bb16e413c883"), SmallIntValue = null, IntValue = null },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 new LinqDataTypes2 { ID = 1004, MoneyValue = 0m, DateTimeValue = DateTime.Now, BoolValue = false, GuidValue = null, SmallIntValue = 2, IntValue = 1532334 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 new LinqDataTypes2 { ID = 1005, MoneyValue = 1m, DateTimeValue = DateTime.Now, BoolValue = false, GuidValue = null, SmallIntValue = 5, IntValue = null },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 new LinqDataTypes2 { ID = 1006, MoneyValue = 2m, DateTimeValue = DateTime.Now, BoolValue = false, GuidValue = null, SmallIntValue = 6, IntValue = 153 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 db.Types2.Delete(_ => _.ID > 1000);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 #region Transaction
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 [TableName("demo_product_info")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119 public new class Product
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 [MapField("PRODUCT_ID"), PrimaryKey, NonUpdatable]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122 public int Id;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124 [MapField("PRODUCT_NAME")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 public string Name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 [MapField("PRODUCT_DESCRIPTION")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 public string Description;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 public abstract class ProductEntityAccesor : DataAccessor<Product>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 public abstract int Insert(Product product);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 public abstract void Delete(int id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 public abstract Product SelectByKey(int id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 public abstract Product SelectByKey(DbManager db, int id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 //[Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 public void CanInsertProductWithAccessorTest([IncludeDataContexts("Oracle")] string context)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 using (var dbManager = new TestDbManager(context))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 var productEntityAccesor = DataAccessor.CreateInstance<ProductEntityAccesor>(dbManager);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 productEntityAccesor.BeginTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 var id = productEntityAccesor.Insert(new Product { Name = "product name test", Description = "product description test" });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 //This assert fails bacause id == 0 and it does not insert until the CommitTransaction is called.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150 Assert.AreNotEqual(0, id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 Product product = productEntityAccesor.SelectByKey(id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 Assert.IsNotNull(product);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 productEntityAccesor.Delete(id);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 productEntityAccesor.CommitTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 }