1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace System.Data.Entity.Infrastructure
{
#if !NET40
using System.Threading.Tasks;
#endif
using Xunit;
public class NonRetryingExecutionStrategyTests
{
[Fact]
public void SupportsExistingTransactions_returns_true()
{
Assert.True(new NonRetryingExecutionStrategy().SupportsExistingTransactions);
}
[Fact]
public void Execute_Action_doesnt_retry()
{
Execute_doesnt_retry((e, a) => e.Execute(() => { a(); }));
}
[Fact]
public void Execute_Func_doesnt_retry()
{
Execute_doesnt_retry((e, a) => e.Execute(a));
}
private void Execute_doesnt_retry(Action<IExecutionStrategy, Func<int>> execute)
{
var executionStrategy = new NonRetryingExecutionStrategy();
var executionCount = 0;
Assert.Throws<TimeoutException>(
() =>
execute(executionStrategy,
() =>
{
executionCount++;
throw new TimeoutException();
}));
Assert.Equal(1, executionCount);
}
#if !NET40
[Fact]
public void ExecuteAsync_Action_doesnt_retry()
{
ExecuteAsync_doesnt_retry((e, f) => e.ExecuteAsync(() => (Task)f()));
}
[Fact]
public void ExecuteAsync_Func_doesnt_retry()
{
ExecuteAsync_doesnt_retry((e, f) => e.ExecuteAsync(f));
}
private void ExecuteAsync_doesnt_retry(Func<IExecutionStrategy, Func<Task<int>>, Task> executeAsync)
{
var executionStrategy = new NonRetryingExecutionStrategy();
var executionCount = 0;
Assert.Throws<TimeoutException>(
() =>
ExceptionHelpers.UnwrapAggregateExceptions(
() =>
executeAsync(executionStrategy,
() =>
{
executionCount++;
throw new TimeoutException();
}).Wait()));
Assert.Equal(1, executionCount);
}
#endif
}
}
|