@@ -215,17 +215,43 @@ mod decimal {
215
215
== Decimal :: from_str_exact( "0.01234567890123456789" ) . unwrap( ) ,
216
216
"CAST('-12345678901234' AS DECIMAL(28,5))"
217
217
== Decimal :: from_str_exact( "-12345678901234" ) . unwrap( ) ,
218
- "CAST('-1234567890.1234' AS MONEY)" == Decimal :: from_str_exact( "-1234567890.1234" ) . unwrap( ) ,
219
- "CAST('-123456.1234' AS SMALLMONEY)" == Decimal :: from_str_exact( "-123456.1234" ) . unwrap( ) ,
218
+ ) ) ;
219
+
220
+ test_type ! ( money_boundary_tests<Decimal >(
221
+ Mssql ,
220
222
"CAST('922337203685477.5807' AS MONEY)" == Decimal :: from_str_exact( "922337203685477.5807" ) . unwrap( ) ,
221
223
"CAST('-922337203685477.5808' AS MONEY)" == Decimal :: from_str_exact( "-922337203685477.5808" ) . unwrap( ) ,
224
+ "CAST('922337203685477.5806' AS MONEY)" == Decimal :: from_str_exact( "922337203685477.5806" ) . unwrap( ) ,
225
+ "CAST('-922337203685477.5807' AS MONEY)" == Decimal :: from_str_exact( "-922337203685477.5807" ) . unwrap( ) ,
226
+ "CAST('922337203685477.0000' AS MONEY)" == Decimal :: from_str_exact( "922337203685477.0000" ) . unwrap( ) ,
227
+ "CAST('-922337203685477.0000' AS MONEY)" == Decimal :: from_str_exact( "-922337203685477.0000" ) . unwrap( ) ,
228
+ ) ) ;
229
+
230
+ test_type ! ( smallmoney_boundary_tests<Decimal >(
231
+ Mssql ,
222
232
"CAST('214748.3647' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.3647" ) . unwrap( ) ,
223
233
"CAST('-214748.3648' AS SMALLMONEY)" == Decimal :: from_str_exact( "-214748.3648" ) . unwrap( ) ,
234
+ "CAST('214748.3646' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.3646" ) . unwrap( ) ,
235
+ "CAST('-214748.3647' AS SMALLMONEY)" == Decimal :: from_str_exact( "-214748.3647" ) . unwrap( ) ,
236
+ "CAST('214748.0000' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.0000" ) . unwrap( ) ,
237
+ "CAST('-214748.0000' AS SMALLMONEY)" == Decimal :: from_str_exact( "-214748.0000" ) . unwrap( ) ,
238
+ ) ) ;
239
+
240
+ test_type ! ( money_precision_tests<Decimal >(
241
+ Mssql ,
242
+ "CAST('0.0000' AS MONEY)" == Decimal :: from_str_exact( "0.0000" ) . unwrap( ) ,
224
243
"CAST('0.0001' AS MONEY)" == Decimal :: from_str_exact( "0.0001" ) . unwrap( ) ,
225
244
"CAST('-0.0001' AS MONEY)" == Decimal :: from_str_exact( "-0.0001" ) . unwrap( ) ,
226
- "CAST('0.0000' AS MONEY)" == Decimal :: from_str_exact( "0.0000" ) . unwrap( ) ,
227
- "CAST('999999999999999.9999' AS MONEY)" == Decimal :: from_str_exact( "999999999999999.9999" ) . unwrap( ) ,
228
- "CAST('-999999999999999.9999' AS MONEY)" == Decimal :: from_str_exact( "-999999999999999.9999" ) . unwrap( ) ,
245
+ "CAST('0.9999' AS MONEY)" == Decimal :: from_str_exact( "0.9999" ) . unwrap( ) ,
246
+ "CAST('-0.9999' AS MONEY)" == Decimal :: from_str_exact( "-0.9999" ) . unwrap( ) ,
247
+ "CAST('1.0000' AS MONEY)" == Decimal :: from_str_exact( "1.0000" ) . unwrap( ) ,
248
+ "CAST('-1.0000' AS MONEY)" == Decimal :: from_str_exact( "-1.0000" ) . unwrap( ) ,
249
+ "CAST('2.15' AS MONEY)" == Decimal :: from_str_exact( "2.15" ) . unwrap( ) ,
250
+ "CAST('214748.3647' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.3647" ) . unwrap( ) ,
251
+ "CAST('922337203685477.5807' AS MONEY)" == Decimal :: from_str_exact( "922337203685477.5807" ) . unwrap( ) ,
252
+ "CAST('-922337203685477.5808' AS MONEY)" == Decimal :: from_str_exact( "-922337203685477.5808" ) . unwrap( ) ,
253
+ "CAST('214748.3647' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.3647" ) . unwrap( ) ,
254
+ "CAST('-214748.3648' AS SMALLMONEY)" == Decimal :: from_str_exact( "-214748.3648" ) . unwrap( ) ,
229
255
) ) ;
230
256
}
231
257
0 commit comments