public void MediaRetryPolicyTestExecuteActionAdapter()
        {
            var adapter = new TestRetryAdapter();
            MediaRetryPolicy target = new TestMediaServicesClassFactory(null).GetSaveChangesRetryPolicy(adapter);

            int exceptionCount = 2;
            int expected = 10;
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            Func<int> func = () =>
            {
                if (--exceptionCount > 0) throw fakeException;
                return expected;
            };

            Assert.AreEqual(expected, target.ExecuteAction(func));
            Assert.AreEqual(2, adapter.FuncExecutedCountByExecuteAction);
            Assert.AreEqual(1, adapter.NumberOfAdaptCalled);
        }
        public void MediaRetryPolicyTestExecuteAsyncRetryHasBeenAdaptedOnce()
        {
            var adapter = new TestRetryAdapter();
            MediaRetryPolicy target = new TestMediaServicesClassFactory(null).GetSaveChangesRetryPolicy(adapter);

            int exceptionCount = 2;
            int expected = 10;
            var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed);

            Func<int> func = () =>
            {
                if (--exceptionCount > 0) throw fakeException;
                return expected;
            };

            var task = target.ExecuteAsync(() => Task.Factory.StartNew<int>(() => func()));
            Assert.AreEqual(expected, task.Result);
            Assert.AreEqual(0, exceptionCount);
            Assert.AreEqual(1, adapter.NumberOfAdaptCalled);
            Assert.AreEqual(2, adapter.FuncExecutedCountByExecuteAsync1);
        }