Пример #1
0
        public void DictionaryNullMethodsTest()
        {
            dynamic tNew = new DynamicObjects.Dictionary();
            Dynamic.ApplyEquivalentType(tNew, typeof (ISimpleStringMethod));

            Assert.That(tNew.StartsWith("Te"), Is.False);
        }
Пример #2
0
        public void DictionaryInterfaceGetServiceNullMethodsTest()
        {
            var provider = new DynamicObjects.Dictionary() as IServiceProvider;

            var actsLike = (ISimpleStringMethod)provider.GetService(typeof(ISimpleStringMethod));

            Assert.AreEqual(false, actsLike.StartsWith("Te"));
        }
Пример #3
0
        public void DictionaryMethodsTestWithPropertyAccess()
        {
            dynamic tNew = new DynamicObjects.Dictionary();
            tNew.PropCat = "Cat-";
            tNew.Action1 = new Action(Assert.Fail);
            tNew.Action2 = new Action<bool>(Assert.IsFalse);
            tNew.Action3 = new ThisFunc<string>(@this => @this.PropCat + "test");

            Assert.That(() => tNew.Action1(), Throws.InstanceOf<AssertionException>());
            Assert.That(() => tNew.Action2(true), Throws.InstanceOf<AssertionException>());

            Assert.AreEqual("Cat-test", tNew.Action3());
        }
Пример #4
0
        public void DictionaryMethodsOutTest()
        {
            dynamic tNew = new DynamicObjects.Dictionary();
            tNew.Func = new DynamicTryString(TestOut);

            String tOut;

            Assert.AreEqual(true, tNew.Func(null, "Test", out tOut));
            Assert.AreEqual("Test", tOut);

            String tOut2;
            Assert.AreEqual(false, tNew.Func(null, 1, out tOut2));
            Assert.AreEqual(null, tOut2);
        }
Пример #5
0
        public void DictionaryMethodsTest()
        {
            dynamic tNew = new DynamicObjects.Dictionary();
            tNew.Action1 = new Action(Assert.Fail);
            tNew.Action2 = new Action<bool>(Assert.IsFalse);
            tNew.Action3 = new Func<string>(() => "test");
            tNew.Action4 = new Func<int, string>(arg => "test" + arg);

            Assert.That(() => tNew.Action1(), Throws.InstanceOf<AssertionException>());
            Assert.That(() => tNew.Action2(true), Throws.InstanceOf<AssertionException>());

            Assert.That(tNew.Action3(), Is.EqualTo("test"));

            Assert.That(tNew.Action4(4), Is.EqualTo("test4"));
        }
Пример #6
0
        public void DictionaryMethodsTest()
        {
            dynamic tNew = new DynamicObjects.Dictionary();

            tNew.Action1 = new Action(Assert.Fail);
            tNew.Action2 = new Action <bool>(Assert.IsFalse);
            tNew.Action3 = new Func <string>(() => "test");
            tNew.Action4 = new Func <int, string>(arg => "test" + arg);



            Assert.That(() => tNew.Action1(), Throws.InstanceOf <AssertionException>());
            Assert.That(() => tNew.Action2(true), Throws.InstanceOf <AssertionException>());

            Assert.That(tNew.Action3(), Is.EqualTo("test"));

            Assert.That(tNew.Action4(4), Is.EqualTo("test4"));
        }
Пример #7
0
        public void TestCacheableIsEventAndIsNotEvent()
        {
            object tPoco = new PocoEvent();

            var tCachedInvoke = new CacheableInvocation(InvocationKind.IsEvent, "Event");

            var tResult = tCachedInvoke.Invoke(tPoco);

            Assert.AreEqual(true, tResult);

            dynamic tDynamic = new DynamicObjects.Dictionary();

            tDynamic.Event = null;

            var tResult2 = tCachedInvoke.Invoke((object)tDynamic);

            Assert.AreEqual(false, tResult2);
        }
