Esempio n. 1
0
        public void TestUnbind()
        {
            commandBinder.Bind <NoArgSignal>().To <NoArgSignalCommand>();
            TestModel testModel = injectionBinder.GetInstance <TestModel>() as TestModel;

            Assert.AreEqual(testModel.StoredValue, 0);

            NoArgSignal signal = injectionBinder.GetInstance <NoArgSignal>() as NoArgSignal;

            signal.Dispatch();
            Assert.AreEqual(testModel.StoredValue, 1);

            commandBinder.Unbind <NoArgSignal>();
            signal.Dispatch();
            Assert.AreEqual(testModel.StoredValue, 1); //Should do nothing
        }
        public void TestMultipleOfSame()
        {
            commandBinder.Bind <NoArgSignal>().To <NoArgSignalCommand>().To <NoArgSignalCommand>();

            TestModel testModel = injectionBinder.GetInstance <TestModel>() as TestModel;

            Assert.AreEqual(0, testModel.StoredValue);
            NoArgSignal signal = injectionBinder.GetInstance <NoArgSignal>() as NoArgSignal;

            signal.Dispatch();
            Assert.AreEqual(2, testModel.StoredValue);             //first command gives 1, second gives 2
        }
        public void TestInterruptedSequence()
        {
            //CommandWithInjection requires an ISimpleInterface
            injectionBinder.Bind <ISimpleInterface>().To <SimpleInterfaceImplementer>().ToSingleton();

            //Bind the trigger to the command
            commandBinder.Bind <NoArgSignal>().To <CommandWithInjection>().To <FailCommand>().To <CommandWithoutExecute>().InSequence();

            TestDelegate testDelegate = delegate
            {
                NoArgSignal signal = injectionBinder.GetInstance <NoArgSignal>() as NoArgSignal;
                signal.Dispatch();
            };

            //That the exception is not thrown demonstrates that the last command was interrupted
            Assert.DoesNotThrow(testDelegate);

            //That the value is 100 demonstrates that the first command ran
            ISimpleInterface instance = injectionBinder.GetInstance <ISimpleInterface>() as ISimpleInterface;

            Assert.AreEqual(100, instance.intValue);
        }
        public void TestSequence()
        {
            //CommandWithInjection requires an ISimpleInterface
            injectionBinder.Bind <ISimpleInterface>().To <SimpleInterfaceImplementer>().ToSingleton();

            //Bind the trigger to the command
            commandBinder.Bind <NoArgSignal>().To <CommandWithInjection>().To <CommandWithExecute>().To <CommandWithoutExecute>().InSequence();

            TestDelegate testDelegate = delegate
            {
                NoArgSignal signal = injectionBinder.GetInstance <NoArgSignal>() as NoArgSignal;
                signal.Dispatch();
            };

            //That the exception is thrown demonstrates that the last command ran
            CommandException ex = Assert.Throws <CommandException>(testDelegate);

            Assert.AreEqual(ex.type, CommandExceptionType.EXECUTE_OVERRIDE);

            //That the value is 100 demonstrates that the first command ran
            ISimpleInterface instance = injectionBinder.GetInstance <ISimpleInterface>() as ISimpleInterface;

            Assert.AreEqual(100, instance.intValue);
        }