UNPKG

mermaid

Version:

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

1,090 lines 126 kB
<!DOCTYPE html>
<html>
<head>
  <title>sequenceDiagram.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/sequenceDiagram/sequenceDiagram.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="#sequenceDiagram.spec.js">sequenceDiagram.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="sequenceDiagram.spec.js">
          <h1>
              <a href="#sequenceDiagram.spec.js" name="sequenceDiagram.spec.js" class="pilcrow">&#182;</a>sequenceDiagram.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-18.</p>

  </div>
  <div class="body">
  </div>
</div>

        </td>
        <td class="code highlight"><div class="highlight"><pre><span class="kd">var</span> <span class="nx">proxyquire</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;proxyquire&#39;</span><span class="p">);</span>
<span class="kd">var</span> <span class="nx">log</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;../../logger&#39;</span><span class="p">).</span><span class="nx">create</span><span class="p">();</span>

<span class="kd">var</span> <span class="nx">sq</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;./parser/sequenceDiagram&#39;</span><span class="p">).</span><span class="nx">parser</span><span class="p">;</span>
<span class="kd">var</span> <span class="nx">newD3</span><span class="p">;</span>

<span class="kd">var</span> <span class="nx">d3</span> <span class="o">=</span> <span class="p">{</span>
    <span class="nx">select</span><span class="o">:</span><span class="kd">function</span><span class="p">(){</span>
        <span class="k">return</span> <span class="k">new</span> <span class="nx">newD3</span><span class="p">();</span>
    <span class="p">}</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>
<p>var sd = proxyquire(&#39;./sequenceRenderer&#39;, { &#39;./d3&#39;: d3 });</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
<span class="kd">var</span> <span class="nx">sd</span> <span class="o">=</span> <span class="nx">proxyquire</span><span class="p">(</span><span class="s1">&#39;./sequenceRenderer&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="s1">&#39;../../d3&#39;</span><span class="o">:</span> <span class="nx">d3</span> <span class="p">});</span>

<span class="kd">var</span> <span class="nx">str</span><span class="p">;</span>
<span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;when parsing a sequenceDiagram&#39;</span><span class="p">,</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">parseError</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="p">{</span>
        <span class="nx">sq</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;./sequenceDb&#39;</span><span class="p">);</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">clear</span><span class="p">();</span>
        <span class="nx">parseError</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">hash</span><span class="p">)</span> <span class="p">{</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="s1">&#39;Syntax error:&#39;</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="nx">hash</span><span class="p">);</span>
        <span class="p">};</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">parseError</span> <span class="o">=</span> <span class="nx">parseError</span><span class="p">;</span>
    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle a sequenceDiagram defintion&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice-&gt;Bob:Hello Bob, how are you?\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">3</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should space in actor names&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice-&gt;Bob:Hello Bob, how are - you?\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle in async messages&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice-xBob:Hello Bob, how are you?\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-3" id="section-3">&#182;</a>
</div>
<p>log.debug(actors);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>


        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">messages</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="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">LINETYPE</span><span class="p">.</span><span class="nx">SOLID_CROSS</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle in async dotted messages&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice--xBob:Hello Bob, how are you?\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-4" id="section-4">&#182;</a>
</div>
<p>log.debug(actors);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>


        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">messages</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="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">LINETYPE</span><span class="p">.</span><span class="nx">DOTTED_CROSS</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle in arrow messages&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;&gt;Bob:Hello Bob, how are you?\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-5" id="section-5">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>


        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">messages</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="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">LINETYPE</span><span class="p">.</span><span class="nx">SOLID</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle in arrow messages&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice--&gt;&gt;Bob:Hello Bob, how are you?\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-6" id="section-6">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>


        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">messages</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="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">LINETYPE</span><span class="p">.</span><span class="nx">DOTTED</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle comments in a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">3</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle new lines in a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">3</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle one leading space in lines in a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39; Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">3</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle several leading spaces in lines in a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;   Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">3</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle several leading spaces in lines in a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;participant Alice\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;participant Bob\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;Alice-&gt;John: Hello John, how are you?\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;    loop Healthcheck\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;John-&gt;John: Fight against hypochondria\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39; end\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;Note right of John: Rational thoughts&lt;br/&gt;prevail...\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;    John--&gt;Alice: Great!\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;    John-&gt;Bob: How about you?\n&#39;</span><span class="o">+</span>
        <span class="s1">&#39;Bob--&gt;John: Jolly good!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">8</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;John&#39;</span><span class="p">);</span>
    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle loop statements a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;loop Multiple happy responses\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;end&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-7" id="section-7">&#182;</a>
</div>
<p>log.debug(actors);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-8" id="section-8">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">5</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>


    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle opt statements a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;opt Perhaps a happy response\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;end&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-9" id="section-9">&#182;</a>
</div>
<p>log.debug(actors);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-10" id="section-10">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">5</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>


    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle opt statements a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram;Alice-&gt;Bob: Hello Bob, how are you?;opt Perhaps a happy response;Bob--&gt;Alice: I am good thanks!;end;&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-11" id="section-11">&#182;</a>
</div>
<p>log.debug(actors);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-12" id="section-12">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">4</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">1</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="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">LINETYPE</span><span class="p">.</span><span class="nx">OPT_START</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">2</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>


    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle alt statements a sequenceDiagram&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;%% Comment\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;alt isWell\n\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob--&gt;Alice: I am good thanks!\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;else isSick\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob--&gt;Alice: Feel sick...\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;end&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="kd">var</span> <span class="nx">actors</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getActors</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">actors</span><span class="p">.</span><span class="nx">Alice</span><span class="p">.</span><span class="nx">description</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">actors</span><span class="p">.</span><span class="nx">Bob</span><span class="p">.</span><span class="nx">description</span> <span class="o">=</span> <span class="s1">&#39;Bob&#39;</span><span class="p">;</span>

        <span class="kd">var</span> <span class="nx">messages</span> <span class="o">=</span> <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">getMessages</span><span class="p">();</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-13" id="section-13">&#182;</a>
</div>
<p>log.debug(messages);</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</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">7</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Alice&#39;</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">messages</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nx">from</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="s1">&#39;Bob&#39;</span><span class="p">);</span>


    <span class="p">});});</span>

