1- using NUnit . Framework ;
1+ using Microsoft . ClearScript . V8 ;
2+ using NUnit . Framework ;
23using Assert = NUnit . Framework . Assert ;
34
45namespace 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
0 commit comments