document.write('<link rel="stylesheet" href="http://gist.github.com/stylesheets/gist/embed.css"/>')





document.write('<div id=\"gist-229774\" class=\"gist\">\n  \n  \n    \n            \n\n      <div class=\"gist-file\">\n        <div class=\"gist-data gist-syntax\">\n          \n          \n          \n            <div class=\"gist-highlight\"><pre><div class=\"line\" id=\"LC1\"><span class=\"nb\">require<\/span> <span class=\"s1\">&#39;Source/state_builder&#39;<\/span><\/div><div class=\"line\" id=\"LC2\">&nbsp;<\/div><div class=\"line\" id=\"LC3\"><span class=\"n\">describe<\/span> <span class=\"s2\">&quot;When building a three pattern with a match any multiple in the middle&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC4\">&nbsp;&nbsp;<span class=\"n\">before<\/span><span class=\"p\">(<\/span><span class=\"ss\">:each<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC5\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@state_builder<\/span> <span class=\"o\">=<\/span> <span class=\"no\">StateBuilder<\/span><span class=\"o\">.<\/span><span class=\"n\">new<\/span><\/div><div class=\"line\" id=\"LC6\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span> <span class=\"o\">=<\/span> <span class=\"vi\">@state_builder<\/span><span class=\"o\">.<\/span><span class=\"n\">create_from<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;a*.&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC7\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC8\">&nbsp;<\/div><div class=\"line\" id=\"LC9\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should return a five state graph&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC10\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">should_not<\/span> <span class=\"o\">==<\/span> <span class=\"kp\">nil<\/span><\/div><div class=\"line\" id=\"LC11\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC12\">&nbsp;<\/div><div class=\"line\" id=\"LC13\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should start with a start state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC14\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">StartState<\/span><\/div><div class=\"line\" id=\"LC15\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC16\">&nbsp;<\/div><div class=\"line\" id=\"LC17\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a standard state as the 2nd state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC18\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">StandardState<\/span><\/div><div class=\"line\" id=\"LC19\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC20\">&nbsp;<\/div><div class=\"line\" id=\"LC21\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a standard state as the 3rd state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC22\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">StandardState<\/span><\/div><div class=\"line\" id=\"LC23\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC24\">&nbsp;<\/div><div class=\"line\" id=\"LC25\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a standard state as the 4th state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC26\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">StandardState<\/span><\/div><div class=\"line\" id=\"LC27\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC28\">&nbsp;<\/div><div class=\"line\" id=\"LC29\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a terminal state as the 5th state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC30\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">1<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">TerminalState<\/span><\/div><div class=\"line\" id=\"LC31\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC32\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC33\">&nbsp;<\/div><div class=\"line\" id=\"LC34\"><span class=\"n\">describe<\/span> <span class=\"s2\">&quot;When building a state from a string with one *&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC35\">&nbsp;&nbsp;<span class=\"n\">before<\/span><span class=\"p\">(<\/span><span class=\"ss\">:each<\/span><span class=\"p\">)<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC36\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@state_builder<\/span> <span class=\"o\">=<\/span> <span class=\"no\">StateBuilder<\/span><span class=\"o\">.<\/span><span class=\"n\">new<\/span><\/div><div class=\"line\" id=\"LC37\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span> <span class=\"o\">=<\/span> <span class=\"vi\">@state_builder<\/span><span class=\"o\">.<\/span><span class=\"n\">create_from<\/span><span class=\"p\">(<\/span><span class=\"s2\">&quot;*&quot;<\/span><span class=\"p\">)<\/span><\/div><div class=\"line\" id=\"LC38\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC39\">&nbsp;<\/div><div class=\"line\" id=\"LC40\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should return a two state graph&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC41\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">should_not<\/span> <span class=\"o\">==<\/span> <span class=\"kp\">nil<\/span><\/div><div class=\"line\" id=\"LC42\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC43\">&nbsp;<\/div><div class=\"line\" id=\"LC44\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a match any transition&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC45\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">MatchAnyTransition<\/span><\/div><div class=\"line\" id=\"LC46\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC47\">&nbsp;<\/div><div class=\"line\" id=\"LC48\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a match-any transition that transitions to the start state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC49\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">0<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"vi\">@graph<\/span><\/div><div class=\"line\" id=\"LC50\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC51\">&nbsp;<\/div><div class=\"line\" id=\"LC52\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a match-always transition that transitions to the start state&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC53\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">1<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">should_not<\/span> <span class=\"o\">==<\/span> <span class=\"vi\">@graph<\/span><\/div><div class=\"line\" id=\"LC54\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC55\">&nbsp;<\/div><div class=\"line\" id=\"LC56\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a start state as the root node&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC57\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">StartState<\/span><\/div><div class=\"line\" id=\"LC58\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC59\">&nbsp;<\/div><div class=\"line\" id=\"LC60\">&nbsp;&nbsp;<span class=\"n\">it<\/span> <span class=\"s2\">&quot;should have a terminal state as the last node&quot;<\/span> <span class=\"k\">do<\/span><\/div><div class=\"line\" id=\"LC61\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"vi\">@graph<\/span><span class=\"o\">.<\/span><span class=\"n\">transitions<\/span><span class=\"o\">[<\/span><span class=\"mi\">1<\/span><span class=\"o\">].<\/span><span class=\"n\">destination<\/span><span class=\"o\">.<\/span><span class=\"n\">class<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"no\">TerminalState<\/span><\/div><div class=\"line\" id=\"LC62\">&nbsp;&nbsp;<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC63\"><span class=\"k\">end<\/span><\/div><\/pre><\/div>\n          \n        <\/div>\n\n        <div class=\"gist-meta\">\n          <a href=\"http://gist.github.com/raw/229774/19de930e7fc0fc35890ec690cdd44eae29bd43c2/gistfile1.rb\" style=\"float:right;\">view raw<\/a>\n          <a href=\"http://gist.github.com/229774#file_gistfile1.rb\" style=\"float:right;margin-right:10px;color:#666\">gistfile1.rb<\/a>\n          <a href=\"http://gist.github.com/229774\">This Gist<\/a> brought to you by <a href=\"http://github.com\">GitHub<\/a>.\n        <\/div>\n      <\/div>\n    \n  \n<\/div>\n')
