private static void GetFieldValueAsync <T>(MockDataReader reader, CancellationToken cancellationToken, int ordinal, T expected) { Task <T> result = reader.GetFieldValueAsync <T>(ordinal, cancellationToken); result.Wait(); AssertEqualsWithDescription("GetValue", reader.LastCommand, "Last command was not as expected"); AssertEqualsWithDescription(expected, result.Result, "GetFieldValueAsync did not return expected value"); }
private void GetFieldValueAsync <T>(MockDataReader reader, int ordinal, T expected) { Task <T> result = reader.GetFieldValueAsync <T>(ordinal); result.Wait(); DataTestClass.AssertEqualsWithDescription("GetValue", reader.LastCommand, "Last command was not as expected"); DataTestClass.AssertEqualsWithDescription(expected, result.Result, "GetFieldValueAsync did not return expected value"); }
public static void TestDbDataReader() { var query = Enumerable.Range(1, 2).Select((x) => new object[] { x, x.ToString(), DBNull.Value }); MockDataReader reader = new MockDataReader { Results = query.GetEnumerator() }; CancellationTokenSource source = new CancellationTokenSource(); Task <bool> result; result = reader.ReadAsync(); result.Wait(); AssertEqualsWithDescription("Read", reader.LastCommand, "Last command was not as expected"); Assert.True(result.Result, "Should have received a Result from the ReadAsync"); Assert.False(reader.CancellationToken.CanBeCanceled, "Default cancellation token should not be cancellable"); GetFieldValueAsync(reader, 0, 1); Assert.False(reader.CancellationToken.CanBeCanceled, "Default cancellation token should not be cancellable"); GetFieldValueAsync(reader, source.Token, 1, "1"); result = reader.ReadAsync(source.Token); result.Wait(); AssertEqualsWithDescription("Read", reader.LastCommand, "Last command was not as expected"); Assert.True(result.Result, "Should have received a Result from the ReadAsync"); GetFieldValueAsync <object>(reader, 2, DBNull.Value); GetFieldValueAsync <DBNull>(reader, 2, DBNull.Value); reader.GetFieldValueAsync <int?>(2).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); reader.GetFieldValueAsync <string>(2).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); reader.GetFieldValueAsync <bool>(2).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); AssertEqualsWithDescription("GetValue", reader.LastCommand, "Last command was not as expected"); result = reader.ReadAsync(); result.Wait(); AssertEqualsWithDescription("Read", reader.LastCommand, "Last command was not as expected"); Assert.False(result.Result, "Should NOT have received a Result from the ReadAsync"); result = reader.NextResultAsync(); AssertEqualsWithDescription("NextResult", reader.LastCommand, "Last command was not as expected"); Assert.False(result.Result, "Should NOT have received a Result from NextResultAsync"); Assert.False(reader.CancellationToken.CanBeCanceled, "Default cancellation token should not be cancellable"); result = reader.NextResultAsync(source.Token); AssertEqualsWithDescription("NextResult", reader.LastCommand, "Last command was not as expected"); Assert.False(result.Result, "Should NOT have received a Result from NextResultAsync"); MockDataReader readerFail = new MockDataReader { Results = query.GetEnumerator(), Fail = true }; readerFail.ReadAsync().ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); readerFail.ReadAsync(source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); readerFail.NextResultAsync().ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); readerFail.NextResultAsync(source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); readerFail.GetFieldValueAsync <object>(0).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); readerFail.GetFieldValueAsync <object>(0, source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnFaulted).Wait(); source.Cancel(); reader.LastCommand = "Nothing"; reader.ReadAsync(source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnCanceled).Wait(); AssertEqualsWithDescription("Nothing", reader.LastCommand, "Expected last command to be 'Nothing'"); reader.NextResultAsync(source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnCanceled).Wait(); AssertEqualsWithDescription("Nothing", reader.LastCommand, "Expected last command to be 'Nothing'"); reader.GetFieldValueAsync <object>(0, source.Token).ContinueWith((t) => { }, TaskContinuationOptions.OnlyOnCanceled).Wait(); AssertEqualsWithDescription("Nothing", reader.LastCommand, "Expected last command to be 'Nothing'"); }