public void VerifyTrimWhitespaceBothDirections()
        {
            MockOperation o = new MockOperation(
                null,
                (IProcessorState state, int length, ref int position, int token, Stream target) =>
            {
                state.TrimWhitespace(true, true, ref length, ref position);
                return(0);
            },
                true,
                Encoding.UTF8.GetBytes("There"));

            EngineConfig cfg       = new EngineConfig(_logger, new VariableCollection());
            IProcessor   processor = Processor.Create(cfg, o.Provider);

            byte[]       data     = Encoding.UTF8.GetBytes("Hello    \r\n    There    \r\n    You");
            Stream       d        = new MemoryStream(data);
            MemoryStream result   = new MemoryStream();
            bool         modified = processor.Run(d, result);

            Assert.True(modified);
            string outcomeString = Encoding.UTF8.GetString(result.ToArray());

            Assert.Equal("Hello    \r\n    You", outcomeString);
        }
        public void AsyncOperationHandle_EventSubscriptions_UnsubscribingToNonSubbedEventsShouldHaveNoEffect()
        {
            var op     = new MockOperation <int>();
            var handle = m_RM.StartOperation(op, default(AsyncOperationHandle));

            Assert.False(op.CompletedEventHasListeners);
            handle.Completed -= oph => { };
            Assert.False(op.CompletedEventHasListeners);

            Assert.False(op.DestroyedEventHasListeners);
            handle.Destroyed -= oph => { };
            Assert.False(op.DestroyedEventHasListeners);

            Action <AsyncOperationHandle> dummy = oph => { };

            Assert.False(op.CompletedTypelessEventHasListeners);

            handle.CompletedTypeless += dummy;
            Assert.True(op.CompletedTypelessEventHasListeners);

            handle.CompletedTypeless -= dummy;
            handle.CompletedTypeless -= dummy;
            Assert.False(op.CompletedTypelessEventHasListeners);

            handle.Release();
        }
        public void VerifyTrimWhitespaceNeitherDirection()
        {
            MockOperation o = new MockOperation(null,
                                                (IProcessorState state, int length, ref int position, int token, Stream target) =>
            {
                state.TrimWhitespace(false, false, ref length, ref position);
                return(0);
            }, true, Encoding.UTF8.GetBytes("There"));

            EngineConfig cfg       = new EngineConfig(EnvironmentSettings, new VariableCollection());
            IProcessor   processor = Processor.Create(cfg, o.Provider);

            byte[] data     = Encoding.UTF8.GetBytes("Hello    \r\n    There    \r\n    You");
            Stream d        = new MemoryStream(data);
            Stream result   = new MemoryStream();
            bool   modified = processor.Run(d, result);

            Assert.True(modified);
            result.Position = 0;
            byte[] outcome = new byte[result.Length];
            result.Read(outcome, 0, outcome.Length);
            string outcomeString = Encoding.UTF8.GetString(outcome);

            Assert.Equal("Hello    \r\n        \r\n    You", outcomeString);
        }
示例#4
0
            public void Execute_enumerates_results()
            {
                var handler   = new OperationResultHandler();
                var operation = new MockOperation(handler);

                operation.Execute(() => YieldResults());

                Assert.IsType <string[]>(handler.Result);
                Assert.Equal(new[] { "Twilight Sparkle", "Princess Celestia" }, handler.Result);
            }
示例#5
0
            public void Execute_sets_results()
            {
                var handler   = new OperationResultHandler();
                var operation = new MockOperation(handler);
                var result    = "Twilight Sparkle";

                operation.Execute(() => result);

                Assert.Equal(result, handler.Result);
            }
示例#6
0
        public void an_interceptor_returning_false_in_post_condition_prevents_execution_from_continuing()
        {
            given_mock_operation(op => op.Expect(x => x.Invoke()).Returns(new OutputMember[0]).Verifiable());
            given_mock_interceptor(before => before.Returns(true),
                                   after => after.Returns(false));
            given_wrapper();

            Executing(invoking_wrapped_operation)
            .ShouldThrow <InterceptorException>()
            .InnerException.ShouldBeNull();
            MockOperation.Verify(x => x.Invoke());
        }
