@@ -24,6 +24,19 @@ public void Find_Should_Return_Single_Item_Which_Satisfies_Specification(IReposi
2424 result . Name . ShouldEqual ( "Test User 1" ) ;
2525 }
2626
27+ [ ExecuteForAllRepositories ]
28+ public void Find_Should_Return_Single_Item_Which_Satisfies_Predicate ( IRepository < Contact , string > repository )
29+ {
30+ for ( int i = 1 ; i <= 3 ; i ++ )
31+ {
32+ var contact = new Contact { Name = "Test User " + i } ;
33+ repository . Add ( contact ) ;
34+ }
35+
36+ var result = repository . Find ( p => p . Name == "Test User 1" ) ;
37+ result . Name . ShouldEqual ( "Test User 1" ) ;
38+ }
39+
2740 [ ExecuteForAllRepositories ]
2841 public void Find_Should_Return_Single_Item_Which_Satisfies_Composite_Specification ( IRepository < Contact , string > repository )
2942 {
@@ -37,6 +50,19 @@ public void Find_Should_Return_Single_Item_Which_Satisfies_Composite_Specificati
3750 result . Name . ShouldEqual ( "Test User 1" ) ;
3851 }
3952
53+ [ ExecuteForAllRepositories ]
54+ public void Find_Should_Return_Single_Item_Which_Satisfies_Composite_Predicate ( IRepository < Contact , string > repository )
55+ {
56+ for ( int i = 1 ; i <= 3 ; i ++ )
57+ {
58+ var contact = new Contact { Name = "Test User " + i } ;
59+ repository . Add ( contact ) ;
60+ }
61+
62+ var result = repository . Find ( p => p . Name == "Test User 1" || p . Name == "Test User 1000" ) ;
63+ result . Name . ShouldEqual ( "Test User 1" ) ;
64+ }
65+
4066 [ ExecuteForAllRepositories ]
4167 public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Specification ( IRepository < Contact , string > repository )
4268 {
@@ -53,6 +79,22 @@ public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Specification(
5379 result2 . Name . ShouldEqual ( "Test User 1" ) ;
5480 }
5581
82+ [ ExecuteForAllRepositories ]
83+ public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Predicate ( IRepository < Contact , string > repository )
84+ {
85+ for ( int i = 1 ; i <= 3 ; i ++ )
86+ {
87+ var contact = new Contact { Name = "Test User " + i } ;
88+ repository . Add ( contact ) ;
89+ }
90+
91+ var result = repository . Find ( p => p . Name . StartsWith ( "Test" ) , new SortingOptions < Contact > ( "Name" , true ) ) ;
92+ result . Name . ShouldEqual ( "Test User 3" ) ;
93+
94+ var result2 = repository . Find ( p => p . Name . StartsWith ( "Test" ) , new SortingOptions < Contact > ( "Name" , false ) ) ;
95+ result2 . Name . ShouldEqual ( "Test User 1" ) ;
96+ }
97+
5698 [ ExecuteForAllRepositories ]
5799 public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Specification_WIth_Sorting_Predicate ( IRepository < Contact , string > repository )
58100 {
@@ -68,5 +110,21 @@ public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Specification_
68110 var result2 = repository . Find ( new Specification < Contact > ( p => p . Name . StartsWith ( "Test" ) ) , new SortingOptions < Contact , string > ( c => c . Name , false ) ) ;
69111 result2 . Name . ShouldEqual ( "Test User 1" ) ;
70112 }
113+
114+ [ ExecuteForAllRepositories ]
115+ public void Find_Should_Return_First_Ordered_Item_Which_Satisfies_Predicate_WIth_Sorting_Predicate ( IRepository < Contact , string > repository )
116+ {
117+ for ( int i = 1 ; i <= 3 ; i ++ )
118+ {
119+ var contact = new Contact { Name = "Test User " + i } ;
120+ repository . Add ( contact ) ;
121+ }
122+
123+ var result = repository . Find ( p => p . Name . StartsWith ( "Test" ) , new SortingOptions < Contact , string > ( c => c . Name , true ) ) ;
124+ result . Name . ShouldEqual ( "Test User 3" ) ;
125+
126+ var result2 = repository . Find ( p => p . Name . StartsWith ( "Test" ) , new SortingOptions < Contact , string > ( c => c . Name , false ) ) ;
127+ result2 . Name . ShouldEqual ( "Test User 1" ) ;
128+ }
71129 }
72130}
0 commit comments