@@ -48,6 +48,37 @@ public void AllShouldReturnAllRecords()
4848 Assert . AreEqual ( 2 , records . Count ) ;
4949 }
5050
51+ [ Test ]
52+ public void SelectShouldReturnSubsetOfColumns ( )
53+ {
54+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
55+ var db = Database . Open ( ) ;
56+ db . Test . Insert ( Id : 1 , Name : "Alice" ) ;
57+ db . Test . Insert ( Id : 2 , Name : "Bob" ) ;
58+ List < IDictionary < string , object > > records = db . Test . All ( ) . Select ( db . Test . Name ) . ToList < IDictionary < string , object > > ( ) ;
59+ Assert . IsNotNull ( records ) ;
60+ Assert . AreEqual ( 2 , records . Count ) ;
61+ Assert . False ( records [ 0 ] . ContainsKey ( "Id" ) ) ;
62+ Assert . True ( records [ 0 ] . ContainsKey ( "Name" ) ) ;
63+ Assert . False ( records [ 1 ] . ContainsKey ( "Id" ) ) ;
64+ Assert . True ( records [ 1 ] . ContainsKey ( "Name" ) ) ;
65+ }
66+
67+ [ Test ]
68+ public void SelectWithAggregateShouldReturnAggregates ( )
69+ {
70+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
71+ var db = Database . Open ( ) ;
72+ db . Test . Insert ( Id : 1 , Name : "Alice" , Age : 20 ) ;
73+ db . Test . Insert ( Id : 2 , Name : "Alice" , Age : 30 ) ;
74+ db . Test . Insert ( Id : 3 , Name : "Bob" , Age : 40 ) ;
75+ db . Test . Insert ( Id : 4 , Name : "Bob" , Age : 50 ) ;
76+ var records = db . Test . All ( ) . Select ( db . Test . Name , db . Test . Age . Average ( ) . As ( "AverageAge" ) ) . ToList ( ) ;
77+ Assert . AreEqual ( 2 , records . Count ) ;
78+ Assert . AreEqual ( 25 , records [ 0 ] . AverageAge ) ;
79+ Assert . AreEqual ( 45 , records [ 1 ] . AverageAge ) ;
80+ }
81+
5182 [ Test ]
5283 public void ShouldWorkWithByteArrays ( )
5384 {
@@ -83,6 +114,63 @@ public void TestDeleteBy()
83114 Assert . IsNull ( record ) ;
84115 }
85116
117+ [ Test ]
118+ public void TestOrderBy ( )
119+ {
120+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
121+ var db = Database . Open ( ) ;
122+ for ( int i = 0 ; i < 10 ; i ++ )
123+ {
124+ db . Test . Insert ( Id : i , Name : "Alice" ) ;
125+ }
126+
127+ var records = db . Test . All ( ) . OrderByIdDescending ( ) . ToList ( ) ;
128+ Assert . AreEqual ( 9 , records [ 0 ] . Id ) ;
129+ }
130+
131+ [ Test ]
132+ public void TestSkip ( )
133+ {
134+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
135+ var db = Database . Open ( ) ;
136+ for ( int i = 0 ; i < 10 ; i ++ )
137+ {
138+ db . Test . Insert ( Id : i , Name : "Alice" ) ;
139+ }
140+
141+ var records = db . Test . All ( ) . Skip ( 5 ) . ToList ( ) ;
142+ Assert . AreEqual ( 5 , records . Count ) ;
143+ }
144+
145+ [ Test ]
146+ public void TestTake ( )
147+ {
148+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
149+ var db = Database . Open ( ) ;
150+ for ( int i = 0 ; i < 10 ; i ++ )
151+ {
152+ db . Test . Insert ( Id : i , Name : "Alice" ) ;
153+ }
154+
155+ var records = db . Test . All ( ) . Take ( 5 ) . ToList ( ) ;
156+ Assert . AreEqual ( 5 , records . Count ) ;
157+ }
158+
159+ [ Test ]
160+ public void TestSkipAndTake ( )
161+ {
162+ Database . UseMockAdapter ( new InMemoryAdapter ( ) ) ;
163+ var db = Database . Open ( ) ;
164+ for ( int i = 0 ; i < 10 ; i ++ )
165+ {
166+ db . Test . Insert ( Id : i , Name : "Alice" ) ;
167+ }
168+
169+ var records = db . Test . All ( ) . OrderByIdDescending ( ) . Skip ( 1 ) . Take ( 1 ) . ToList ( ) ;
170+ Assert . AreEqual ( 1 , records . Count ) ;
171+ Assert . AreEqual ( 8 , records [ 0 ] . Id ) ;
172+ }
173+
86174 /// <summary>
87175 ///A test for Find
88176 ///</summary>
0 commit comments