Пример #8
0
        public void PropertySpecTest()
        {
            var testProp = new Dictionary <String, Type>()
            {
                { "test", typeof(bool) }
            };

            var baseObj = new DynamicObjects.Dictionary();
            var output  = ImpromptuInterface.Impromptu.ActLikeProperties(baseObj, testProp);

            if (baseObj.TryTypeForName("test", out Type ot))
            {
                Assert.AreEqual(typeof(bool), ot);
            }
            else
            {
                Assert.Fail("Could not find property spec for member");
            }
        }
Пример #9
0
        public void InterfaceDictionaryWrappedTest()
        {
            var tDictionary = new Dictionary <string, object>
            {
                { "Test1", 1 },
                { "Test2", 2L },
                { "Test3", 1 },
                { "Test4", "Two" },
                {
                    "TestD", new Dictionary <string, object>()
                    {
                        { "TestA", "A" },
                        { "TestB", "B" }
                    }
                }
            };

            dynamic tDynamic    = new DynamicObjects.Dictionary(tDictionary);
            dynamic tNotDynamic = new DynamicObjects.Dictionary(tDictionary);


            Dynamic.ApplyEquivalentType(tDynamic, typeof(IDynamicDict));
            Dynamic.ApplyEquivalentType(tNotDynamic, typeof(INonDynamicDict));


            Assert.AreEqual(tDynamic, tNotDynamic);

            Assert.AreEqual(1, tDynamic.Test1);
            Assert.AreEqual(2L, tDynamic.Test2);
            Assert.AreEqual(TestEnum.One, tDynamic.Test3);
            Assert.AreEqual(TestEnum.Two, tDynamic.Test4);

            Assert.AreEqual("A", tDynamic.TestD.TestA);
            Assert.AreEqual("B", tDynamic.TestD.TestB);

            Assert.AreEqual(1, tNotDynamic.Test1);
            Assert.AreEqual(2L, tNotDynamic.Test2);
            Assert.AreEqual(TestEnum.One, tNotDynamic.Test3);
            Assert.AreEqual(TestEnum.Two, tNotDynamic.Test4);

            Assert.AreEqual(typeof(Dictionary <string, object>), tNotDynamic.TestD.GetType());
            Assert.AreEqual(typeof(DynamicObjects.Dictionary), tDynamic.TestD.GetType());
        }
Пример #10
0
        public void DynamicDictionaryWrappedTest()
        {
            var tDictionary = new Dictionary <string, object>
            {
                { "Test1", 1 },
                { "Test2", 2 },
                {
                    "TestD", new Dictionary <string, object>()
                    {
                        { "TestA", "A" },
                        { "TestB", "B" }
                    }
                }
            };

            dynamic tNew = new DynamicObjects.Dictionary(tDictionary);

            Assert.AreEqual(1, tNew.Test1);
            Assert.AreEqual(2, tNew.Test2);
            Assert.AreEqual("A", tNew.TestD.TestA);
            Assert.AreEqual("B", tNew.TestD.TestB);
        }
Пример #11
0
        public void DictionaryInterfaceNullMethodsTest()
        {
            dynamic tNew = new DynamicObjects.Dictionary();

            ISimpleStringMethod tActsLike = ImpromptuInterface.Impromptu.ActLike(tNew);

            Assert.AreEqual(false, tActsLike.StartsWith("Te"));
        }
Пример #12
0
        public void TestDynamicMemberNamesImpromput()
        {
            DynamicObjects.Dictionary tDict = Build.NewObject(Two: 2);

            Assert.AreEqual("Two", Dynamic.GetMemberNames(tDict, dynamicOnly: true).Single());
        }
Пример #13
0
        public void TestIsNotEvent()
        {
            dynamic tDynamic = new DynamicObjects.Dictionary();

            tDynamic.Event = null;

            var tResult = Dynamic.InvokeIsEvent(tDynamic, "Event");

            Assert.AreEqual(false, tResult);

            bool tTest = false;
            bool tTest2 = false;

            tDynamic.Event += new EventHandler<EventArgs>((@object, args) => { tTest = true; });

            tDynamic.Event += new EventHandler<EventArgs>((@object, args) => { tTest2 = true; });

            Assert.AreEqual(false, tTest);

            Assert.AreEqual(false, tTest2);

            tDynamic.Event(null, null);

            Assert.AreEqual(true, tTest);

            Assert.AreEqual(true, tTest2);
        }
