@@ -215,17 +215,43 @@ mod decimal {
215215 == Decimal :: from_str_exact( "0.01234567890123456789" ) . unwrap( ) ,
216216 "CAST('-12345678901234' AS DECIMAL(28,5))"
217217 == 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 ,
220222 "CAST('922337203685477.5807' AS MONEY)" == Decimal :: from_str_exact( "922337203685477.5807" ) . unwrap( ) ,
221223 "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 ,
222232 "CAST('214748.3647' AS SMALLMONEY)" == Decimal :: from_str_exact( "214748.3647" ) . unwrap( ) ,
223233 "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( ) ,
224243 "CAST('0.0001' AS MONEY)" == Decimal :: from_str_exact( "0.0001" ) . unwrap( ) ,
225244 "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( ) ,
229255 ) ) ;
230256}
231257
0 commit comments