public static void Test_Generate_Class_With_Serialized_Fields()
        {
            //arrange
            //generate mappers
            List<ITypeRelationalMapper> mappers = new List<ITypeRelationalMapper>();
            mappers.Add(new StringTypeRelationalMapper());
            mappers.Add(new EngineTypeRelationalMapper());
            mappers.Add(new PrimitiveTypeRelationalMapper(new UnityPrimitiveTypeExclusion()));
            mappers.Add(new DefaultTypeRelationalMapper());

            Mock<ITypeExclusion> exclusionMock = new Mock<ITypeExclusion>(MockBehavior.Strict);

            //setup always false exclusion
            exclusionMock.Setup(x => x.isExcluded(It.IsAny<Type>())).Returns(false);

            TestityClassBuilder builder = new TestityClassBuilder(typeof(TestSerializedClass).Name + "Script");

            UnityBuildProcessTypeRelationalMapper chainMapper = new UnityBuildProcessTypeRelationalMapper(mappers);

            AddSerializedMemberStep buildStep = new AddSerializedMemberStep(chainMapper, new SerializedMemberParser(), exclusionMock.Object);

            buildStep.Process(builder, typeof(TestSerializedClass));

            string classCompiled = builder.Compile();

            //Assert.NotNull(null, classCompiled);
            //Assert.("dfdhh", null, classCompiled);
        }
        public static void Test_Generate_Class_With_Serialized_Fields()
        {
            //arrange
            //generate mappers
            List <ITypeRelationalMapper> mappers = new List <ITypeRelationalMapper>();

            mappers.Add(new StringTypeRelationalMapper());
            mappers.Add(new EngineTypeRelationalMapper());
            mappers.Add(new PrimitiveTypeRelationalMapper(new UnityPrimitiveTypeExclusion()));
            mappers.Add(new DefaultTypeRelationalMapper());

            Mock <ITypeExclusion> exclusionMock = new Mock <ITypeExclusion>(MockBehavior.Strict);

            //setup always false exclusion
            exclusionMock.Setup(x => x.isExcluded(It.IsAny <Type>())).Returns(false);

            TestityClassBuilder builder = new TestityClassBuilder(typeof(TestSerializedClass).Name + "Script");

            UnityBuildProcessTypeRelationalMapper chainMapper = new UnityBuildProcessTypeRelationalMapper(mappers);

            AddSerializedMemberStep buildStep = new AddSerializedMemberStep(chainMapper, new SerializedMemberParser(), exclusionMock.Object);

            buildStep.Process(builder, typeof(TestSerializedClass));

            string classCompiled = builder.Compile();

            //Assert.NotNull(null, classCompiled);
            //Assert.("dfdhh", null, classCompiled);
        }
예제 #3
0
        private static string GenerateMonobehaviourClass(ITypeRelationalMapper mapper, IEnumerable <ITestityBuildStep> buildSteps, Type typeToBuildFrom)
        {
            IClassBuilder builder = new TestityClassBuilder(typeToBuildFrom.Name + "Script", MemberImplementationModifier.Public | MemberImplementationModifier.Sealed);

            foreach (ITestityBuildStep step in buildSteps)
            {
                step.Process(builder, typeToBuildFrom);
            }

            return(builder.ToString());
        }
예제 #4
0
        public static void Test_TestityClassBuilder_TestAddedField()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");
            Mock<IMemberImplementationProvider> implementationProvider = BuildMemberImplementationMock("testField", typeof(EngineScriptComponent), MemberImplementationModifier.Private, new Type[] { typeof(ExposeDataMemeberAttribute) });

            //act
            scriptBuilder.AddClassField(implementationProvider.Object);

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains("private " + typeof(EngineScriptComponent).FullName + " testField"));
            Assert.IsTrue(scriptBuilder.Compile().Contains("[" + typeof(ExposeDataMemeberAttribute).FullName+ "]"));
        }
예제 #5
0
        public static void Test_TestityClassBuilder_TestAddedField()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");
            Mock <IMemberImplementationProvider> implementationProvider = BuildMemberImplementationMock("testField", typeof(EngineScriptComponent), MemberImplementationModifier.Private, new Type[] { typeof(ExposeDataMemeberAttribute) });

            //act
            scriptBuilder.AddClassField(implementationProvider.Object);

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains("private " + typeof(EngineScriptComponent).FullName + " testField"));
            Assert.IsTrue(scriptBuilder.Compile().Contains("[" + typeof(ExposeDataMemeberAttribute).FullName + "]"));
        }
