14
14
*/
15
15
16
16
using System ;
17
- using System . Collections . Generic ;
18
- using System . Linq ;
19
- using System . Text ;
20
- using System . Threading . Tasks ;
21
- using MongoDB . Bson ;
22
17
using FluentAssertions ;
23
18
using System . Globalization ;
24
19
using Xunit ;
@@ -40,27 +35,30 @@ public void Default_value()
40
35
[ InlineData ( "-1.01" , "-1.01" ) ]
41
36
[ InlineData ( "-1" , "-1" ) ]
42
37
[ InlineData ( "0" , "0" ) ]
38
+ [ InlineData ( "0.000" , "0.000" ) ]
43
39
[ InlineData ( "1" , "1" ) ]
44
40
[ InlineData ( "1.01" , "1.01" ) ]
41
+ [ InlineData ( "1.000" , "1.000" ) ]
45
42
[ InlineData ( "79228162514264337593543950335" , "79228162514264337593543950335" ) ]
46
43
[ InlineData ( "-79228162514264337593543950335" , "-79228162514264337593543950335" ) ]
47
- public void Decimal ( string valueString , string s )
44
+ public void Decimal ( string valueString , string expectedResult )
48
45
{
49
46
var value = decimal . Parse ( valueString , CultureInfo . InvariantCulture ) ;
50
47
var subject = new Decimal128 ( value ) ;
51
48
52
- subject . ToString ( ) . Should ( ) . Be ( s ) ;
49
+ subject . ToString ( ) . Should ( ) . Be ( expectedResult ) ;
53
50
AssertSpecialProperties ( subject ) ;
54
51
55
52
var result = Decimal128 . ToDecimal ( subject ) ;
56
- result . Should ( ) . Be ( value ) ;
53
+ result . ToString ( ) . Should ( ) . Be ( value . ToString ( ) ) ;
57
54
58
55
result = ( decimal ) subject ;
59
- result . Should ( ) . Be ( value ) ;
56
+ result . ToString ( ) . Should ( ) . Be ( value . ToString ( ) ) ;
60
57
}
61
58
62
59
[ Theory ]
63
60
[ InlineData ( "0" , "0" ) ]
61
+ [ InlineData ( "0.00" , "0.00" ) ]
64
62
[ InlineData ( "79228162514264337593543950335" , "79228162514264337593543950335" ) ]
65
63
[ InlineData ( "1E1" , "10" ) ]
66
64
[ InlineData ( "1E2" , "100" ) ]
@@ -76,14 +74,26 @@ public void Decimal(string valueString, string s)
76
74
[ InlineData ( "1E-57" , "0" ) ]
77
75
[ InlineData ( "1E-99" , "0" ) ]
78
76
[ InlineData ( "1E-6111" , "0" ) ]
79
- [ InlineData ( "10000.0000000000000000000000001" , "10000" ) ] // see: CSHARP-2001
77
+ [ InlineData ( "10000.0000000000000000000000001" , "10000.000000000000000000000000 " ) ] // see: CSHARP-2001
80
78
public void ToDecimal_should_return_expected_result ( string valueString , string expectedResultString )
81
79
{
82
80
var subject = Decimal128 . Parse ( valueString ) ;
83
81
var expectedResult = decimal . Parse ( expectedResultString ) ;
84
82
85
83
var result = Decimal128 . ToDecimal ( subject ) ;
86
84
85
+ result . ToString ( ) . Should ( ) . Be ( expectedResult . ToString ( ) ) ;
86
+ }
87
+
88
+ [ Theory ]
89
+ [ InlineData ( 0xE000_0000_0000_0000UL , 0 ) ]
90
+ [ InlineData ( 0xE000_2000_0000_0000UL , 0 ) ]
91
+ public void ToDecimal_should_return_expected_result_for_second_form ( ulong highBits , ulong expectedResult )
92
+ {
93
+ var subject = Decimal128 . FromIEEEBits ( highBits , 0x0 ) ;
94
+
95
+ var result = Decimal128 . ToDecimal ( subject ) ;
96
+
87
97
result . Should ( ) . Be ( expectedResult ) ;
88
98
}
89
99
0 commit comments