public void UseWithFuncWhenWorkIsNull()
		{
			var communcationMock = new MockedCommunicationObject();
			communcationMock.Use(null as Func<int>);
		}
		public void UseWithFuncWithCommunicationObjectInFaultedState()
		{
			var communcationMock = new MockedCommunicationObject(CommunicationState.Faulted);

			communcationMock.Use(new Func<int>(() =>
			{
				return 1;
			}));

			Assert.IsFalse(communcationMock.WasCloseCalled);
			Assert.IsTrue(communcationMock.WasAbortCalled);
		}
		public void UseWithFuncWhenCloseThrowsTimeoutException()
		{
			var communcationMock = new MockedCommunicationObject(false, true);

			communcationMock.Use(new Func<int>(() =>
			{
				return 1;
			}));

			Assert.IsTrue(communcationMock.WasCloseCalled);
			Assert.IsTrue(communcationMock.WasAbortCalled);
		}
		public void UseWithFunc()
		{
			const int result = 1;

			var communcationMock = new MockedCommunicationObject();

			Assert.AreEqual(result, communcationMock.Use(new Func<int>(() =>
			{
				return result;
			})));
			Assert.IsTrue(communcationMock.WasCloseCalled);
			Assert.IsFalse(communcationMock.WasAbortCalled);
		}
		public void UseWithActionWhenWorkIsNull()
		{
			var communcationMock = new MockedCommunicationObject();
			communcationMock.Use(null as Action);
		}
		public void UseWithActionWhenCloseThrowsCommunicationObjectFaultedException()
		{
			var communcationMock = new MockedCommunicationObject(true, false);

			communcationMock.Use(new Action(() => { }));

			Assert.IsTrue(communcationMock.WasCloseCalled);
			Assert.IsTrue(communcationMock.WasAbortCalled);
		}
		public void UseWithActionWithCommunicationObjectInFaultedState()
		{
			var communcationMock = new MockedCommunicationObject(CommunicationState.Faulted);

			communcationMock.Use(new Action(() => { }));

			Assert.IsFalse(communcationMock.WasCloseCalled);
			Assert.IsTrue(communcationMock.WasAbortCalled);
		}
		public void UseWithAction()
		{
			var communcationMock = new MockedCommunicationObject();
			var wasWorkCalled = false;

			communcationMock.Use(new Action(() => wasWorkCalled = true));

			Assert.IsTrue(wasWorkCalled);
			Assert.IsTrue(communcationMock.WasCloseCalled);
			Assert.IsFalse(communcationMock.WasAbortCalled);
		}