public void Same_Method_Requested_From_Base_And_Derived_Types_Is_Considered_Equal()
        {
            EngineTypeMethodMember baseMethod = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("SealedMethod", System.Type.EmptyTypes));
            EngineTypeMethodMember derivedMethod = new EngineTypeMethodMember(typeof(DerivedClass).GetMethod("SealedMethod", System.Type.EmptyTypes));

            Assert.True(baseMethod == derivedMethod);
        }
        public void Same_Method_Requested_From_Interface_And_Implementing_Type_Is_Considered_Equal()
        {
            EngineTypeMethodMember interfaceMethod = new EngineTypeMethodMember(typeof(IFoo).GetMethod("InterfaceMethod", System.Type.EmptyTypes));
            EngineTypeMethodMember implementedMethod = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("InterfaceMethod", System.Type.EmptyTypes));

            Assert.True(interfaceMethod == implementedMethod);
        }
        public void Overridden_Method_Requested_From_Base_And_Derived_Type_Is_ConsideredEqual()
        {
            EngineTypeMethodMember baseMethod = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("VirtualMethod", System.Type.EmptyTypes));
            EngineTypeMethodMember overriddenMethod = new EngineTypeMethodMember(typeof(DerivedClass).GetMethod("VirtualMethod", System.Type.EmptyTypes));

            Assert.True(baseMethod == overriddenMethod);
        }
        public void Different_Method_Are_Not_Considered_Equal()
        {
            EngineTypeMethodMember MethodOne = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("SealedMethod", Type.EmptyTypes));
            EngineTypeMethodMember MethodTwo = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("SealedMethod", new[] { typeof(int)}));

            Assert.False(MethodOne == MethodTwo);
        }
        public void SetupObjects()
        {
            mSourceMock = new Mock<IDatasource>();
            mParentNode = new TypeGenerationContextNode(null, null);
            mContext = new GenerationContext(null, mParentNode);

            mDoubleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember(typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string), typeof(string) }));

            mDoubleArgAction = new ObjectMethodInvokeFromSourceAction(mDoubleArgMethod, new IDatasource[] { mSourceMock.Object, mSourceMock.Object });
        }
        public void New_Method_Requested_From_Derived_Type_Is_Not_Considered_To_Hidden_Method()
        {
            var flags = BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Instance |
                           BindingFlags.Public | BindingFlags.Static;

            EngineTypeMethodMember baseMethod = new EngineTypeMethodMember(typeof(BaseClass).GetMethod("AnotherSealedMethod", flags, null, System.Type.EmptyTypes, null));
            EngineTypeMethodMember overriddenMethod = new EngineTypeMethodMember(typeof(DerivedClass)
                .GetMethod("AnotherSealedMethod", flags, null, System.Type.EmptyTypes, null));

            Assert.False(baseMethod == overriddenMethod);
        }
 public TypeMethodGenerationContextNode(TypeGenerationContextNode parent, EngineTypeMethodMember method)
 {
     mParent = parent;
     mMethod = method;
 }
 public ObjectMethodInvokeFromSourceAction(EngineTypeMethodMember member, IEnumerable<IDatasource> sources)
 {
     mMember = member;
     mSources = sources.ToArray();
 }
        public void SetupObjects()
        {
            this.Builder.Include<SimpleMethodClass>()
                .Invoke(x=>x.SetSomething("Literal"))
                .Invoke(x=>x.SetSomething(
                    Use.Source<String, FirstNameSource>(),
                    Use.Source<String, LastNameSource>()));

            Configuration = new EngineConfigurationFactory().Create(this.Builder, this.Builder.ConventionProvider);

            // Get some info for the tests
            mEngineConfigurationType = Configuration.GetRegisteredType(typeof(SimpleMethodClass));
            mSingleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember(
                typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string) }));
            mDoubleArgMethod = (EngineTypeMethodMember)ReflectionHelper.GetMember(
                typeof(SimpleMethodClass).GetMethod("SetSomething", new Type[] { typeof(string), typeof(string) }));
        }