public void Dynamic_InvokeStaticMethod_InvokesMethodWithNullParameter()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());

            dynamicClass.Dynamic_InvokeStaticMethod_InvokesMethodWithNullParameter_Method(null);
            Assert.IsTrue(Dynamic_InvokeStaticMethod_InvokesMethodWithNullParameter_MethidInvoked);
        }
        public void Dynamic_WriteStaticProperty_WritesProperty()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());

            dynamicClass.Dynamic_WriteStaticProperty_WritesProperty_Property = 31;
            Assert.AreEqual(31, Dynamic_WriteStaticProperty_WritesProperty_Property);
        }
        public void Dynamic_InvokeStaticMethod_InvokesNormalMethod()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());

            dynamicClass.Dynamic_InvokeStaticMethod_InvokesNormalMethod_Method();
            Assert.IsTrue(Dynamic_InvokeStaticMethod_InvokesNormalMethod_MethidInvoked);
        }
        public void Dynamic_InvokeStaticMethodWithOutParameter_WithoutRefOutArg_ThrowsArgumentException()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());
            int result       = 17;

            dynamicClass.Dynamic_InvokeStaticMethodWithOutParameter_WithoutRefOutArg_ThrowsArgumentException_Method(out result);
        }
        public void Dynamic_InvokeStaticMethod_InvokesOverloadedMethodWithNull()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());

            dynamicClass.Dynamic_InvokeStaticMethod_InvokesOverloadedMethodWithNull_Method(13, null);
            Assert.IsFalse(Dynamic_InvokeStaticMethod_InvokesOverloadedMethodWithNull_MethidInvokedWithLong);
            Assert.IsTrue(Dynamic_InvokeStaticMethod_InvokesOverloadedMethodWithNull_MethidInvokedWithInt);
        }
        public void Dynamic_InvokeStaticMethod_InvokesOverloadedObjectMethod()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());

            dynamicClass.Dynamic_InvokeStaticMethod_InvokesOverloadedObjectMethod_Method(string.Empty);
            Assert.IsFalse(Dynamic_InvokeStaticMethod_InvokesOverloadedObjectMethod_MethidInvokedWithTestMethodAttribute);
            Assert.IsTrue(Dynamic_InvokeStaticMethod_InvokesOverloadedObjectMethod_MethidInvokedWithString);
        }
        public void Dynamic_ReadStaticProperty_ReadsProperty()
        {
            Dynamic_ReadStaticProperty_ReadsProperty_Property = 13;
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());
            int result       = dynamicClass.Dynamic_ReadStaticProperty_ReadsProperty_Property;

            Assert.AreEqual(13, result);
        }
        public void Dynamic_InvokeStaticMethod_InvokesMethodWithOutParameter()
        {
            var dynamicClass = DynamicStaticTypeMembers.Create(this.GetType());
            int result       = 17;
            var arg          = RefOutArg.Create(result);

            dynamicClass.Dynamic_InvokeStaticMethod_InvokesMethodWithOutParameter_Method(arg);
            result = arg.Value;
            Assert.IsTrue(Dynamic_InvokeStaticMethod_InvokesMethodWithOutParameter_MethidInvoked);
            Assert.AreEqual(13, result);
        }
        private void InitializeRuntime(Assembly assembly)
        {
            _pyEngine             = DynamicStaticTypeMembers.Create(assembly.GetType(PythonEngineTypeName));
            _pyObject             = DynamicStaticTypeMembers.Create(assembly.GetType(PythonObjectTypeName));
            _py                   = DynamicStaticTypeMembers.Create(assembly.GetType(PyTypeName));
            _pyConverterExtension = DynamicStaticTypeMembers.Create(assembly.GetType(ConverterExtensionTypeName));

            // TODO: find a nicer way
            _pyObjType         = assembly.GetType(PythonObjectTypeName);
            _pyObjInvokeMethod = _pyObjType.GetMethod(PythonObjectInvokeMethodName, new Type[] { typeof(string), _pyObjType.MakeArrayType() });
            _toPythonMethod    = assembly.GetType(ConverterExtensionTypeName).GetMethod(ToPythonMethodName);
        }