예제 #6
0
        public static void Test_TestityClassBuilder_Test_Adding_Method()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");

            Mock<IMemberImplementationProvider> implementationProvider = BuildMemberImplementationMock("TestMethod", typeof(string), MemberImplementationModifier.Public, Enumerable.Empty<Type>());

            //act
            scriptBuilder.AddMemberMethod(implementationProvider.Object, BuildBodyProviderMockEmpty().Object,
                BuildParameterProviderMock(typeof(string), typeof(int)).Object);

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains("TestMethod(System.String String1"));
        }
예제 #7
0
        public static void Test_TestityClassBuilder_Test_Adding_Base_Class()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");

            //act
            scriptBuilder.AddBaseClass<EngineScriptComponent>(new DefaultTypeSyntaxBuilder());

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains(" : " + typeof(EngineScriptComponent).FullName));
            Assert.Throws<InvalidOperationException>(() => scriptBuilder.AddBaseClass<EngineScriptComponent>(new DefaultTypeSyntaxBuilder()));
            Assert.DoesNotThrow(() => scriptBuilder.AddBaseClass<ICloneable>(new DefaultTypeSyntaxBuilder()));
            Assert.IsTrue(scriptBuilder.Compile().Contains(", " + typeof(ICloneable).FullName));
        }
예제 #8
0
        public static void Test_TestityClassBuilder_Test_Adding_Method()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");

            Mock <IMemberImplementationProvider> implementationProvider = BuildMemberImplementationMock("TestMethod", typeof(string), MemberImplementationModifier.Public, Enumerable.Empty <Type>());

            //act
            scriptBuilder.AddMemberMethod(implementationProvider.Object, BuildBodyProviderMockEmpty().Object,
                                          BuildParameterProviderMock(typeof(string), typeof(int)).Object);

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains("TestMethod(System.String String1"));
        }
예제 #9
0
        public static void Test_TestityClassBuilder_Test_Adding_Base_Class()
        {
            //arrange
            TestityClassBuilder scriptBuilder = new TestityClassBuilder(typeof(EngineScriptComponent).Name + "Script");

            //act
            scriptBuilder.AddBaseClass <EngineScriptComponent>(new DefaultTypeSyntaxBuilder());

            //assert
            Assert.IsTrue(scriptBuilder.Compile().Contains(" : " + typeof(EngineScriptComponent).FullName));
            Assert.Throws <InvalidOperationException>(() => scriptBuilder.AddBaseClass <EngineScriptComponent>(new DefaultTypeSyntaxBuilder()));
            Assert.DoesNotThrow(() => scriptBuilder.AddBaseClass <ICloneable>(new DefaultTypeSyntaxBuilder()));
            Assert.IsTrue(scriptBuilder.Compile().Contains(", " + typeof(ICloneable).FullName));
        }
예제 #10
0
        private static string GenerateTestityGenericEventSerializableClass(string genericEventNewTypeName, IEnumerable <Type> genericTypeArgs)
        {
            IClassBuilder builder = new TestityClassBuilder(genericEventNewTypeName);

            return(builder.ToString());
        }
예제 #11
0
		private static string GenerateMonobehaviourClass(ITypeRelationalMapper mapper, IEnumerable<ITestityBuildStep> buildSteps, Type typeToBuildFrom)
		{
			IClassBuilder builder = new TestityClassBuilder(typeToBuildFrom.Name + "Script", MemberImplementationModifier.Public | MemberImplementationModifier.Sealed);

			foreach (ITestityBuildStep step in buildSteps)
			{
				step.Process(builder, typeToBuildFrom);
			}

			return builder.ToString();
		}
예제 #12
0
		private static string GenerateTestityGenericEventSerializableClass(string genericEventNewTypeName, IEnumerable<Type> genericTypeArgs)
		{
			IClassBuilder builder = new TestityClassBuilder(genericEventNewTypeName);

			return builder.ToString();
		}