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); }); }