<span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;when checking the bounds in a sequenceDiagram&#39;</span><span class="p">,</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">parseError</span><span class="p">,</span> <span class="nx">_d3</span><span class="p">,</span> <span class="nx">conf</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="p">{</span>
        <span class="nx">sq</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;./sequenceDb&#39;</span><span class="p">);</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">clear</span><span class="p">();</span>
        <span class="nx">parseError</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">hash</span><span class="p">)</span> <span class="p">{</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="s1">&#39;Syntax error:&#39;</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="nx">hash</span><span class="p">);</span>
        <span class="p">};</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">parseError</span> <span class="o">=</span> <span class="nx">parseError</span><span class="p">;</span>


        <span class="nx">conf</span> <span class="o">=</span> <span class="p">{</span>
            <span class="nx">diagramMarginX</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">diagramMarginY</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">actorMargin</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">width</span><span class="o">:</span><span class="mi">150</span><span class="p">,</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-14" id="section-14">&#182;</a>
</div>
<p>Height of actor boxes</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
            <span class="nx">height</span><span class="o">:</span><span class="mi">65</span><span class="p">,</span>
            <span class="nx">boxMargin</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">messageMargin</span><span class="o">:</span><span class="mi">40</span><span class="p">,</span>
            <span class="nx">boxTextMargin</span><span class="o">:</span><span class="mi">15</span><span class="p">,</span>
            <span class="nx">noteMargin</span><span class="o">:</span><span class="mi">25</span>
        <span class="p">};</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">setConf</span><span class="p">(</span><span class="nx">conf</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle a simple bound call&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="p">);</span>

    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle an expanding bound&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">400</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">50</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">400</span><span class="p">);</span>

    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle inserts within the bound without changing the outer bounds&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">400</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">125</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">50</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">400</span><span class="p">);</span>

    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle a loop without expanding the area&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">400</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">verticalPos</span>  <span class="o">=</span> <span class="mi">150</span><span class="p">;</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">newLoop</span><span class="p">();</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">125</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">150</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">loop</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">endLoop</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">125</span><span class="o">-</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">150</span><span class="o">-</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">150</span><span class="o">+</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="o">+</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>


