@@ -57,7 +57,169 @@ public void DbTypesToMySqlDbTypes(DbType[] dbTypes, MySqlDbType[] mySqlDbTypes)
5757 Assert . Equal ( mySqlDbType , parameter . MySqlDbType ) ;
5858 Assert . Equal ( dbTypes [ 0 ] , parameter . DbType ) ;
5959 }
60+ }
61+
62+ [ Fact ]
63+ public void ConstructorSimple ( )
64+ {
65+ var parameter = new MySqlParameter ( ) ;
66+ Assert . Null ( parameter . ParameterName ) ;
67+ #if BASELINE
68+ Assert . Equal ( MySqlDbType . Decimal , parameter . MySqlDbType ) ;
69+ Assert . Equal ( DbType . AnsiString , parameter . DbType ) ;
70+ #else
71+ Assert . Equal ( MySqlDbType . VarChar , parameter . MySqlDbType ) ;
72+ Assert . Equal ( DbType . String , parameter . DbType ) ;
73+ #endif
74+ Assert . False ( parameter . IsNullable ) ;
75+ Assert . Null ( parameter . Value ) ;
76+ Assert . Equal ( ParameterDirection . Input , parameter . Direction ) ;
77+ Assert . Equal ( 0 , parameter . Precision ) ;
78+ Assert . Equal ( 0 , parameter . Scale ) ;
79+ Assert . Equal ( 0 , parameter . Size ) ;
80+ #if ! NETCOREAPP1_1_2
81+ Assert . Equal ( DataRowVersion . Current , parameter . SourceVersion ) ;
82+ #endif
83+ Assert . Null ( parameter . SourceColumn ) ;
84+ }
85+
86+ [ Fact ]
87+ public void ConstructorNameValue ( )
88+ {
89+ var parameter = new MySqlParameter ( "@name" , 1.0 ) ;
90+ Assert . Equal ( "@name" , parameter . ParameterName ) ;
91+ Assert . Equal ( MySqlDbType . Double , parameter . MySqlDbType ) ;
92+ Assert . Equal ( DbType . Double , parameter . DbType ) ;
93+ Assert . False ( parameter . IsNullable ) ;
94+ Assert . Equal ( 1.0 , parameter . Value ) ;
95+ Assert . Equal ( ParameterDirection . Input , parameter . Direction ) ;
96+ Assert . Equal ( 0 , parameter . Precision ) ;
97+ Assert . Equal ( 0 , parameter . Scale ) ;
98+ Assert . Equal ( 0 , parameter . Size ) ;
99+ #if ! NETCOREAPP1_1_2
100+ Assert . Equal ( DataRowVersion . Current , parameter . SourceVersion ) ;
101+ #endif
102+ Assert . Null ( parameter . SourceColumn ) ;
103+ }
104+
105+ [ Fact ]
106+ public void ConstructorNameType ( )
107+ {
108+ var parameter = new MySqlParameter ( "@name" , MySqlDbType . Double ) ;
109+ Assert . Equal ( "@name" , parameter . ParameterName ) ;
110+ Assert . Equal ( MySqlDbType . Double , parameter . MySqlDbType ) ;
111+ Assert . Equal ( DbType . Double , parameter . DbType ) ;
112+ Assert . False ( parameter . IsNullable ) ;
113+ Assert . Null ( parameter . Value ) ;
114+ Assert . Equal ( ParameterDirection . Input , parameter . Direction ) ;
115+ Assert . Equal ( 0 , parameter . Precision ) ;
116+ Assert . Equal ( 0 , parameter . Scale ) ;
117+ Assert . Equal ( 0 , parameter . Size ) ;
118+ #if ! NETCOREAPP1_1_2
119+ Assert . Equal ( DataRowVersion . Current , parameter . SourceVersion ) ;
120+ #endif
121+ Assert . Null ( parameter . SourceColumn ) ;
122+ }
123+
124+ [ Fact ]
125+ public void ConstructorNameTypeSize ( )
126+ {
127+ var parameter = new MySqlParameter ( "@name" , MySqlDbType . Double , 4 ) ;
128+ Assert . Equal ( "@name" , parameter . ParameterName ) ;
129+ Assert . Equal ( MySqlDbType . Double , parameter . MySqlDbType ) ;
130+ Assert . Equal ( DbType . Double , parameter . DbType ) ;
131+ Assert . False ( parameter . IsNullable ) ;
132+ Assert . Null ( parameter . Value ) ;
133+ Assert . Equal ( ParameterDirection . Input , parameter . Direction ) ;
134+ Assert . Equal ( 0 , parameter . Precision ) ;
135+ Assert . Equal ( 0 , parameter . Scale ) ;
136+ Assert . Equal ( 4 , parameter . Size ) ;
137+ #if ! NETCOREAPP1_1_2
138+ Assert . Equal ( DataRowVersion . Current , parameter . SourceVersion ) ;
139+ #endif
140+ Assert . Null ( parameter . SourceColumn ) ;
141+ }
142+
143+ [ Fact ]
144+ public void ConstructorNameTypeSizeSourceColumn ( )
145+ {
146+ var parameter = new MySqlParameter ( "@name" , MySqlDbType . Int32 , 4 , "source" ) ;
147+ Assert . Equal ( "@name" , parameter . ParameterName ) ;
148+ Assert . Equal ( MySqlDbType . Int32 , parameter . MySqlDbType ) ;
149+ Assert . Equal ( DbType . Int32 , parameter . DbType ) ;
150+ Assert . False ( parameter . IsNullable ) ;
151+ Assert . Null ( parameter . Value ) ;
152+ Assert . Equal ( ParameterDirection . Input , parameter . Direction ) ;
153+ Assert . Equal ( 0 , parameter . Precision ) ;
154+ Assert . Equal ( 0 , parameter . Scale ) ;
155+ Assert . Equal ( 4 , parameter . Size ) ;
156+ #if ! NETCOREAPP1_1_2
157+ Assert . Equal ( DataRowVersion . Current , parameter . SourceVersion ) ;
158+ #endif
159+ Assert . Equal ( "source" , parameter . SourceColumn ) ;
160+ }
161+
162+ [ Theory ]
163+ [ InlineData ( 1 , DbType . Int32 , MySqlDbType . Int32 ) ]
164+ [ InlineData ( 1.0 , DbType . Double , MySqlDbType . Double ) ]
165+ [ InlineData ( 1.0f , DbType . Single , MySqlDbType . Float ) ]
166+ [ InlineData ( "1" , DbType . String , MySqlDbType . VarChar ) ]
167+ #if BASELINE
168+ [ InlineData ( '1' , DbType . Object , MySqlDbType . Blob ) ]
169+ #else
170+ [ InlineData ( '1' , DbType . String , MySqlDbType . VarChar ) ]
171+ #endif
172+ public void SetValueInfersType ( object value , DbType expectedDbType , MySqlDbType expectedMySqlDbType )
173+ {
174+ var parameter = new MySqlParameter { Value = value } ;
175+ Assert . Equal ( expectedDbType , parameter . DbType ) ;
176+ Assert . Equal ( expectedMySqlDbType , parameter . MySqlDbType ) ;
177+ }
178+
179+ [ Fact ]
180+ public void SetValueToByteArrayInfersType ( )
181+ {
182+ var parameter = new MySqlParameter { Value = new byte [ 1 ] } ;
183+ #if BASELINE
184+ Assert . Equal ( DbType . Object , parameter . DbType ) ;
185+ #else
186+ Assert . Equal ( DbType . Binary , parameter . DbType ) ;
187+ #endif
188+ Assert . Equal ( MySqlDbType . Blob , parameter . MySqlDbType ) ;
189+ }
190+
191+
192+ [ Fact ]
193+ public void SetValueDoesNotInferType ( )
194+ {
195+ var parameter = new MySqlParameter ( "@name" , MySqlDbType . Int32 ) ;
196+ Assert . Equal ( DbType . Int32 , parameter . DbType ) ;
197+ Assert . Equal ( MySqlDbType . Int32 , parameter . MySqlDbType ) ;
198+
199+ parameter . Value = 1.0 ;
200+ Assert . Equal ( DbType . Int32 , parameter . DbType ) ;
201+ Assert . Equal ( MySqlDbType . Int32 , parameter . MySqlDbType ) ;
202+ }
203+
204+ [ Fact ]
205+ public void ResetDbType ( )
206+ {
207+ var parameter = new MySqlParameter ( "@name" , 1 ) ;
208+ Assert . Equal ( DbType . Int32 , parameter . DbType ) ;
209+ Assert . Equal ( MySqlDbType . Int32 , parameter . MySqlDbType ) ;
210+
211+ parameter . ResetDbType ( ) ;
212+ #if BASELINE
213+ Assert . Equal ( MySqlDbType . Int32 , parameter . MySqlDbType ) ;
214+ Assert . Equal ( DbType . Int32 , parameter . DbType ) ;
215+ #else
216+ Assert . Equal ( MySqlDbType . VarChar , parameter . MySqlDbType ) ;
217+ Assert . Equal ( DbType . String , parameter . DbType ) ;
218+ #endif
60219
220+ parameter . Value = 1.0 ;
221+ Assert . Equal ( DbType . Double , parameter . DbType ) ;
222+ Assert . Equal ( MySqlDbType . Double , parameter . MySqlDbType ) ;
61223 }
62224 }
63225}
0 commit comments