public void TestSqlExceptionPrototype()
{
Parallel.For(
0,
100,
i =>
{
Random random = Tester.RandomGenerator;
SqlErrorCollectionPrototype errorCollectionPrototype =
new SqlErrorCollectionPrototype();
int loops = Tester.RandomGenerator.Next(10) + 1;
for (int loop = 0; loop < loops; loop++)
{
// Generate random values.
int infoNumber = random.RandomInt32();
byte errorState = random.RandomByte();
byte errorClass = (byte)random.Next(1, 26);
string server = random.RandomString();
string errorMessage = random.RandomString();
string procedure = random.RandomString();
int lineNumber = random.RandomInt32();
uint wind32ErrorCode = (uint)Math.Abs(random.RandomInt32());
// Create prototype.
SqlErrorPrototype sqlErrorPrototype = new SqlErrorPrototype(
infoNumber,
errorState,
errorClass,
server,
errorMessage,
procedure,
lineNumber,
wind32ErrorCode);
// Test implicit cast
SqlError sqlError = sqlErrorPrototype;
Assert.IsNotNull(sqlError);
// Check SqlError created properly
Assert.AreEqual(infoNumber, sqlError.Number);
Assert.AreEqual(errorState, sqlError.State);
Assert.AreEqual(errorClass, sqlError.Class);
Assert.AreEqual(server, sqlError.Server);
Assert.AreEqual(errorMessage, sqlError.Message);
Assert.AreEqual(procedure, sqlError.Procedure);
Assert.AreEqual(lineNumber, sqlError.LineNumber);
Assert.AreEqual(sqlErrorPrototype.ToString(), sqlError.ToString());
errorCollectionPrototype.Add(sqlError);
}
Assert.AreEqual(loops, errorCollectionPrototype.Count);
// Test implicit cast
SqlErrorCollection collection = errorCollectionPrototype;
Assert.AreSame(errorCollectionPrototype.SqlErrorCollection, collection);
// Now create a SqlException
Guid connectionId = Guid.NewGuid();
SqlExceptionPrototype sqlExceptionPrototype = new SqlExceptionPrototype(
collection,
"9.0.0.0",
connectionId);
// Test implicit conversion
SqlException sqlException = sqlExceptionPrototype;
Assert.IsNotNull(sqlException);
// Check SqlException created properly - it uses the first error from the collection.
SqlError first = collection[0];
Debug.Assert(first != null);
Assert.AreEqual(first.Number, sqlException.Number);
Assert.AreEqual(first.State, sqlException.State);
Assert.AreEqual(first.Class, sqlException.Class);
Assert.AreEqual(first.Server, sqlException.Server);
//Assert.AreEqual(first.Message, sqlException.Message);
Assert.AreEqual(first.Procedure, sqlException.Procedure);
Assert.AreEqual(first.LineNumber, sqlException.LineNumber);
});
}