</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-15" id="section-15">&#182;</a>
</div>
<p>Check bounds of first loop</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">25</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">50</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">400</span><span class="p">);</span>
    <span class="p">});</span>


    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle multiple loops withtout expanding the bounds&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1000</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">verticalPos</span>  <span class="o">=</span> <span class="mi">200</span><span class="p">;</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">newLoop</span><span class="p">();</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">newLoop</span><span class="p">();</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">200</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">);</span>


</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-16" id="section-16">&#182;</a>
</div>
<p>Check bounds of first loop</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="kd">var</span> <span class="nx">loop</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">endLoop</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="o">-</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="o">-</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="o">+</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="o">+</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>


</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-17" id="section-17">&#182;</a>
</div>
<p>Check bounds of second loop</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">loop</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">endLoop</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">200</span><span class="o">-</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>


</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-18" id="section-18">&#182;</a>
</div>
<p>Check bounds of first loop</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">100</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">1000</span><span class="p">);</span>
    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle a loop that expands the area&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>

        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">200</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">verticalPos</span>  <span class="o">=</span> <span class="mi">200</span><span class="p">;</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">newLoop</span><span class="p">();</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">insert</span><span class="p">(</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">300</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">loop</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">endLoop</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">50</span>  <span class="o">-</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">50</span>  <span class="o">-</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">300</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>


</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-19" id="section-19">&#182;</a>
</div>
<p>Check bounds after the loop</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">startx</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">starty</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopx</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">loop</span><span class="p">.</span><span class="nx">stopy</span><span class="p">);</span>
    <span class="p">});</span>
<span class="p">});</span>

<span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;when rendering a sequenceDiagram&#39;</span><span class="p">,</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">parseError</span><span class="p">,</span> <span class="nx">_d3</span><span class="p">,</span> <span class="nx">conf</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="p">{</span>
        <span class="nx">sq</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;./sequenceDb&#39;</span><span class="p">);</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">clear</span><span class="p">();</span>
        <span class="nx">parseError</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">hash</span><span class="p">)</span> <span class="p">{</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="s1">&#39;Syntax error:&#39;</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="nx">hash</span><span class="p">);</span>
        <span class="p">};</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">parseError</span> <span class="o">=</span> <span class="nx">parseError</span><span class="p">;</span>

        <span class="nx">newD3</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
            <span class="kd">var</span> <span class="nx">o</span> <span class="o">=</span> <span class="p">{</span>
                <span class="nx">append</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="nx">newD3</span><span class="p">();</span>
                <span class="p">},</span>
                <span class="nx">attr</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="nx">style</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="nx">text</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">txt</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="mi">0</span><span class="o">:</span><span class="p">{</span>
                    <span class="mi">0</span><span class="o">:</span> <span class="p">{</span>
                        <span class="nx">getBBox</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
                            <span class="k">return</span> <span class="p">{</span>
                                <span class="nx">height</span><span class="o">:</span> <span class="mi">10</span><span class="p">,</span>
                                <span class="nx">width</span><span class="o">:</span> <span class="mi">20</span>
                            <span class="p">};</span>
                        <span class="p">}</span>
                    <span class="p">}</span>

                <span class="p">}</span>
            <span class="p">};</span>

            <span class="k">return</span> <span class="nx">o</span><span class="p">;</span>
        <span class="p">};</span>

        <span class="nx">conf</span> <span class="o">=</span> <span class="p">{</span>
            <span class="nx">diagramMarginX</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">diagramMarginY</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">actorMargin</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">width</span><span class="o">:</span><span class="mi">150</span><span class="p">,</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-20" id="section-20">&#182;</a>
</div>
<p>Height of actor boxes</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
            <span class="nx">height</span><span class="o">:</span><span class="mi">65</span><span class="p">,</span>
            <span class="nx">boxMargin</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">messageMargin</span><span class="o">:</span><span class="mi">40</span><span class="p">,</span>
            <span class="nx">boxTextMargin</span><span class="o">:</span><span class="mi">15</span><span class="p">,</span>
            <span class="nx">noteMargin</span><span class="o">:</span><span class="mi">25</span>
        <span class="p">};</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">setConf</span><span class="p">(</span><span class="nx">conf</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle one actor&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;participant Alice\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>

    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle one actor and a note&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;participant Alice\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Note left of Alice: Alice thinks\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="o">-</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">-</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="o">/</span><span class="mi">2</span><span class="p">));</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span> <span class="p">);</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-21" id="section-21">&#182;</a>
