annotate UnitTests/Linq/TestBase.cs @ 5:f7d63a092920

Исправлено условие Where в тех случаях, когда репозитарий не является генериком
author cin
date Tue, 10 Mar 2015 16:02:11 +0300
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.Collections;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 using System.Collections.Generic;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using System.Diagnostics;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 using System.IO;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using System.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 using System.Reflection;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 using System.ServiceModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 using System.ServiceModel.Description;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 using BLToolkit.Common;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 using BLToolkit.Data;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 using BLToolkit.Data.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 using BLToolkit.Data.Sql.SqlProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 using BLToolkit.Mapping;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 using BLToolkit.ServiceModel;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 namespace Data.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 using Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 // fix for failing tests due to use of "," vs "." in numbers parsing for some cultures
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 [SetCulture("")]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 public class TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 static TestBase()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 var providerListFile =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 File.Exists(@"..\..\UserDataProviders.txt") ?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 @"..\..\UserDataProviders.txt" :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 @"..\..\DefaultDataProviders.txt";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 UserProviders.AddRange(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 File.ReadAllLines(providerListFile)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 .Select(s => s.Trim())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 .Where (s => s.Length > 0 && !s.StartsWith("--")));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 string assembly;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 if (args.Name.IndexOf("Sybase.AdoNet2.AseClient") >= 0) assembly = @"Sybase\Sybase.AdoNet2.AseClient.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 else if (args.Name.IndexOf("Oracle.DataAccess") >= 0) assembly = @"Oracle\Oracle.DataAccess.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 else if (args.Name.IndexOf("IBM.Data.DB2") >= 0) assembly = @"IBM\IBM.Data.DB2.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 else if (args.Name.IndexOf("Npgsql.resources") >= 0) return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 else if (args.Name.IndexOf("Npgsql") >= 0) assembly = @"PostgreSql\Npgsql.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 else if (args.Name.IndexOf("Mono.Security") >= 0) assembly = @"PostgreSql\Mono.Security.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51 else if (args.Name.IndexOf("System.Data.SqlServerCe,") >= 0) assembly = @"SqlCe\System.Data.SqlServerCe.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 return null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 assembly = @"..\..\..\..\Redist\" + assembly;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 if (!File.Exists(assembly))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 assembly = @"..\..\" + assembly;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 return Assembly.LoadFrom(assembly);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 DbManager.TurnTraceSwitchOn();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 PostgreSQLSqlProvider.QuoteIdentifiers = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 var path = Path.GetDirectoryName(typeof(DbManager).Assembly.CodeBase.Replace("file:///", ""));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 foreach (var info in Providers)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 try
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 Type type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75 if (info.Assembly == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 type = typeof(DbManager).Assembly.GetType(info.Type, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 #if FW4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 var fileName = info.Assembly + ".4.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83 #else
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 var fileName = info.Assembly + ".3.dll";
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 #endif
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87 var assembly = Assembly.LoadFile(Path.Combine(path, fileName));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 type = assembly.GetType(info.Type, true);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 DbManager.AddDataProvider(type);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 info.Loaded = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96 catch (Exception)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 info.Loaded = false;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 LinqService.TypeResolver = str =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104 switch (str)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 //case "Data.Linq.Model.Gender" : return typeof(Gender);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 case "Data.Linq.Model.Person": return typeof(Person);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108 default : return null;
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
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 const int StartIP = 12345;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 static int _lastIP = StartIP;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 static int GetIP(string config)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 int ip;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
119
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
120 if (_ips.TryGetValue(config, out ip))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
121 return ip;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
122
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
123 _lastIP++;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
124
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
125 var host = new ServiceHost(new LinqService(config) { AllowUpdates = true }, new Uri("net.tcp://localhost:" + _lastIP));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
126
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
127 host.Description.Behaviors.Add(new ServiceMetadataBehavior());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
128 host.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
129 host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
130 host.AddServiceEndpoint(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
131 typeof(ILinqService),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
132 new NetTcpBinding(SecurityMode.None)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
133 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
134 MaxReceivedMessageSize = 10000000,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
135 MaxBufferPoolSize = 10000000,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
136 MaxBufferSize = 10000000,
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
137 CloseTimeout = new TimeSpan(00, 01, 00),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
138 OpenTimeout = new TimeSpan(00, 01, 00),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
139 ReceiveTimeout = new TimeSpan(00, 10, 00),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
140 SendTimeout = new TimeSpan(00, 10, 00),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
141 },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
142 "LinqOverWCF");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
143
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
144 host.Open();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
145
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
146 _ips.Add(config, _lastIP);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
147
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
148 return _lastIP;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
149 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
150
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
151 public class ProviderInfo
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
152 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
153 public ProviderInfo(string name, string assembly, string type)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
154 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
155 Name = name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
156 Assembly = assembly;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
157 Type = type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
158 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
159
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
160 public readonly string Name;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
161 public readonly string Assembly;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
162 public readonly string Type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
163 public bool Loaded;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
164 public int IP;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
165 public bool Skip;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
166 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
167
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
168 public static readonly List<string> UserProviders = new List<string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
169 public static readonly List<ProviderInfo> Providers = new List<ProviderInfo>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
170 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
171 new ProviderInfo("Sql2008", null, "BLToolkit.Data.DataProvider.Sql2008DataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
172 new ProviderInfo("Sql2012", null, "BLToolkit.Data.DataProvider.Sql2012DataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
173 new ProviderInfo(ProviderName.SqlCe, "BLToolkit.Data.DataProvider.SqlCe", "BLToolkit.Data.DataProvider.SqlCeDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
174 new ProviderInfo(ProviderName.SQLite, "BLToolkit.Data.DataProvider.SQLite", "BLToolkit.Data.DataProvider.SQLiteDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
175 new ProviderInfo(ProviderName.Access, null, "BLToolkit.Data.DataProvider.AccessDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
176 new ProviderInfo("Sql2000", null, "BLToolkit.Data.DataProvider.Sql2000DataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
177 new ProviderInfo("Sql2005", null, "BLToolkit.Data.DataProvider.SqlDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
178 new ProviderInfo(ProviderName.DB2, "BLToolkit.Data.DataProvider.DB2", "BLToolkit.Data.DataProvider.DB2DataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
179 new ProviderInfo(ProviderName.Informix, "BLToolkit.Data.DataProvider.Informix", "BLToolkit.Data.DataProvider.InformixDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
180 new ProviderInfo(ProviderName.Firebird, "BLToolkit.Data.DataProvider.Firebird", "BLToolkit.Data.DataProvider.FdpDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
181 new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.Oracle", "BLToolkit.Data.DataProvider.OdpDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
182 new ProviderInfo("DevartOracle", "BLToolkit.Data.DataProvider.DevartOracle", "BLToolkit.Data.DataProvider.DevartOracleDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
183 //new ProviderInfo("Oracle", "BLToolkit.Data.DataProvider.OracleManaged", "BLToolkit.Data.DataProvider.OdpManagedDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
184 new ProviderInfo(ProviderName.PostgreSQL, "BLToolkit.Data.DataProvider.PostgreSQL", "BLToolkit.Data.DataProvider.PostgreSQLDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
185 new ProviderInfo(ProviderName.MySql, "BLToolkit.Data.DataProvider.MySql", "BLToolkit.Data.DataProvider.MySqlDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
186 new ProviderInfo(ProviderName.Sybase, "BLToolkit.Data.DataProvider.Sybase", "BLToolkit.Data.DataProvider.SybaseDataProvider"),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
187 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
188
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
189 static IEnumerable<ITestDataContext> GetProviders(IEnumerable<string> exceptList)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
190 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
191 var list = UserProviders.Concat(UserProviders.Select(p => p + ".LinqService"));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
192
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
193 foreach (var info in Providers.Where(p => list.Contains(p.Name)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
194 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
195 if (exceptList.Contains(info.Name))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
196 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
197
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
198 Debug.WriteLine(info.Name, "Provider ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
199
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
200 if (!info.Loaded)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
201 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
202
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
203 yield return new TestDbManager(info.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
204
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
205 var ip = GetIP(info.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
206 var dx = new TestServiceModelDataContext(ip);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
207
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
208 Debug.WriteLine(((IDataContext)dx).ContextID, "Provider ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
209
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
210 yield return dx;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
211 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
212 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
213
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
214 [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
215 public class DataContextsAttribute : ValuesAttribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
216 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
217 public DataContextsAttribute(params string[] except)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
218 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
219 Except = except;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
220 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
221
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
222 const bool IncludeLinqService = true;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
223
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
224 public string[] Except { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
225 public string[] Include { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
226 public bool ExcludeLinqService { get; set; }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
227
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
228 public override IEnumerable GetData(ParameterInfo parameter)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
229 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
230 if (Include != null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
231 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
232 var list = Include.Intersect(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
233 IncludeLinqService ?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
234 UserProviders.Concat(UserProviders.Select(p => p + ".LinqService")) :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
235 UserProviders).
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
236 ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
237
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
238 return list;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
239 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
240
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
241 var providers = new List<string>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
242
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
243 foreach (var info in Providers)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
244 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
245 if (info.Skip && Include == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
246 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
247
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
248 if (Except != null && Except.Contains(info.Name))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
249 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
250
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
251 if (!UserProviders.Contains(info.Name))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
252 continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
253
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
254 providers.Add(info.Name);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
255
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
256 if (IncludeLinqService && !ExcludeLinqService)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
257 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
258 providers.Add(info.Name + ".LinqService");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
259 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
260 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
261
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
262 return providers.ToArray();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
263 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
264 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
265
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
266 public class IncludeDataContextsAttribute : DataContextsAttribute
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
267 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
268 public IncludeDataContextsAttribute(params string[] include)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
269 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
270 Include = include;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
271 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
272 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
273
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
274 static readonly Dictionary<string,int> _ips = new Dictionary<string,int>();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
275
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
276 protected ITestDataContext GetDataContext(string configuration)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
277 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
278 if (configuration.EndsWith(".LinqService"))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
279 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
280 var str = configuration.Substring(0, configuration.Length - ".LinqService".Length);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
281 var ip = GetIP(str);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
282 var dx = new TestServiceModelDataContext(ip);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
283
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
284 Debug.WriteLine(((IDataContext)dx).ContextID, "Provider ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
285
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
286 return dx;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
287 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
288
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
289 Debug.WriteLine(configuration, "Provider ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
290
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
291 return new TestDbManager(configuration);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
292 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
293
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
294 protected void ForEachProvider(Type expectedException, string[] exceptList, Action<ITestDataContext> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
295 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
296 Exception ex = null;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
297
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
298 foreach (var db in GetProviders(exceptList))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
299 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
300 try
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
301 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
302 if (db is DbManager)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
303 ((DbManager)db).BeginTransaction();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
304
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
305 func(db);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
306 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
307 catch (Exception e)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
308 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
309 if (expectedException == null || e.GetType() != expectedException)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
310 throw;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
311
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
312 ex = e;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
313 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
314 finally
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
315 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
316 db.Dispose();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
317 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
318 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
319
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
320 if (ex != null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
321 throw ex;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
322 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
323
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
324 protected void ForEachProvider(string[] exceptList, Action<ITestDataContext> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
325 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
326 ForEachProvider(null, exceptList, func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
327 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
328
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
329 protected void ForEachProvider(Action<ITestDataContext> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
330 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
331 ForEachProvider(Array<string>.Empty, func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
332 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
333
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
334 protected void ForEachProvider(Type expectedException, Action<ITestDataContext> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
335 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
336 ForEachProvider(expectedException, Array<string>.Empty, func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
337 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
338
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
339 protected void Not0ForEachProvider(Func<ITestDataContext, int> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
340 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
341 ForEachProvider(db => Assert.Less(0, func(db)));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
342 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
343
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
344 protected void TestPerson(int id, string firstName, Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
345 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
346 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
347 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
348 var person = func(db).ToList().Where(p => p.ID == id).First();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
349
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
350 Assert.AreEqual(id, person.ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
351 Assert.AreEqual(firstName, person.FirstName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
352 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
353 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
354
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
355 protected void TestJohn(Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
356 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
357 TestPerson(1, "John", func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
358 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
359
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
360 protected void TestOnePerson(string[] exceptList, int id, string firstName, Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
361 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
362 ForEachProvider(exceptList, db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
363 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
364 var list = func(db).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
365
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
366 Assert.AreEqual(1, list.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
367
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
368 var person = list[0];
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
369
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
370 Assert.AreEqual(id, person.ID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
371 Assert.AreEqual(firstName, person.FirstName);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
372 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
373 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
374
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
375 protected void TestOnePerson(int id, string firstName, Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
376 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
377 TestOnePerson(Array<string>.Empty, id, firstName, func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
378 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
379
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
380 protected void TestOneJohn(string[] exceptList, Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
381 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
382 TestOnePerson(exceptList, 1, "John", func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
383 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
384
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
385 protected void TestOneJohn(Func<ITestDataContext,IQueryable<Person>> func)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
386 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
387 TestOnePerson(Array<string>.Empty, 1, "John", func);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
388 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
389
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
390 private List<LinqDataTypes> _types;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
391 protected IEnumerable<LinqDataTypes> Types
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
392 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
393 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
394 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
395 if (_types == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
396 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
397 _types = db.Types.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
398
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
399 foreach (var type in _types)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
400 yield return type;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
401 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
402 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
403
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
404 private List<LinqDataTypes2> _types2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
405 protected List<LinqDataTypes2> Types2
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
406 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
407 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
408 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
409 if (_types2 == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
410 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
411 _types2 = db.Types2.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
412 return _types2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
413 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
414 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
415
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
416 private List<Person> _person;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
417 protected IEnumerable<Person> Person
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
418 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
419 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
420 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
421 if (_person == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
422 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
423 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
424 _person = db.Person.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
425
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
426 foreach (var p in _person)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
427 p.Patient = Patient.SingleOrDefault(ps => p.ID == ps.PersonID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
428 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
429
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
430 foreach (var item in _person)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
431 yield return item;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
432 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
433 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
434
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
435 private List<Patient> _patient;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
436 protected List<Patient> Patient
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
437 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
438 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
439 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
440 if (_patient == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
441 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
442 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
443 _patient = db.Patient.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
444
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
445 foreach (var p in _patient)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
446 p.Person = Person.Single(ps => ps.ID == p.PersonID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
447 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
448
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
449 return _patient;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
450 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
451 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
452
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
453 private List<Doctor> _doctor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
454 protected List<Doctor> Doctor
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
455 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
456 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
457 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
458 if (_doctor == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
459 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
460 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
461 _doctor = db.Doctor.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
462 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
463
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
464 return _doctor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
465 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
466 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
467
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
468 #region Parent/Child Model
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
469
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
470 private List<Parent> _parent;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
471 protected IEnumerable<Parent> Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
472 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
473 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
474 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
475 if (_parent == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
476 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
477 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
478 db.Parent.Delete(c => c.ParentID >= 1000);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
479 _parent = db.Parent.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
480 db.Close();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
481
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
482 foreach (var p in _parent)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
483 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
484 p.Children = Child. Where(c => c.ParentID == p.ParentID).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
485 p.GrandChildren = GrandChild.Where(c => c.ParentID == p.ParentID).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
486 p.Types = Types.First(t => t.ID == p.ParentID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
487 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
488 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
489
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
490 foreach (var parent in _parent)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
491 yield return parent;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
492 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
493 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
494
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
495 private List<Parent1> _parent1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
496 protected IEnumerable<Parent1> Parent1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
497 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
498 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
499 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
500 if (_parent1 == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
501 _parent1 = Parent.Select(p => new Parent1 { ParentID = p.ParentID, Value1 = p.Value1 }).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
502
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
503 foreach (var parent in _parent1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
504 yield return parent;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
505 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
506 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
507
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
508 private List<Parent4> _parent4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
509 protected List<Parent4> Parent4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
510 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
511 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
512 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
513 return _parent4 ?? (_parent4 = Parent.Select(p => new Parent4 { ParentID = p.ParentID, Value1 = Map.ToEnum<TypeValue>(p.Value1) }).ToList());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
514 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
515 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
516
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
517 private List<Parent5> _parent5;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
518 protected List<Parent5> Parent5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
519 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
520 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
521 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
522 if (_parent5 == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
523 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
524 _parent5 = Parent.Select(p => new Parent5 { ParentID = p.ParentID, Value1 = p.Value1}).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
525
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
526 foreach (var p in _parent5)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
527 p.Children = _parent5.Where(c => c.Value1 == p.ParentID).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
528 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
529
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
530 return _parent5;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
531 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
532 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
533
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
534 private List<ParentInheritanceBase> _parentInheritance;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
535 protected IEnumerable<ParentInheritanceBase> ParentInheritance
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
536 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
537 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
538 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
539 if (_parentInheritance == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
540 _parentInheritance = Parent.Select(p =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
541 p.Value1 == null ? new ParentInheritanceNull { ParentID = p.ParentID } :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
542 p.Value1.Value == 1 ? new ParentInheritance1 { ParentID = p.ParentID, Value1 = p.Value1.Value } :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
543 (ParentInheritanceBase) new ParentInheritanceValue { ParentID = p.ParentID, Value1 = p.Value1.Value }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
544 ).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
545
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
546 foreach (var item in _parentInheritance)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
547 yield return item;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
548 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
549 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
550
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
551 private List<ParentInheritanceValue> _parentInheritanceValue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
552 protected List<ParentInheritanceValue> ParentInheritanceValue
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
553 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
554 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
555 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
556 return _parentInheritanceValue ?? (_parentInheritanceValue =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
557 ParentInheritance.Where(p => p is ParentInheritanceValue).Cast<ParentInheritanceValue>().ToList());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
558 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
559 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
560
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
561 private List<ParentInheritance1> _parentInheritance1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
562 protected List<ParentInheritance1> ParentInheritance1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
563 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
564 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
565 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
566 return _parentInheritance1 ?? (_parentInheritance1 =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
567 ParentInheritance.Where(p => p is ParentInheritance1).Cast<ParentInheritance1>().ToList());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
568 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
569 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
570
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
571 private List<ParentInheritanceBase4> _parentInheritance4;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
572 protected List<ParentInheritanceBase4> ParentInheritance4
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
573 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
574 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
575 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
576 return _parentInheritance4 ?? (_parentInheritance4 = Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
577 .Where(p => p.Value1.HasValue && (new[] { 1, 2 }.Contains(p.Value1.Value)))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
578 .Select(p => p.Value1 == 1 ?
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
579 (ParentInheritanceBase4)new ParentInheritance14 { ParentID = p.ParentID } :
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
580 (ParentInheritanceBase4)new ParentInheritance24 { ParentID = p.ParentID }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
581 ).ToList());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
582 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
583 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
584
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
585 private List<Child> _child;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
586 protected IEnumerable<Child> Child
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
587 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
588 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
589 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
590 if (_child == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
591 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
592 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
593 db.Child.Delete(c => c.ParentID >= 1000);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
594 _child = db.Child.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
595 db.Clone();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
596
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
597 foreach (var ch in _child)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
598 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
599 ch.Parent = Parent. Single(p => p.ParentID == ch.ParentID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
600 ch.Parent1 = Parent1.Single(p => p.ParentID == ch.ParentID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
601 ch.ParentID2 = new Parent3 { ParentID2 = ch.Parent.ParentID, Value1 = ch.Parent.Value1 };
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
602 ch.GrandChildren = GrandChild.Where(c => c.ParentID == ch.ParentID && c.ChildID == ch.ChildID).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
603 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
604 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
605
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
606 foreach (var child in _child)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
607 yield return child;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
608 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
609 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
610
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
611 private List<GrandChild> _grandChild;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
612 protected IEnumerable<GrandChild> GrandChild
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
613 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
614 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
615 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
616 if (_grandChild == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
617 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
618 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
619 _grandChild = db.GrandChild.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
620 db.Close();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
621
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
622 foreach (var ch in _grandChild)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
623 ch.Child = Child.Single(c => c.ParentID == ch.ParentID && c.ChildID == ch.ChildID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
624 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
625
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
626 foreach (var grandChild in _grandChild)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
627 yield return grandChild;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
628 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
629 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
630
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
631 private List<GrandChild1> _grandChild1;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
632 protected IEnumerable<GrandChild1> GrandChild1
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
633 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
634 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
635 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
636 if (_grandChild1 == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
637 using (var db = new TestDbManager())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
638 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
639 _grandChild1 = db.GrandChild1.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
640
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
641 foreach (var ch in _grandChild1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
642 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
643 ch.Parent = Parent1.Single(p => p.ParentID == ch.ParentID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
644 ch.Child = Child. Single(c => c.ParentID == ch.ParentID && c.ChildID == ch.ChildID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
645 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
646 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
647
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
648 foreach (var grandChild in _grandChild1)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
649 yield return grandChild;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
650 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
651 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
652
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
653 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
654
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
655 #region Northwind
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
656
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
657 private List<Northwind.Category> _category;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
658 public List<Northwind.Category> Category
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
659 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
660 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
661 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
662 if (_category == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
663 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
664 _category = db.Category.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
665 return _category;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
666 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
667 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
668
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
669 private List<Northwind.Customer> _customer;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
670 public List<Northwind.Customer> Customer
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
671 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
672 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
673 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
674 if (_customer == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
675 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
676 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
677 _customer = db.Customer.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
678
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
679 foreach (var c in _customer)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
680 c.Orders = (from o in Order where o.CustomerID == c.CustomerID select o).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
681 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
682
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
683 return _customer;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
684 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
685 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
686
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
687 private List<Northwind.Employee> _employee;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
688 public List<Northwind.Employee> Employee
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
689 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
690 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
691 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
692 if (_employee == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
693 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
694 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
695 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
696 _employee = db.Employee.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
697
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
698 foreach (var employee in _employee)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
699 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
700 employee.Employees = (from e in _employee where e.ReportsTo == employee.EmployeeID select e).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
701 employee.ReportsToEmployee = (from e in _employee where e.EmployeeID == employee.ReportsTo select e).SingleOrDefault();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
702 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
703 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
704 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
705
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
706 return _employee;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
707 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
708 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
709
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
710 private List<Northwind.EmployeeTerritory> _employeeTerritory;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
711 public List<Northwind.EmployeeTerritory> EmployeeTerritory
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
712 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
713 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
714 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
715 if (_employeeTerritory == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
716 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
717 _employeeTerritory = db.EmployeeTerritory.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
718 return _employeeTerritory;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
719 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
720 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
721
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
722 private List<Northwind.OrderDetail> _orderDetail;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
723 public List<Northwind.OrderDetail> OrderDetail
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
724 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
725 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
726 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
727 if (_orderDetail == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
728 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
729 _orderDetail = db.OrderDetail.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
730 return _orderDetail;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
731 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
732 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
733
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
734 private List<Northwind.Order> _order;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
735 public List<Northwind.Order> Order
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
736 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
737 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
738 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
739 if (_order == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
740 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
741 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
742 _order = db.Order.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
743
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
744 foreach (var o in _order)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
745 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
746 o.Customer = Customer.Single(c => o.CustomerID == c.CustomerID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
747 o.Employee = Employee.Single(e => o.EmployeeID == e.EmployeeID);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
748 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
749 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
750
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
751 return _order;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
752 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
753 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
754
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
755 private IEnumerable<Northwind.Product> _product;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
756 public IEnumerable<Northwind.Product> Product
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
757 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
758 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
759 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
760 if (_product == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
761 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
762 _product = db.Product.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
763
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
764 foreach (var product in _product)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
765 yield return product;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
766 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
767 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
768
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
769 private List<Northwind.ActiveProduct> _activeProduct;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
770 public List<Northwind.ActiveProduct> ActiveProduct
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
771 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
772 get { return _activeProduct ?? (_activeProduct = Product.OfType<Northwind.ActiveProduct>().ToList()); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
773 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
774
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
775 public IEnumerable<Northwind.DiscontinuedProduct> DiscontinuedProduct
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
776 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
777 get { return Product.OfType<Northwind.DiscontinuedProduct>(); }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
778 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
779
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
780 private List<Northwind.Region> _region;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
781 public List<Northwind.Region> Region
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
782 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
783 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
784 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
785 if (_region == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
786 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
787 _region = db.Region.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
788 return _region;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
789 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
790 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
791
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
792 private List<Northwind.Shipper> _shipper;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
793 public List<Northwind.Shipper> Shipper
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
794 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
795 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
796 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
797 if (_shipper == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
798 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
799 _shipper = db.Shipper.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
800 return _shipper;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
801 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
802 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
803
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
804 private List<Northwind.Supplier> _supplier;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
805 public List<Northwind.Supplier> Supplier
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
806 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
807 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
808 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
809 if (_supplier == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
810 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
811 _supplier = db.Supplier.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
812 return _supplier;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
813 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
814 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
815
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
816 private List<Northwind.Territory> _territory;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
817 public List<Northwind.Territory> Territory
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
818 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
819 get
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
820 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
821 if (_territory == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
822 using (var db = new NorthwindDB())
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
823 _territory = db.Territory.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
824 return _territory;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
825 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
826 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
827
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
828 #endregion
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
829
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
830 protected void AreEqual<T>(IEnumerable<T> expected, IEnumerable<T> result)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
831 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
832 var resultList = result. ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
833 var expectedList = expected.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
834
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
835 Assert.AreNotEqual(0, expectedList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
836 Assert.AreEqual(expectedList.Count, resultList.Count, "Expected and result lists are different. Lenght: ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
837
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
838 var exceptExpectedList = resultList. Except(expectedList).ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
839 var exceptResultList = expectedList.Except(resultList). ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
840
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
841 var exceptExpected = exceptExpectedList.Count;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
842 var exceptResult = exceptResultList. Count;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
843
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
844 if (exceptResult != 0 || exceptExpected != 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
845 for (var i = 0; i < resultList.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
846 Debug.WriteLine("{0} {1} --- {2}", Equals(expectedList[i], resultList[i]) ? " " : "-", expectedList[i], resultList[i]);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
847
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
848 Assert.AreEqual(0, exceptExpected);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
849 Assert.AreEqual(0, exceptResult);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
850 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
851
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
852 protected void AreEqual<T>(IEnumerable<IEnumerable<T>> expected, IEnumerable<IEnumerable<T>> result)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
853 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
854 var resultList = result. ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
855 var expectedList = expected.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
856
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
857 Assert.AreNotEqual(0, expectedList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
858 Assert.AreEqual(expectedList.Count, resultList.Count, "Expected and result lists are different. Lenght: ");
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
859
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
860 for (var i = 0; i < resultList.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
861 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
862 var elist = expectedList[i].ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
863 var rlist = resultList [i].ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
864
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
865 if (elist.Count > 0 || rlist.Count > 0)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
866 AreEqual(elist, rlist);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
867 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
868 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
869
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
870 protected void AreSame<T>(IEnumerable<T> expected, IEnumerable<T> result)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
871 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
872 var resultList = result. ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
873 var expectedList = expected.ToList();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
874
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
875 Assert.AreNotEqual(0, expectedList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
876 Assert.AreEqual(expectedList.Count, resultList.Count);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
877
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
878 var b = expectedList.SequenceEqual(resultList);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
879
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
880 if (!b)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
881 for (var i = 0; i < resultList.Count; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
882 Debug.WriteLine(string.Format("{0} {1} --- {2}", Equals(expectedList[i], resultList[i]) ? " " : "-", expectedList[i], resultList[i]));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
883
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
884 Assert.IsTrue(b);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
885 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
886
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
887 protected void CompareSql(string result, string expected)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
888 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
889 var ss = expected.Trim('\r', '\n').Split('\n');
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
890
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
891 while (ss.All(_ => _.Length > 0 && _[0] == '\t'))
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
892 for (var i = 0; i < ss.Length; i++)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
893 ss[i] = ss[i].Substring(1);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
894
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
895 Assert.AreEqual(string.Join("\n", ss), result.Trim('\r', '\n'));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
896 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
897 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
898 }