mermaid
Version:
Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.
298 lines (239 loc) • 250 kB
HTML
<!DOCTYPE html>
<html>
<head>
<title>flow.spec.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" media="all" href="../../../../doc-style.css" />
<script src="../../../../doc-filelist.js"></script>
<script>
var relativeDir = "../../../../", thisFile = "Users/knut/Documents/source/mermaid/src/diagrams/flowchart/parser/flow.spec.js", defaultSidebar = true;
</script>
<script src="../../../../doc-script.js"></script>
<script src="../../../../mermaid.js"></script>
<link rel="stylesheet" href="../../../../mermaid.css" />
</head>
<body>
<div id="sidebar_wrapper">
<div id="sidebar_switch">
<span class="tree">Files</span>
<span class="headings">Headings</span>
</div>
<div id="tree"></div>
<div id="headings">
<div class="heading h1">
<a href="#flow.spec.js">flow.spec.js</a>
</div>
</div>
</div>
<div id="sidebar-toggle"></div>
<div id="container"><div class="background highlight"></div>
<table cellpadding="0" cellspacing="0">
<tbody>
<tr>
<td class="docs">
<div class="pilwrap" id="flow.spec.js">
<h1>
<a href="#flow.spec.js" name="flow.spec.js" class="pilcrow">¶</a>flow.spec.js
</h1>
</div>
</td>
<td class="code highlight"></td>
</tr>
<tr>
<td class="docs">
<div class="pilwrap">
<a class="pilcrow" href="#section-1" id="section-1">¶</a>
</div>
<div class="dox">
<div class="summary"><p>Created by knut on 14-11-03.</p>
</div>
<div class="body">
</div>
</div>
</td>
<td class="code highlight"><div class="highlight"><pre><span class="kd">var</span> <span class="nx">graph</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'../graphDb'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">flow</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'./flow'</span><span class="p">);</span>
<span class="nx">describe</span><span class="p">(</span><span class="s1">'when parsing '</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="nx">beforeEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(){</span>
<span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">'../graphDb'</span><span class="p">);</span>
<span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">clear</span><span class="p">();</span>
</pre></div>
</td>
</tr>
<tr>
<td class="docs">
<div class="pilwrap">
<a class="pilcrow" href="#section-2" id="section-2">¶</a>
</div>
<div class="dox">
<div class="summary"><p>flow.parser.parse.parseError= function parseError(str, hash) {
log.debugconsole.log(str);
} </p>
</div>
<div class="body">
</div>
</div>
</td>
<td class="code highlight"><div class="highlight"><pre>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle a nodes and edges'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;\nA-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle angle bracket '</span><span class="o">></span><span class="s1">' as direction LR'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph >;A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">direction</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getDirection</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">direction</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'LR'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle angle bracket '</span><span class="o"><</span><span class="s1">' as direction RL'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph <;A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">direction</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getDirection</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">direction</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'RL'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle caret '</span><span class="o">^</span><span class="s1">' as direction BT'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph ^;A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">direction</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getDirection</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">direction</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'BT'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle lower-case \'v\' as direction TB'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph v;A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">direction</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getDirection</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">direction</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'TB'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle a nodes and edges and a space between link and node'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;A --> B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle a nodes and edges, a space between link and node and each line ending without semicolon'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD\nA --> B\n style e red'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle statements ending without semicolon'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD\nA-->B\nB-->C'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'C'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle a comments'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;\n%% CComment\n A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle comments a at the start'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'%% Comment\ngraph TD;\n A-->B;'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle comments at the end'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;\n A-->B\n %% Comment at the find\n'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle comments at the end no trailing newline'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;\n A-->B\n%% Commento'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">end</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">type</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'arrow'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">''</span><span class="p">);</span>
<span class="p">});</span>
<span class="nx">it</span><span class="p">(</span><span class="s1">'should handle comments at the end many trailing newlines'</span><span class="p">,</span><span class="kd">function</span><span class="p">(){</span>
<span class="kd">var</span> <span class="nx">res</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="s1">'graph TD;\n A-->B\n%% Commento\n\n\n'</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">vert</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getVertices</span><span class="p">();</span>
<span class="kd">var</span> <span class="nx">edges</span> <span class="o">=</span> <span class="nx">flow</span><span class="p">.</span><span class="nx">parser</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getEdges</span><span class="p">();</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'A'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">vert</span><span class="p">[</span><span class="s1">'B'</span><span class="p">].</span><span class="nx">id</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'B'</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="nx">expect</span><span class="p">(</span><span class="nx">edges</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">start</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">'A'</span><span class="p">);</span>
<spa