Пример #14
0
        public void DynamicObjectEqualsTest()
        {
            var tDictionary = new Dictionary<string, object>
                                  {
                                      {"Test1", 1},
                                      {"Test2", 2},
                                      {
                                          "TestD", new Dictionary<string, object>()
                                                       {
                                                           {"TestA", "A"},
                                                           {"TestB", "B"}
                                                       }
                                      }
                                  };

            dynamic tDynamic = new DynamicObjects.Dictionary(tDictionary);
            dynamic tNotDynamic = new DynamicObjects.Dictionary(tDictionary);

            Dynamic.ApplyEquivalentType(tDynamic, typeof (IDynamicDict));
            Dynamic.ApplyEquivalentType(tNotDynamic, typeof (INonDynamicDict));

            Assert.AreEqual(tDynamic, tNotDynamic);

            Assert.AreEqual(tDynamic, tDictionary);

            Assert.AreEqual(tNotDynamic, tDictionary);
        }
Пример #15
0
        public void InterfaceDictionaryWrappedTest()
        {
            var tDictionary = new Dictionary<string, object>
                                  {
                                      {"Test1", 1},
                                      {"Test2", 2L},
                                      {"Test3", 1},
                                      {"Test4", "Two"},
                                      {
                                          "TestD", new Dictionary<string, object>()
                                                       {
                                                           {"TestA", "A"},
                                                           {"TestB", "B"}
                                                       }
                                      }
                                  };

            dynamic tDynamic = new DynamicObjects.Dictionary(tDictionary);
            dynamic tNotDynamic = new DynamicObjects.Dictionary(tDictionary);

            Dynamic.ApplyEquivalentType(tDynamic, typeof (IDynamicDict));
            Dynamic.ApplyEquivalentType(tNotDynamic, typeof (INonDynamicDict));

            Assert.AreEqual(tDynamic, tNotDynamic);

            Assert.AreEqual(1, tDynamic.Test1);
            Assert.AreEqual(2L, tDynamic.Test2);
            Assert.AreEqual(TestEnum.One, tDynamic.Test3);
            Assert.AreEqual(TestEnum.Two, tDynamic.Test4);

            Assert.AreEqual("A", tDynamic.TestD.TestA);
            Assert.AreEqual("B", tDynamic.TestD.TestB);

            Assert.AreEqual(1, tNotDynamic.Test1);
            Assert.AreEqual(2L, tNotDynamic.Test2);
            Assert.AreEqual(TestEnum.One, tNotDynamic.Test3);
            Assert.AreEqual(TestEnum.Two, tNotDynamic.Test4);

            Assert.AreEqual(typeof (Dictionary<string, object>), tNotDynamic.TestD.GetType());
            Assert.AreEqual(typeof (DynamicObjects.Dictionary), tDynamic.TestD.GetType());
        }
Пример #16
0
        public void TestCacheableIsEventAndIsNotEvent()
        {
            object tPoco = new PocoEvent();

            var tCachedInvoke = new CacheableInvocation(InvocationKind.IsEvent, "Event");

            var tResult = tCachedInvoke.Invoke(tPoco);

            Assert.AreEqual(true, tResult);

            dynamic tDynamic = new DynamicObjects.Dictionary();

            tDynamic.Event = null;

            var tResult2 = tCachedInvoke.Invoke((object)tDynamic);

            Assert.AreEqual(false, tResult2);
        }
Пример #17
0
        public void DynamicDictionaryWrappedTest()
        {
            var tDictionary = new Dictionary<string, object>
                                  {
                                      {"Test1", 1},
                                      {"Test2", 2},
                                      {
                                          "TestD", new Dictionary<string, object>()
                                                       {
                                                           {"TestA", "A"},
                                                           {"TestB", "B"}
                                                       }
                                      }
                                  };

            dynamic tNew = new DynamicObjects.Dictionary(tDictionary);

            Assert.AreEqual(1, tNew.Test1);
            Assert.AreEqual(2, tNew.Test2);
            Assert.AreEqual("A", tNew.TestD.TestA);
            Assert.AreEqual("B", tNew.TestD.TestB);
        }