示例#7
0
            public void Execute_catches_exceptions()
            {
                var handler   = new OperationResultHandler();
                var operation = new MockOperation(handler);
                var error     = new ArgumentOutOfRangeException("Needs to be about 20% more cool.");

                operation.Execute(() => throw error);

                Assert.Equal(error.GetType().FullName, handler.ErrorType);
                Assert.Equal(error.Message, handler.ErrorMessage);
                Assert.NotEmpty(handler.ErrorStackTrace);
            }
        public void an_interceptor_throwing_an_exception_in_post_condition_prevents_execution_from_continuing()
        {
            given_mock_operation(op => op.Setup(x => x.Invoke())
                                 .Returns(new OutputMember[0])
                                 .Verifiable());
            given_mock_interceptor(i => i.AfterExecute = (op, result) => { throw new ArgumentException(); });

            given_wrapper();

            Executing(() => invoking_wrapped_operation()).ShouldThrow <InterceptorException>()
            .InnerException.ShouldBeAssignableTo <ArgumentException>();
            MockOperation.Verify(x => x.Invoke());
        }
示例#9
0
        public void an_interceptor_throwing_an_exception_in_post_condition_prevents_execution_from_continuing()
        {
            given_mock_operation(op => op.Setup(x => x.Invoke()).Returns(new OutputMember[0]).Verifiable());
            given_mock_interceptor(before => before.Returns(true),
                                   after => after.Throws <ArgumentException>());

            given_wrapper();

            Executing(invoking_wrapped_operation)
            .ShouldThrow <InterceptorException>()
            .InnerException.ShouldBeOfType <ArgumentException>();
            MockOperation.Verify(x => x.Invoke());
        }
        public void   an_interceptor_returning_false_in_post_condition_prevents_execution_from_continuing()
        {
            given_mock_operation(op => op.Setup(x => x.Invoke())
                                 .Returns(new OutputMember[0])
                                 .Verifiable());
            given_mock_interceptor(interceptor =>
            {
                interceptor.AfterExecute = (op, result) => false;
            });
            given_wrapper();

            Executing(() => invoking_wrapped_operation()).ShouldThrow <InterceptorException>()
            .InnerException.ShouldBeNull();
            MockOperation.Verify(x => x.Invoke());
        }
        public void WhenOperationHasDependency_ExecuteNotCalledUntilDependencyCompletes()
        {
            var op1     = new MockOperation <int>();
            var op2     = new MockOperation <int>();
            var handle1 = m_RM.StartOperation(op1, default(AsyncOperationHandle));

            op2.ExecuteCallback = () => { op2.Complete(0, true, string.Empty); };
            var handle2 = m_RM.StartOperation(op2, handle1);

            m_RM.Update(0.0f);
            Assert.AreEqual(false, handle2.IsDone);
            op1.Complete(0, true, null);
            Assert.AreEqual(true, handle2.IsDone);
            handle1.Release();
            handle2.Release();
        }
示例#12
0
        public void VerifyConsumeWholeLine()
        {
            MockOperation o = new MockOperation(
                null,
                (IProcessorState state, int length, ref int position, int token, Stream target) =>
            {
                state.ConsumeWholeLine(ref length, ref position);
                return(0);
            },
                true,
                Encoding.UTF8.GetBytes("There"));

            EngineConfig cfg       = new EngineConfig(_engineEnvironmentSettings.Host.Logger, new VariableCollection());
            IProcessor   processor = Processor.Create(cfg, o.Provider);

            byte[] data    = Encoding.UTF8.GetBytes("Hello    \r\n    There    \r\n    You");
            Stream input   = new ChunkMemoryStream(data, 1);
            Stream output  = new ChunkMemoryStream(1);
            bool   changed = processor.Run(input, output, 5);

            Verify(Encoding.UTF8, output, changed, "Hello    \r\n    There    \r\n    You", "Hello    \r\n    You");
        }
示例#13
0
        public void Commit_Operation_Test()
        {
            var op1 = new MockOperation();
            var op2 = new MockOperation();

            var vm = new GraphExplorerViewmodel();

            vm.Do(op1);

            Assert.IsTrue(vm.HasUndoable);
            Assert.AreEqual(vm.Operations.Count, 1);
            Assert.IsTrue(op1.DoCalled);

            vm.Do(op2);

            Assert.IsTrue(vm.HasUndoable);
            Assert.AreEqual(vm.Operations.Count, 2);
            Assert.IsTrue(op2.DoCalled);

            vm.Commit();

            Assert.IsFalse(vm.HasUndoable);
            Assert.AreEqual(vm.Operations.Count, 0);
        }