</div>
<p>10 comes from mock of text height</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">noteMargin</span> <span class="o">+</span><span class="mi">10</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle one actor and a note to the right&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;participant Alice\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Note right of Alice: Alice thinks\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="p">);</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-22" id="section-22">&#182;</a>
</div>
<p>10 comes from mock of text height</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">noteMargin</span> <span class="o">+</span><span class="mi">10</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle two actors&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">messageMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>

    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should draw two actors and two messages&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="o">+</span>
            <span class="s1">&#39;Bob-&gt;Alice: Fine!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">messageMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="p">);</span>

    <span class="p">});</span>


    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should draw two actors notes to the right&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="o">+</span>
            <span class="s1">&#39;Note right of Bob: Bob thinks\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob-&gt;Alice: Fine!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">expStopX</span> <span class="o">=</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span> <span class="o">+</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">+</span> <span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">noteMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="p">;</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="nx">expStopX</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">messageMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span> <span class="o">+</span> <span class="mi">10</span><span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">noteMargin</span><span class="p">);</span>

    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should draw two actors notes to the left&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="o">+</span>
            <span class="s1">&#39;Note left of Alice: Bob thinks\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob-&gt;Alice: Fine!\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="o">-</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">/</span><span class="mi">2</span><span class="p">)</span><span class="o">-</span><span class="p">(</span><span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="o">/</span><span class="mi">2</span><span class="p">));</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">messageMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span> <span class="o">+</span><span class="mi">10</span><span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">noteMargin</span><span class="p">);</span>

    <span class="p">});</span>

    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should draw two loops&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Alice-&gt;Bob: Hello Bob, how are you?\n&#39;</span><span class="o">+</span>
            <span class="s1">&#39;loop Cheers\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;Bob-&gt;Alice: Fine!\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;end\n&#39;</span><span class="p">;</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>

        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">actorMargin</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">messageMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">height</span> <span class="o">+</span> <span class="mi">3</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span> <span class="o">+</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">boxTextMargin</span><span class="p">);</span>

    <span class="p">});</span>
<span class="p">});</span>

