1<?php 2 3/** 4 * Hoa 5 * 6 * 7 * @license 8 * 9 * New BSD License 10 * 11 * Copyright © 2007-2017, Hoa community. All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions are met: 15 * * Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * * Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in the 19 * documentation and/or other materials provided with the distribution. 20 * * Neither the name of the Hoa nor the names of its contributors may be 21 * used to endorse or promote products derived from this software without 22 * specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE 28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37namespace Hoa\Math\Test\Unit; 38 39use Hoa\Compiler; 40use Hoa\File; 41use Hoa\Math\Visitor\Arithmetic as CUT; 42use Hoa\Test; 43 44/** 45 * Class \Hoa\Math\Test\Unit\Issue. 46 * 47 * Test suite of detected issues. 48 * 49 * @copyright Copyright © 2007-2017 Hoa community 50 * @license New BSD License 51 */ 52class Issue extends Test\Unit\Suite implements Test\Decorrelated 53{ 54 public function case_github_36() 55 { 56 $this 57 ->given( 58 $compiler = Compiler\Llk\Llk::load(new File\Read('hoa://Library/Math/Arithmetic.pp')), 59 $visitor = new CUT(), 60 $ast = $compiler->parse('1 / 0') 61 ) 62 ->exception(function () use ($visitor, $ast) { 63 $visitor->visit($ast); 64 }) 65 ->isInstanceOf(\RuntimeException::class); 66 } 67 68 public function case_github_43() 69 { 70 $this 71 ->given( 72 $compiler = Compiler\Llk\Llk::load(new File\Read('hoa://Library/Math/Arithmetic.pp')), 73 $visitor = new CUT(), 74 $ast = $compiler->parse('1 / (1 / 0)') 75 ) 76 ->exception(function () use ($visitor, $ast) { 77 $visitor->visit($ast); 78 }) 79 ->isInstanceOf(\RuntimeException::class); 80 } 81 82 public function case_github_47() 83 { 84 $this 85 ->given( 86 $compiler = Compiler\Llk\Llk::load(new File\Read('hoa://Library/Math/Arithmetic.pp')), 87 $visitor = new CUT() 88 ) 89 ->when($ast = $compiler->parse('C')) 90 ->then 91 ->object($ast) 92 ->isInstanceOf(Compiler\Llk\TreeNode::class) 93 ->string($ast->getId()) 94 ->isEqualTo('token') 95 ->string($ast->getValueToken()) 96 ->isEqualTo('constant') 97 ->string($ast->getValueValue()) 98 ->isEqualTo('C'); 99 } 100} 101