示例#1
0
        public void AddAndLookupMethod()
        {
            BaseBehavior behavior = new BaseBehavior();
            MockMethod   method   = new MockMethod();

            behavior.Send("methodAt:put:", "aMethod", method);

            Assert.AreEqual(method, behavior.Lookup("aMethod"));
            Assert.AreEqual(method, behavior.Send("lookup:", "aMethod"));
        }
示例#2
0
        public void AddMethodAndLookup()
        {
            BaseBehavior baseBehavior = new BaseBehavior();
            IBehavior    behavior     = baseBehavior.CreateDelegated();

            IMethod method = new MockMethod();

            behavior.Send("methodAt:put:", "aMethod", method);

            IMethod retrievedMethod = (IMethod)behavior.Send("lookup:", "aMethod");

            Assert.IsNotNull(retrievedMethod);
            Assert.AreEqual(method, retrievedMethod);
        }
示例#3
0
        public void SendMessage()
        {
            BaseObject   obj      = new BaseObject();
            BaseBehavior behavior = new BaseBehavior();

            obj.Behavior = behavior;

            MockMethod method = new MockMethod();

            Assert.IsFalse(method.Executed);
            behavior.Send("methodAt:put:", "aMethod", method);

            Assert.IsNull(obj.Send("aMethod", null));

            Assert.IsTrue(method.Executed);
        }
示例#4
0
        public void RedefineAddMethod()
        {
            BaseBehavior baseBehavior = new BaseBehavior();
            IBehavior    behavior     = baseBehavior.CreateDelegated();

            IMethod method = new BaseAddMethodMethod();

            behavior.Send("methodAt:put:", "methodAt:put:", method);

            IMethod newMethod = (IMethod)behavior.Send("lookup:", "methodAt:put:");

            Assert.IsNotNull(newMethod);
            Assert.AreEqual(method, newMethod);

            IMethod anotherMethod = new MockMethod();

            behavior.Send("methodAt:put:", "anotherMethod", anotherMethod);

            newMethod = (IMethod)behavior.Send("lookup:", "anotherMethod");

            Assert.AreEqual(anotherMethod, newMethod);
        }