Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitb5ce725

Browse files
ErikEJbenrr101
andauthored
[TEST] Improve SqlDataRecord DateOnly and TimeOnly coverage (#3128)
* Improve SqlDataRecord DateOnly and TimeOnly coverageMake SqlDecimalConvertToDecimal_TestInRange run on non-US systemsfixes#3125related to#2258* make tests actually pass :-(* netfx test fix---------Co-authored-by: Ben Russell <russellben@microsoft.com>
1 parentcefeabc commitb5ce725

File tree

2 files changed

+92
-8
lines changed

2 files changed

+92
-8
lines changed

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlDataRecordTest.cs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,11 @@ public void SqlRecordFillTest()
3434
newSqlMetaData("col11",SqlDbType.Real),
3535
newSqlMetaData("col12",SqlDbType.Decimal),
3636
newSqlMetaData("col13",SqlDbType.Money),
37-
newSqlMetaData("col14",SqlDbType.Variant)
37+
newSqlMetaData("col14",SqlDbType.Variant),
38+
#ifNET
39+
newSqlMetaData("col15",SqlDbType.Date),
40+
newSqlMetaData("col16",SqlDbType.Time),
41+
#endif
3842
};
3943

4044
SqlDataRecordrecord=newSqlDataRecord(metaData);
@@ -116,13 +120,22 @@ public void SqlRecordFillTest()
116120
record.SetSqlMoney(12,SqlMoney.MaxValue);
117121
Assert.Equal(SqlMoney.MaxValue,record.GetSqlMoney(12));
118122

123+
intoffset=1;
124+
#ifNET
125+
offset=3;
126+
record.SetValue(14,newDateOnly(2025,11,28));
127+
Assert.Equal(newDateTime(2025,11,28),record.GetValue(14));
128+
129+
record.SetValue(15,newTimeOnly(1,57,58));
130+
Assert.Equal(newTimeSpan(1,57,58),record.GetValue(15));
131+
#endif
119132

120133
// Try adding different values to SqlVariant type
121-
for(inti=0;i<record.FieldCount-1;++i)
134+
for(inti=0;i<record.FieldCount-offset;++i)
122135
{
123136
objectvalueToSet=record.GetSqlValue(i);
124-
record.SetValue(record.FieldCount-1,valueToSet);
125-
objecto=record.GetSqlValue(record.FieldCount-1);
137+
record.SetValue(record.FieldCount-offset,valueToSet);
138+
objecto=record.GetSqlValue(record.FieldCount-offset);
126139

127140
if(oisSqlBinary)
128141
{
@@ -133,8 +146,8 @@ public void SqlRecordFillTest()
133146
Assert.Equal(valueToSet,o);
134147
}
135148

136-
record.SetDBNull(record.FieldCount-1);
137-
Assert.Equal(DBNull.Value,record.GetSqlValue(record.FieldCount-1));
149+
record.SetDBNull(record.FieldCount-offset);
150+
Assert.Equal(DBNull.Value,record.GetSqlValue(record.FieldCount-offset));
138151

139152
record.SetDBNull(i);
140153
Assert.Equal(DBNull.Value,record.GetValue(i));

‎src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/ParameterTest/ParametersTest.cs

Lines changed: 73 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
usingSystem.Data.SqlTypes;
1010
usingSystem.Threading;
1111
usingXunit;
12+
usingSystem.Globalization;
13+
1214
#if!NETFRAMEWORK
1315
usingMicrosoft.SqlServer.Types;
1416
usingMicrosoft.Data.SqlClient.Server;
@@ -442,6 +444,75 @@ public static void TestDateOnlyTVPDataTable_CommandSP()
442444
DataTestUtility.DropUserDefinedType(connection,tableTypeName);
443445
}
444446
}
447+
448+
[ConditionalFact(typeof(DataTestUtility),nameof(DataTestUtility.AreConnStringsSetup),nameof(DataTestUtility.IsNotAzureSynapse))]
449+
publicstaticvoidTestDateOnlyTVPSqlDataRecord_CommandSP()
450+
{
451+
stringtableTypeName="[dbo]."+DataTestUtility.GetUniqueNameForSqlServer("UDTTTestDateOnlySqlDataRecordTVP");
452+
stringspName=DataTestUtility.GetUniqueNameForSqlServer("spTestDateOnlySqlDataRecordTVP");
453+
SqlConnectionconnection=new(s_connString);
454+
try
455+
{
456+
connection.Open();
457+
using(SqlCommandcmd=connection.CreateCommand())
458+
{
459+
cmd.CommandType=CommandType.Text;
460+
cmd.CommandText=$"CREATE TYPE{tableTypeName} AS TABLE ([DateColumn] date NULL, [TimeColumn] time NULL)";
461+
cmd.ExecuteNonQuery();
462+
cmd.CommandText=$"CREATE PROCEDURE{spName} (@dates{tableTypeName} READONLY) AS SELECT COUNT(*) FROM @dates";
463+
cmd.ExecuteNonQuery();
464+
}
465+
using(SqlCommandcmd=connection.CreateCommand())
466+
{
467+
cmd.CommandText=spName;
468+
cmd.CommandType=CommandType.StoredProcedure;
469+
470+
SqlMetaData[]metadata=newSqlMetaData[]
471+
{
472+
newSqlMetaData("DateColumn",SqlDbType.Date),
473+
newSqlMetaData("TimeColumn",SqlDbType.Time)
474+
};
475+
476+
SqlDataRecordrecord1=newSqlDataRecord(metadata);
477+
record1.SetValues(newDateOnly(2023,11,15),newTimeOnly(12,30,45));
478+
479+
SqlDataRecordrecord2=newSqlDataRecord(metadata);
480+
record2.SetValues(newDateOnly(2025,11,15),newTimeOnly(13,31,46));
481+
482+
IList<SqlDataRecord>featureInserts=newList<SqlDataRecord>
483+
{
484+
record1,
485+
record2,
486+
};
487+
488+
cmd.Parameters.Add(newSqlParameter
489+
{
490+
ParameterName="@dates",
491+
SqlDbType=SqlDbType.Structured,
492+
TypeName=tableTypeName,
493+
Value=featureInserts,
494+
});
495+
496+
usingvarreader=cmd.ExecuteReader();
497+
498+
Assert.True(reader.HasRows);
499+
500+
intcount=0;
501+
while(reader.Read())
502+
{
503+
Assert.NotNull(reader[0]);
504+
count++;
505+
}
506+
507+
Assert.Equal(1,count);
508+
}
509+
}
510+
finally
511+
{
512+
DataTestUtility.DropStoredProcedure(connection,spName);
513+
DataTestUtility.DropUserDefinedType(connection,tableTypeName);
514+
}
515+
}
445516
#endif
446517

447518
#region Scaled Decimal Parameter & TVP Test
@@ -471,8 +542,8 @@ public static void SqlDecimalConvertToDecimal_TestInRange(string sqlDecimalValue
471542
cmd.Connection=cnn;
472543
usingSqlDataReaderrdr=cmd.ExecuteReader();
473544
Assert.True(rdr.Read(),"SqlDataReader must have a value");
474-
decimalretrunValue=rdr.GetDecimal(0);
475-
Assert.Equal(expectedDecimalValue,retrunValue.ToString());
545+
decimalreturnValue=rdr.GetDecimal(0);
546+
Assert.Equal(expectedDecimalValue,returnValue.ToString(CultureInfo.InvariantCulture));
476547
}
477548

478549
[ConditionalTheory(typeof(DataTestUtility),nameof(DataTestUtility.AreConnStringsSetup))]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp