annotate UnitTests/Linq/Distinct.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.Linq;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 using NUnit.Framework;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6 using BLToolkit.Data.DataProvider;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 namespace Data.Linq
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 using Model;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 [TestFixture]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13 public class DistinctTest : TestBase
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 public void Distinct1()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 (from ch in Child select ch.ParentID).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 (from ch in db.Child select ch.ParentID).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 public void Distinct2()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 (from p in Parent select p.Value1 ?? p.ParentID % 2).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28 (from p in db.Parent select p.Value1 ?? p.ParentID % 2).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 public void Distinct3()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 (from p in Parent select new { Value = p.Value1 ?? p.ParentID % 2, p.Value1 }).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 (from p in db.Parent select new { Value = p.Value1 ?? p.ParentID % 2, p.Value1 }).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 public void Distinct4()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 (from p in Parent select new Parent { ParentID = p.Value1 ?? p.ParentID % 2, Value1 = p.Value1 }).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 (from p in db.Parent select new Parent { ParentID = p.Value1 ?? p.ParentID % 2, Value1 = p.Value1 }).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 public void Distinct5()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 var id = 2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 ForEachProvider(db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 (from p in Parent select new Parent { ParentID = p.Value1 ?? p.ParentID % 2, Value1 = id + 1 }).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 (from p in db.Parent select new Parent { ParentID = p.Value1 ?? p.ParentID % 2, Value1 = id + 1 }).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 public void Distinct6()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 var id = 2;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 ForEachProvider(new[] { ProviderName.Informix }, db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 (from p in Parent select new Parent { ParentID = p.Value1 ?? p.ParentID + id % 2, Value1 = id + 1 }).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 (from p in db.Parent select new Parent { ParentID = p.Value1 ?? p.ParentID + id % 2, Value1 = id + 1 }).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 public void DistinctCount()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
69 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
70 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
71 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
72 join c in Child on p.ParentID equals c.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
73 where c.ChildID > 20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
74 select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
75
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
76 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
77 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
78 var result =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
79 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
80 join c in db.Child on p.ParentID equals c.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
81 where c.ChildID > 20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
82 select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
83
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
84 Assert.AreEqual(expected.Distinct().Count(), result.Distinct().Count());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
85 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
86 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
87
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
88 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
89 public void DistinctMax()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
90 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
91 var expected =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
92 from p in Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
93 join c in Child on p.ParentID equals c.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
94 where c.ChildID > 20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
95 select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
96
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
97 ForEachProvider(db =>
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
98 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
99 var result =
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
100 from p in db.Parent
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
101 join c in db.Child on p.ParentID equals c.ParentID
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
102 where c.ChildID > 20
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
103 select p;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
104
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
105 Assert.AreEqual(expected.Distinct().Max(p => p.ParentID), result.Distinct().Max(p => p.ParentID));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
106 });
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
107 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
108
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
109 [Test]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
110 public void TakeDistinct()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
111 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
112 ForEachProvider(new[] { ProviderName.Sybase, ProviderName.SQLite },
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
113 db => AreEqual(
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
114 (from ch in Child orderby ch.ParentID select ch.ParentID).Take(4).Distinct(),
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
115 (from ch in db.Child orderby ch.ParentID select ch.ParentID).Take(4).Distinct()));
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
116 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
117 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
118 }