public void Generate_GenerationSpecGiven_TypeScriptContentGenerated(string outputPath)
        {
            //arrange

            var generator = new Core.Generator(new GeneratorOptions {
                BaseOutputDirectory = outputPath, CreateIndexFile = true
            }, _fileSystem);
            var assemblyResolver = new AssemblyResolver(new FileSystem(), new ConsoleLogger(), ProjectPath);
            var generationSpec   = new AcceptanceTestGenerationSpec();

            //act

            assemblyResolver.Register();
            generator.Generate(generationSpec);
            assemblyResolver.Unregister();

            //assert

            _fileSystem.Received().SaveFile(outputPath + "custom-base-class.ts", Content["custom-base-class.ts"]);
            _fileSystem.Received().SaveFile(outputPath + "custom-base-custom-import.ts", Content["custom-base-custom-import.ts"]);
            _fileSystem.Received().SaveFile(outputPath + "custom-empty-base-class.ts", Content["custom-empty-base-class.ts"]);
            _fileSystem.Received().SaveFile(outputPath + "extended-primitives-class.ts", Content["extended-primitives-class.ts"]);
            _fileSystem.Received().SaveFile(outputPath + "external-deps-class.ts", Content["external-deps-class.ts"]);
            _fileSystem.Received().SaveFile(outputPath + "generic-base-class.ts", Content["generic-base-class.ts"]);
        }
        public async Task TestGenerateSpec(Type type, string expectedLocation)
        {
            var readExpectedTask = EmbededResourceReader.GetEmbeddedResourceAsync(expectedLocation);

            var spec        = new AcceptanceTestGenerationSpec();
            var generator   = new Gen.Generator();
            var interceptor = GeneratorOutputInterceptor.CreateInterceptor(generator);

            await generator.GenerateAsync(new[] { spec });

            var expected = (await readExpectedTask).Trim();

            Assert.True(interceptor.GeneratedOutputs.ContainsKey(type));
            Assert.Equal(expected, FromatOutput(interceptor.GeneratedOutputs[type].Content));
        }