comparison UnitTests/Linq/Distinct.cs @ 0:f990fcb411a9

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