<span class="nx">describe</span><span class="p">(</span><span class="s1">&#39;when rendering a sequenceDiagram with actor mirror activated&#39;</span><span class="p">,</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">parseError</span><span class="p">,</span> <span class="nx">_d3</span><span class="p">,</span> <span class="nx">conf</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="p">{</span>
        <span class="nx">sq</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;./sequenceDb&#39;</span><span class="p">);</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">clear</span><span class="p">();</span>
        <span class="nx">parseError</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">hash</span><span class="p">)</span> <span class="p">{</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="s1">&#39;Syntax error:&#39;</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span>
            <span class="nx">log</span><span class="p">.</span><span class="nx">debug</span><span class="p">(</span><span class="nx">hash</span><span class="p">);</span>
        <span class="p">};</span>
        <span class="nx">sq</span><span class="p">.</span><span class="nx">yy</span><span class="p">.</span><span class="nx">parseError</span> <span class="o">=</span> <span class="nx">parseError</span><span class="p">;</span>

        <span class="nx">newD3</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
            <span class="kd">var</span> <span class="nx">o</span> <span class="o">=</span> <span class="p">{</span>
                <span class="nx">append</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">type</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="nx">newD3</span><span class="p">();</span>
                <span class="p">},</span>
                <span class="nx">attr</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="nx">style</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">key</span><span class="p">,</span> <span class="nx">val</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="nx">text</span><span class="o">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">txt</span><span class="p">)</span> <span class="p">{</span>
                    <span class="k">return</span> <span class="k">this</span><span class="p">;</span>
                <span class="p">},</span>
                <span class="mi">0</span><span class="o">:</span><span class="p">{</span>
                    <span class="mi">0</span><span class="o">:</span> <span class="p">{</span>
                        <span class="nx">getBBox</span><span class="o">:</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
                            <span class="k">return</span> <span class="p">{</span>
                                <span class="nx">height</span><span class="o">:</span> <span class="mi">10</span><span class="p">,</span>
                                <span class="nx">width</span><span class="o">:</span> <span class="mi">20</span>
                            <span class="p">};</span>
                        <span class="p">}</span>
                    <span class="p">}</span>

                <span class="p">}</span>
            <span class="p">};</span>

            <span class="k">return</span> <span class="nx">o</span><span class="p">;</span>
        <span class="p">};</span>

        <span class="nx">conf</span> <span class="o">=</span> <span class="p">{</span>
            <span class="nx">diagramMarginX</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">diagramMarginY</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">actorMargin</span><span class="o">:</span><span class="mi">50</span><span class="p">,</span>
            <span class="nx">width</span><span class="o">:</span><span class="mi">150</span><span class="p">,</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-23" id="section-23">&#182;</a>
</div>
<p>Height of actor boxes</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
            <span class="nx">height</span><span class="o">:</span><span class="mi">65</span><span class="p">,</span>
            <span class="nx">boxMargin</span><span class="o">:</span><span class="mi">10</span><span class="p">,</span>
            <span class="nx">messageMargin</span><span class="o">:</span><span class="mi">40</span><span class="p">,</span>
            <span class="nx">boxTextMargin</span><span class="o">:</span><span class="mi">15</span><span class="p">,</span>
            <span class="nx">noteMargin</span><span class="o">:</span><span class="mi">25</span><span class="p">,</span>
            <span class="nx">mirrorActors</span><span class="o">:</span><span class="kc">true</span><span class="p">,</span>

</pre></div>
        </td>
      </tr>
      <tr>
        <td class="docs">
<div class="pilwrap">
  <a class="pilcrow" href="#section-24" id="section-24">&#182;</a>
</div>
<p>Depending on css styling this might need adjustment
Prolongs the edge of the diagram downwards</p>

        </td>
        <td class="code highlight"><div class="highlight"><pre>
            <span class="nx">bottomMarginAdj</span><span class="o">:</span><span class="mi">1</span>
        <span class="p">};</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">setConf</span><span class="p">(</span><span class="nx">conf</span><span class="p">);</span>
    <span class="p">});</span>
    <span class="nx">it</span><span class="p">(</span><span class="s1">&#39;it should handle one actor&#39;</span><span class="p">,</span> <span class="kd">function</span> <span class="p">()</span> <span class="p">{</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">init</span><span class="p">();</span>
        <span class="kd">var</span> <span class="nx">str</span> <span class="o">=</span> <span class="s1">&#39;sequenceDiagram\n&#39;</span> <span class="o">+</span>
            <span class="s1">&#39;participant Alice\n&#39;</span><span class="p">;</span>

        <span class="nx">sq</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">str</span><span class="p">);</span>
        <span class="nx">sd</span><span class="p">.</span><span class="nx">draw</span><span class="p">(</span><span class="nx">str</span><span class="p">,</span><span class="s1">&#39;tst&#39;</span><span class="p">);</span>

        <span class="kd">var</span> <span class="nx">bounds</span> <span class="o">=</span> <span class="nx">sd</span><span class="p">.</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">getBounds</span><span class="p">();</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">startx</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">starty</span><span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopx</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span> <span class="nx">conf</span><span class="p">.</span><span class="nx">width</span><span class="p">);</span>
        <span class="nx">expect</span><span class="p">(</span><span class="nx">bounds</span><span class="p">.</span><span class="nx">stopy</span> <span class="p">).</span><span class="nx">toBe</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">height</span><span class="o">+</span><span class="mi">2</span><span class="o">*</span><span class="nx">conf</span><span class="p">.</span><span class="nx">boxMargin</span><span class="p">);</span>

    <span class="p">});</span>
<span class="p">});</span>
</pre></div>
        </td>
      </tr>
  </tbody>
</table>
  </div>
</body>
</html>