BaseException.php

<?php

namespace Liaison\Test;

class Exceptions extends \Taeluf\Tester {

    // public function testAnonymousFunctionHandling(){
    //     $this->disable();
    //     echo
    //     <<<COMMENT
    //     // This stack WAS failing because of depth #2... But I fixed it... And I don't wanna test it right now.
    //     // #0 /vendor/taeluf/liaison/5-package/core/Router.php(91): Liaison->__call()
    //     // #1 /vendor/taeluf/liaison/5-package/core/Router.php(41): Lia\Route\Router->deliver()
    //     // #2 [internal function]: Lia\Route\Router->global_contentFor()
    //     // #3 /vendor/taeluf/liaison/5-package/class/Liaison/Functions.php(265): call_user_func_array()
    //     // #4 /vendor/taeluf/liaison/8-build/test/Compo/Router.php(54): Liaison->__call()
    //     COMMENT;
    //     return false;
    // }

    public function testThrowDeepFromClosureInFile(){

        $file = null;
        $line = null;
        $class = __CLASS__;
        try {
            require(__DIR__.'/../extra/BaseException.php');
        } catch (\Lia\Exception\Base $be){
            $trace = $be->getExternalTrace();
        }

        return 
            $this->test('File')->compare($file,$trace->file)
        &&  $this->test('Function')->compare($function,$trace->fromFunction)
        &&  $this->test('Class')->compare($class,$trace->fromClass)
        &&  $this->test('Depth')->compare(4, $trace->depth)
        &&  $this->test('Line')->compare($line,$trace->line);
        ;
    }

    public function testThrowDeep(){
        $lia = $this->lia();

        try {
            $lia = $this->lia();
            $line = __LINE__+1;
            $lia->testThrowBaseExceptionClass();
        } catch (\Lia\Exception\Base $be){
            $trace = $be->getExternalTrace();
        }

        // echo $be;

        return 
            $this->test('File')->compare(__FILE__,$trace->file)
        &&  $this->test('Function')->compare(__FUNCTION__,$trace->fromFunction)
        &&  $this->test('Class')->compare(__CLASS__,$trace->fromClass)
        &&  $this->test('Depth')->compare(4, $trace->depth)
        &&  $this->test('Line')->compare($line,$trace->line);
        ;
        
    }

    public function testAddGlobalFunction(){
        try {
            $lia = $this->lia();
            $line = __LINE__+5;
            $lia->addGlobalFunction(
                'some_function',
                function(){},
                [
                    'prefix'=>'on'
                ]
            );
        } catch (\Lia\Exception\Base $be){
            $trace = $be->getExternalTrace();
        }

        // echo $be;

        return 
            $this->test('File')->compare(__FILE__,$trace->file)
        &&  $this->test('Function')->compare(__FUNCTION__,$trace->fromFunction)
        &&  $this->test('Class')->compare(__CLASS__,$trace->fromClass)
        &&  $this->test('Depth')->compare(0, $trace->depth)
        &&  $this->test('Line')->compare($line,$trace->line);
        ;
        
    }

    protected function lia($debug=false){
        $liaison = new \Liaison(['bare'=>true,'debug'=>$debug]);
        return $liaison;
    }

}

Exceptions::runAll();