AvalonStudio.Languages.CPlusPlus.CPlusPlusUnitTestTemplate.Generate C# (CSharp) Method

Generate() public method

public Generate ( ISolution solution, string name ) : Task
solution ISolution
name string
return Task
		public override async Task<IProject> Generate(ISolution solution, string name)
		{
			var shell = IoC.Get<IShell>();
			var project = await base.Generate(solution, name);
			var catchProjectDir = Path.Combine(solution.CurrentDirectory, "AvalonStudio.Testing.Catch");
			var catchProjectFile = Path.Combine(catchProjectDir, "CatchTestFramework.acproj");
			if (!Directory.Exists(catchProjectDir))
			{
				await
					Git.ClonePublicHttpSubmodule(this, "https://github.com/VitalElement/AvalonStudio.Testing.Catch.git",
						catchProjectDir);
			}

			// Add project
			var catchProject = Solution.LoadProjectFile(solution, catchProjectFile);
			catchProject.Hidden = true;

			solution.AddProject(catchProject);

			// Reference catch.
			project.AddReference(catchProject);

			await SourceFile.Create(project, "UnitTest1.cpp", new UnitTestTemplate().TransformText());

			project.ToolChain = shell.ToolChains.FirstOrDefault(tc => tc is LocalGCCToolchain);
			project.Debugger = shell.Debuggers.FirstOrDefault(d => d is LocalDebugAdaptor);
			project.TestFramework = shell.TestFrameworks.FirstOrDefault(d => d is CatchTestFramework);
            project.ToolChain.ProvisionSettings(project);

            var settings = LocalGCCToolchain.GetSettings(project);
			settings.CompileSettings.Exceptions = true;
			settings.CompileSettings.Rtti = true;
			settings.CompileSettings.Optimization = OptimizationLevel.Debug;
			settings.CompileSettings.CustomFlags += " -Wno-unknown-pragmas ";

			project.Save();
			solution.Save();

			return project;
		}
	}