@@ -58,6 +58,29 @@ mod unit {
58
58
assert_eq ! ( number. as_i32( ) , Some ( 40_000 ) ) ;
59
59
}
60
60
61
+ #[ test]
62
+ fn as_fixed_point ( ) {
63
+ let number = JsonValue :: from ( 3.14 ) ;
64
+
65
+ assert_eq ! ( number. as_fixed_point_u64( 4 ) . unwrap( ) , 31400_u64 ) ;
66
+ assert_eq ! ( number. as_fixed_point_u64( 2 ) . unwrap( ) , 314_u64 ) ;
67
+ assert_eq ! ( number. as_fixed_point_u64( 0 ) . unwrap( ) , 3_u64 ) ;
68
+
69
+ assert_eq ! ( number. as_fixed_point_i64( 4 ) . unwrap( ) , 31400_i64 ) ;
70
+ assert_eq ! ( number. as_fixed_point_i64( 2 ) . unwrap( ) , 314_i64 ) ;
71
+ assert_eq ! ( number. as_fixed_point_i64( 0 ) . unwrap( ) , 3_i64 ) ;
72
+
73
+ let number = JsonValue :: from ( -3.14 ) ;
74
+
75
+ assert_eq ! ( number. as_fixed_point_u64( 4 ) , None ) ;
76
+ assert_eq ! ( number. as_fixed_point_u64( 2 ) , None ) ;
77
+ assert_eq ! ( number. as_fixed_point_u64( 0 ) , None ) ;
78
+
79
+ assert_eq ! ( number. as_fixed_point_i64( 4 ) . unwrap( ) , -31400_i64 ) ;
80
+ assert_eq ! ( number. as_fixed_point_i64( 2 ) . unwrap( ) , -314_i64 ) ;
81
+ assert_eq ! ( number. as_fixed_point_i64( 0 ) . unwrap( ) , -3_i64 ) ;
82
+ }
83
+
61
84
#[ test]
62
85
fn is_as_boolean ( ) {
63
86
let boolean = JsonValue :: Boolean ( true ) ;
@@ -1261,6 +1284,30 @@ mod json_checker_pass {
1261
1284
1262
1285
mod number {
1263
1286
use super :: json:: number:: Number ;
1287
+ use std:: f64;
1288
+
1289
+ #[ test]
1290
+ fn is_nan ( ) {
1291
+ assert ! ( Number :: from( f64 :: NAN ) . is_nan( ) ) ;
1292
+ }
1293
+
1294
+ #[ test]
1295
+ fn is_zero ( ) {
1296
+ assert ! ( Number :: from( 0 ) . is_zero( ) ) ;
1297
+ assert ! ( Number :: from_parts( true , 0 , 0 ) . is_zero( ) ) ;
1298
+ assert ! ( Number :: from_parts( true , 0 , 100 ) . is_zero( ) ) ;
1299
+ assert ! ( Number :: from_parts( true , 0 , -100 ) . is_zero( ) ) ;
1300
+ assert ! ( Number :: from_parts( false , 0 , 0 ) . is_zero( ) ) ;
1301
+ assert ! ( Number :: from_parts( false , 0 , 100 ) . is_zero( ) ) ;
1302
+ assert ! ( Number :: from_parts( false , 0 , -100 ) . is_zero( ) ) ;
1303
+ assert ! ( !Number :: from( f64 :: NAN ) . is_zero( ) ) ;
1304
+ }
1305
+
1306
+ #[ test]
1307
+ fn is_empty ( ) {
1308
+ assert ! ( Number :: from( 0 ) . is_empty( ) ) ;
1309
+ assert ! ( Number :: from( f64 :: NAN ) . is_empty( ) ) ;
1310
+ }
1264
1311
1265
1312
#[ test]
1266
1313
fn eq ( ) {
@@ -1328,4 +1375,32 @@ mod number {
1328
1375
1329
1376
assert_eq ! ( f64 :: from( number) , 2.225073858507201e-308 ) ;
1330
1377
}
1378
+
1379
+ #[ test]
1380
+ fn as_fixed_point_u64 ( ) {
1381
+ assert_eq ! ( Number :: from( 1.2345 ) . as_fixed_point_u64( 4 ) . unwrap( ) , 12345 ) ;
1382
+ assert_eq ! ( Number :: from( 1.2345 ) . as_fixed_point_u64( 2 ) . unwrap( ) , 123 ) ;
1383
+ assert_eq ! ( Number :: from( 1.2345 ) . as_fixed_point_u64( 0 ) . unwrap( ) , 1 ) ;
1384
+
1385
+ assert_eq ! ( Number :: from( 5 ) . as_fixed_point_u64( 0 ) . unwrap( ) , 5 ) ;
1386
+ assert_eq ! ( Number :: from( 5 ) . as_fixed_point_u64( 2 ) . unwrap( ) , 500 ) ;
1387
+ assert_eq ! ( Number :: from( 5 ) . as_fixed_point_u64( 4 ) . unwrap( ) , 50000 ) ;
1388
+
1389
+ assert_eq ! ( Number :: from( -1 ) . as_fixed_point_u64( 0 ) , None ) ;
1390
+ assert_eq ! ( Number :: from( f64 :: NAN ) . as_fixed_point_u64( 0 ) , None ) ;
1391
+ }
1392
+
1393
+ #[ test]
1394
+ fn as_fixed_point_i64 ( ) {
1395
+ assert_eq ! ( Number :: from( -1.2345 ) . as_fixed_point_i64( 4 ) . unwrap( ) , -12345 ) ;
1396
+ assert_eq ! ( Number :: from( -1.2345 ) . as_fixed_point_i64( 2 ) . unwrap( ) , -123 ) ;
1397
+ assert_eq ! ( Number :: from( -1.2345 ) . as_fixed_point_i64( 0 ) . unwrap( ) , -1 ) ;
1398
+
1399
+ assert_eq ! ( Number :: from( -5 ) . as_fixed_point_i64( 0 ) . unwrap( ) , -5 ) ;
1400
+ assert_eq ! ( Number :: from( -5 ) . as_fixed_point_i64( 2 ) . unwrap( ) , -500 ) ;
1401
+ assert_eq ! ( Number :: from( -5 ) . as_fixed_point_i64( 4 ) . unwrap( ) , -50000 ) ;
1402
+
1403
+ assert_eq ! ( Number :: from( -1 ) . as_fixed_point_i64( 0 ) , Some ( -1 ) ) ;
1404
+ assert_eq ! ( Number :: from( f64 :: NAN ) . as_fixed_point_i64( 0 ) , None ) ;
1405
+ }
1331
1406
}
0 commit comments