Skip to content

Commit 979344e

Browse files
Use the javascript to validate output
1 parent 6fafc4e commit 979344e

File tree

4 files changed

+2364
-6
lines changed

4 files changed

+2364
-6
lines changed

mermaid-graph/Commands.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ namespace MermaidGraph;
1010
/// </summary>
1111
public class Commands
1212
{
13-
private readonly StringBuilder _graph;
13+
public const string MermaidBegin = Fence + "mermaid";
14+
public const string Fence = "```";
1415

15-
private const string Fence = "```";
16+
private readonly StringBuilder _graph;
1617

1718
/// <summary>
1819
/// Initialize the graph output
@@ -93,7 +94,7 @@ type solution
9394

9495
private void Header(string title)
9596
{
96-
_graph.AppendLine(Fence + "mermaid");
97+
_graph.AppendLine(MermaidBegin);
9798
_graph.AppendLine($"""
9899
---
99100
title: {title}

mermaid-graphTests/CommandsTests.cs

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using NUnit.Framework;
1+
using Microsoft.ClearScript.V8;
2+
using NUnit.Framework;
23
using Assert = NUnit.Framework.Assert;
34

45
namespace MermaidGraph.Tests;
@@ -16,10 +17,12 @@ public void DogFoodSolutionTest()
1617
var graph = new Commands().Solution(info);
1718

1819
Console.WriteLine(graph);
20+
var graphType = DetectType(ExtractMermaid(graph));
21+
Console.WriteLine(graphType);
1922
}
2023

2124
[Test()]
22-
public void DogFoodProjectTest()
25+
public async Task DogFoodProjectTestAsync()
2326
{
2427
var filePath = FindFileDownTree("*.csproj");
2528
Assert.That(filePath, Is.Not.Null);
@@ -28,6 +31,9 @@ public void DogFoodProjectTest()
2831
var graph = new Commands().Project(info);
2932

3033
Console.WriteLine(graph);
34+
35+
var graphType = await MermaidRender(ExtractMermaid(graph));
36+
Console.WriteLine(graphType);
3137
}
3238

3339
[Test()]
@@ -61,7 +67,36 @@ public void CommandLineFailTests(string? file, int hResult)
6167
Assert.That(Program.Main(file), Is.EqualTo(hResult));
6268
}
6369

64-
public static string? FindFileDownTree(string searchPattern)
70+
private static string ExtractMermaid(string markup)
71+
{
72+
Assert.That(markup, Does.StartWith(Commands.MermaidBegin));
73+
markup = markup.Substring(Commands.MermaidBegin.Length + Environment.NewLine.Length);
74+
75+
Assert.That(markup, Does.EndWith(Commands.Fence + Environment.NewLine));
76+
return markup.Substring(0, markup.Length - Commands.MermaidBegin.Length + Environment.NewLine.Length);
77+
}
78+
79+
private static string DetectType(string markup)
80+
{
81+
using var engine = new V8ScriptEngine();
82+
var mermaidJs = File.ReadAllText("js\\mermaid.min.js");
83+
engine.Execute(mermaidJs);
84+
85+
return engine.Script.mermaid.detectType(markup);
86+
}
87+
88+
private static async Task<string> MermaidRender(string markup)
89+
{
90+
using var engine = new V8ScriptEngine();
91+
var mermaidJs = File.ReadAllText("js\\mermaid.min.js");
92+
engine.Execute(mermaidJs);
93+
94+
var svg = await engine.Script.mermaid.render(markup);
95+
Assert.That(svg, Is.Not.Null);
96+
return svg.ToString();
97+
}
98+
99+
private static string? FindFileDownTree(string searchPattern)
65100
{
66101
var currentDir = Directory.GetCurrentDirectory();
67102

mermaid-graphTests/MermaidGraphTests.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
<PrivateAssets>all</PrivateAssets>
1818
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1919
</PackageReference>
20+
<PackageReference Include="Microsoft.ClearScript.V8" Version="7.4.5" />
21+
<PackageReference Include="Microsoft.ClearScript.V8.Native.win-x64" Version="7.4.5" />
2022
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
2123
<PackageReference Include="MSTest.TestAdapter" Version="3.7.3" />
2224
<PackageReference Include="MSTest.TestFramework" Version="3.7.3" />
@@ -36,4 +38,10 @@
3638
<Using Include="Microsoft.VisualStudio.TestTools.UnitTesting" />
3739
</ItemGroup>
3840

41+
<ItemGroup>
42+
<None Update="js\mermaid.min.js">
43+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
44+
</None>
45+
</ItemGroup>
46+
3947
</Project>

0 commit comments

Comments
 (0)