示例#1
0
        public void TestLanguages(ConversionTestCase testCase)
        {
            var mdBuilder      = new StringBuilder();
            var sourceLanguage = Enum.GetName(typeof(Language), testCase.SyntaxTreeVisitor.Language);
            var targetLanguage = Enum.GetName(typeof(Language), testCase.CodeWriter.Language);

            var source = ReadTestData(testCase.TestDirectory, testCase.Name, testCase.SyntaxTreeVisitor.Language);
            var target = ReadTestData(testCase.TestDirectory, testCase.Name, testCase.CodeWriter.Language);

            var ast    = testCase.SyntaxTreeVisitor.Visit(source);
            var actual = testCase.CodeWriter.Write(ast).Trim();

            Assert.Equal(target, actual);

            var testResult = new TestCaseResult
            {
                Category      = testCase.Category,
                Description   = testCase.Description,
                Name          = testCase.Name,
                Source        = testCase.SyntaxTreeVisitor.Language,
                Target        = testCase.CodeWriter.Language,
                SourceContent = source,
                TargetContent = target
            };

            _fixture.AddTestCase(testResult);
        }
示例#2
0
        public void TestLanguages(ConversionTestCase testCase)
        {
            var mdBuilder      = new StringBuilder();
            var sourceLanguage = Enum.GetName(typeof(Language), testCase.SyntaxTreeVisitor.Language);
            var targetLanguage = Enum.GetName(typeof(Language), testCase.CodeWriter.Language);

            var source = ReadTestData(testCase.TestDirectory, testCase.Name, testCase.SyntaxTreeVisitor.Language);
            var target = ReadTestData(testCase.TestDirectory, testCase.Name, testCase.CodeWriter.Language);

            var ast    = testCase.SyntaxTreeVisitor.Visit(source);
            var actual = testCase.CodeWriter.Write(ast).Trim();

            Assert.Equal(target, actual);

            mdBuilder.AppendLine($"## {testCase.Description}");
            mdBuilder.AppendLine($"### Source: {sourceLanguage}");
            mdBuilder.AppendLine($"```{sourceLanguage.ToLower()}");
            mdBuilder.AppendLine(source);
            mdBuilder.AppendLine($"```");
            mdBuilder.AppendLine($"### Target: {targetLanguage}");
            mdBuilder.AppendLine($"```{targetLanguage.ToLower()}");
            mdBuilder.AppendLine(actual);
            mdBuilder.AppendLine($"```");
            mdBuilder.AppendLine();

            var outputFile = $"{sourceLanguage}To{targetLanguage}.md";

            var languageTestsMarkdownPath = Path.Combine(Fixture.GetTestDirectory(), @"..\..\..\..\..\docs\" + outputFile);

            File.AppendAllText(languageTestsMarkdownPath, mdBuilder.ToString());
        }