@@ -73,7 +73,7 @@ fn test_count_max() {
7373}
7474
7575#[ test]
76- fn max_returns_same_type_as_expression_being_maxed ( ) {
76+ fn max_returns_same_type_as_expression_being_maximized ( ) {
7777 let connection = connection ( ) ;
7878 setup_users_table ( & connection) ;
7979 let source = users. select ( max ( name) ) ;
@@ -136,6 +136,65 @@ fn max_accepts_all_numeric_string_and_date_types() {
136136 let _ = users. select ( max ( arbitrary :: < types:: Nullable < types:: Text > > ( ) ) ) ;
137137}
138138
139+ #[ test]
140+ fn test_count_min ( ) {
141+ use self :: numbers:: columns:: * ;
142+ use self :: numbers:: table as numbers;
143+
144+ let connection = connection ( ) ;
145+ connection. execute ( "CREATE TABLE numbers (n integer)" ) . unwrap ( ) ;
146+ connection. execute ( "INSERT INTO numbers (n) VALUES (2), (1), (5)" ) . unwrap ( ) ;
147+ let source = numbers. select ( min ( n) ) ;
148+
149+ assert_eq ! ( Ok ( 1 ) , source. first( & connection) ) ;
150+ connection. execute ( "DELETE FROM numbers WHERE n = 1" ) . unwrap ( ) ;
151+ assert_eq ! ( Ok ( 2 ) , source. first( & connection) ) ;
152+ }
153+
154+ #[ test]
155+ fn min_returns_same_type_as_expression_being_minimized ( ) {
156+ let connection = connection ( ) ;
157+ setup_users_table ( & connection) ;
158+ let source = users. select ( min ( name) ) ;
159+
160+ let data: & [ _ ] = & [
161+ NewUser :: new ( "B" , None ) ,
162+ NewUser :: new ( "C" , None ) ,
163+ NewUser :: new ( "A" , None ) ,
164+ ] ;
165+ insert ( data) . into ( users) . execute ( & connection) . unwrap ( ) ;
166+ assert_eq ! ( Ok ( "A" . to_string( ) ) , source. first( & connection) ) ;
167+ connection. execute ( "DELETE FROM users WHERE name = 'A'" ) . unwrap ( ) ;
168+ assert_eq ! ( Ok ( "B" . to_string( ) ) , source. first( & connection) ) ;
169+ }
170+
171+ #[ test]
172+ fn min_accepts_all_numeric_string_and_date_types ( ) {
173+ let _ = users. select ( min ( arbitrary :: < types:: SmallSerial > ( ) ) ) ;
174+ let _ = users. select ( min ( arbitrary :: < types:: Serial > ( ) ) ) ;
175+ let _ = users. select ( min ( arbitrary :: < types:: BigSerial > ( ) ) ) ;
176+ let _ = users. select ( min ( arbitrary :: < types:: SmallInt > ( ) ) ) ;
177+ let _ = users. select ( min ( arbitrary :: < types:: Integer > ( ) ) ) ;
178+ let _ = users. select ( min ( arbitrary :: < types:: BigInt > ( ) ) ) ;
179+ let _ = users. select ( min ( arbitrary :: < types:: Float > ( ) ) ) ;
180+ let _ = users. select ( min ( arbitrary :: < types:: Double > ( ) ) ) ;
181+
182+ let _ = users. select ( min ( arbitrary :: < types:: VarChar > ( ) ) ) ;
183+ let _ = users. select ( min ( arbitrary :: < types:: Text > ( ) ) ) ;
184+
185+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: SmallSerial > > ( ) ) ) ;
186+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: Serial > > ( ) ) ) ;
187+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: BigSerial > > ( ) ) ) ;
188+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: SmallInt > > ( ) ) ) ;
189+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: Integer > > ( ) ) ) ;
190+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: BigInt > > ( ) ) ) ;
191+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: Float > > ( ) ) ) ;
192+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: Double > > ( ) ) ) ;
193+
194+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: VarChar > > ( ) ) ) ;
195+ let _ = users. select ( min ( arbitrary :: < types:: Nullable < types:: Text > > ( ) ) ) ;
196+ }
197+
139198sql_function ! ( coalesce, coalesce_t, ( x: types:: Nullable <types:: VarChar >, y: types:: VarChar ) -> types:: VarChar ) ;
140199
141200#[ test]
0 commit comments