1
1
using System ;
2
+ using System . Globalization ;
2
3
using MySql . Data . Types ;
3
4
using Xunit ;
4
5
@@ -30,7 +31,7 @@ public void NonZeroMySqlDateTimeIsValidDateTime()
30
31
[ Fact ]
31
32
public void CreateFromDateTime ( )
32
33
{
33
- var msdt = new MySqlDateTime ( new DateTime ( 2018 , 6 , 9 , 12 , 34 , 56 , 123 ) . AddTicks ( 4560 ) ) ;
34
+ var msdt = new MySqlDateTime ( s_dateTime ) ;
34
35
Assert . True ( msdt . IsValidDateTime ) ;
35
36
Assert . Equal ( 2018 , msdt . Year ) ;
36
37
Assert . Equal ( 6 , msdt . Month ) ;
@@ -45,10 +46,10 @@ public void CreateFromDateTime()
45
46
[ Fact ]
46
47
public void GetDateTime ( )
47
48
{
48
- var msdt = new MySqlDateTime ( 2018 , 6 , 9 , 12 , 34 , 56 , 123456 ) ;
49
+ var msdt = s_mySqlDateTime ;
49
50
Assert . True ( msdt . IsValidDateTime ) ;
50
51
var dt = msdt . GetDateTime ( ) ;
51
- Assert . Equal ( new DateTime ( 2018 , 6 , 9 , 12 , 34 , 56 , 123 ) . AddTicks ( 4560 ) , dt ) ;
52
+ Assert . Equal ( s_dateTime , dt ) ;
52
53
}
53
54
54
55
[ Fact ]
@@ -67,5 +68,81 @@ public void SetMicrosecond()
67
68
msdt . Microsecond = 123456 ;
68
69
Assert . Equal ( 123 , msdt . Millisecond ) ;
69
70
}
71
+
72
+ [ Fact ]
73
+ public void ConvertibleToDateTime ( )
74
+ {
75
+ IConvertible convertible = s_mySqlDateTime ;
76
+ var dt = convertible . ToDateTime ( CultureInfo . InvariantCulture ) ;
77
+ Assert . Equal ( s_dateTime , dt ) ;
78
+ }
79
+
80
+ [ Fact ]
81
+ public void ConvertToDateTime ( )
82
+ {
83
+ object obj = s_mySqlDateTime ;
84
+ var dt = Convert . ToDateTime ( obj ) ;
85
+ Assert . Equal ( s_dateTime , dt ) ;
86
+ }
87
+
88
+ [ Fact ]
89
+ public void ChangeTypeToDateTime ( )
90
+ {
91
+ object obj = s_mySqlDateTime ;
92
+ var dt = Convert . ChangeType ( obj , TypeCode . DateTime ) ;
93
+ Assert . Equal ( s_dateTime , dt ) ;
94
+ }
95
+
96
+ [ Fact ]
97
+ public void NotConvertibleToDateTime ( )
98
+ {
99
+ IConvertible convertible = new MySqlDateTime ( ) ;
100
+ #if ! BASELINE
101
+ Assert . Throws < InvalidCastException > ( ( ) => convertible . ToDateTime ( CultureInfo . InvariantCulture ) ) ;
102
+ #else
103
+ Assert . Throws < MySqlConversionException > ( ( ) => convertible . ToDateTime ( CultureInfo . InvariantCulture ) ) ;
104
+ #endif
105
+ }
106
+
107
+ [ Fact ]
108
+ public void NotConvertToDateTime ( )
109
+ {
110
+ object obj = new MySqlDateTime ( ) ;
111
+ #if ! BASELINE
112
+ Assert . Throws < InvalidCastException > ( ( ) => Convert . ToDateTime ( obj ) ) ;
113
+ #else
114
+ Assert . Throws < MySqlConversionException > ( ( ) => Convert . ToDateTime ( obj ) ) ;
115
+ #endif
116
+ }
117
+
118
+ [ Fact ]
119
+ public void NotChangeTypeToDateTime ( )
120
+ {
121
+ object obj = new MySqlDateTime ( ) ;
122
+ #if ! BASELINE
123
+ Assert . Throws < InvalidCastException > ( ( ) => Convert . ChangeType ( obj , TypeCode . DateTime ) ) ;
124
+ #else
125
+ Assert . Throws < MySqlConversionException > ( ( ) => Convert . ChangeType ( obj , TypeCode . DateTime ) ) ;
126
+ #endif
127
+ }
128
+
129
+ #if ! BASELINE
130
+ [ Fact ]
131
+ public void ValidDateTimeConvertibleToString ( )
132
+ {
133
+ IConvertible convertible = s_mySqlDateTime ;
134
+ Assert . Equal ( "06/09/2018 12:34:56" , convertible . ToString ( CultureInfo . InvariantCulture ) ) ;
135
+ }
136
+
137
+ [ Fact ]
138
+ public void InvalidDateTimeConvertibleToString ( )
139
+ {
140
+ IConvertible convertible = new MySqlDateTime ( ) ;
141
+ Assert . Equal ( "0000-00-00" , convertible . ToString ( CultureInfo . InvariantCulture ) ) ;
142
+ }
143
+ #endif
144
+
145
+ static readonly MySqlDateTime s_mySqlDateTime = new MySqlDateTime ( 2018 , 6 , 9 , 12 , 34 , 56 , 123456 ) ;
146
+ static readonly DateTime s_dateTime = new DateTime ( 2018 , 6 , 9 , 12 , 34 , 56 , 123 ) . AddTicks ( 4560 ) ;
70
147
}
71
148
}
0 commit comments