UNPKG

mermaid

Version:

Markdownish syntax for generating flowcharts, sequence diagrams and gantt charts.

298 lines (239 loc) 250 kB
<!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">&#182;</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">&#182;</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">&#39;../graphDb&#39;</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">&#39;./flow&#39;</span><span class="p">);</span> <span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;when parsing &#39;</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">&#39;../graphDb&#39;</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">&#182;</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">&#39;should handle a nodes and edges&#39;</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">&#39;graph TD;\nA--&gt;B;&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle angle bracket &#39;</span><span class="o">&gt;</span><span class="s1">&#39; as direction LR&#39;</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">&#39;graph &gt;;A--&gt;B;&#39;</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">&#39;LR&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle angle bracket &#39;</span><span class="o">&lt;</span><span class="s1">&#39; as direction RL&#39;</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">&#39;graph &lt;;A--&gt;B;&#39;</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">&#39;RL&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle caret &#39;</span><span class="o">^</span><span class="s1">&#39; as direction BT&#39;</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">&#39;graph ^;A--&gt;B;&#39;</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">&#39;BT&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle lower-case \&#39;v\&#39; as direction TB&#39;</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">&#39;graph v;A--&gt;B;&#39;</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">&#39;TB&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle a nodes and edges and a space between link and node&#39;</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">&#39;graph TD;A --&gt; B;&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle a nodes and edges, a space between link and node and each line ending without semicolon&#39;</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">&#39;graph TD\nA --&gt; B\n style e red&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle statements ending without semicolon&#39;</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">&#39;graph TD\nA--&gt;B\nB--&gt;C&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;C&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle a comments&#39;</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">&#39;graph TD;\n%% CComment\n A--&gt;B;&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle comments a at the start&#39;</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">&#39;%% Comment\ngraph TD;\n A--&gt;B;&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle comments at the end&#39;</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">&#39;graph TD;\n A--&gt;B\n %% Comment at the find\n&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle comments at the end no trailing newline&#39;</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">&#39;graph TD;\n A--&gt;B\n%% Commento&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;arrow&#39;</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">&#39;&#39;</span><span class="p">);</span> <span class="p">});</span> <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;should handle comments at the end many trailing newlines&#39;</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">&#39;graph TD;\n A--&gt;B\n%% Commento\n\n\n&#39;</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">&#39;A&#39;</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">&#39;A&#39;</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">&#39;B&#39;</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">&#39;B&#39;</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">&#39;A&#39;</span><span class="p">);</span> <spa