Example #1
0
 public function testParameter()
 {
     // register parameter
     $this->instance->parameter('type', function () {
     });
     // register parameter with invalid type
     try {
         $this->instance->parameter([], function () {
         });
         $this->fail();
     } catch (InvalidArgumentException $e) {
     }
     // register invalid parameter
     try {
         $this->instance->parameter('type', 'invalid');
         $this->fail();
     } catch (ErrorException $e) {
     }
     // with app as parameter
     $tmp = '';
     $this->instance->get('/bla', function (\Hahns\Hahns $app) use(&$tmp) {
         $tmp = $app;
     });
     $this->instance->run('/bla', 'get');
     $this->assertInstanceOf('\\Hahns\\Hahns', $tmp);
     // register parameter as singleton (default)
     $hahns = new \Hahns\Hahns();
     $hahns->parameter('\\IsSingleton', function () {
         return new IsSingleton();
     });
     // regiser parameter as non-singleton
     $hahns->parameter('\\IsNotSingleton', function () {
         return new IsNotSingleton();
     }, false);
     // test singleton parameter
     $tmp = '';
     $hahns->get('/singleton', function (IsSingleton $p) use($tmp) {
         $tmp = $p->test;
     });
     $hahns->run('/singleton', 'get');
     $test = $tmp;
     $hahns->run('/singleton', 'get');
     $this->assertEquals($test, $tmp);
     // test non-singleton parameter
     $tmp = '';
     $hahns->get('/is/not/singleton', function (IsNotSingleton $p) use(&$tmp) {
         $tmp = $p->test;
     });
     $hahns->run('/is/not/singleton', 'get');
     $test = $tmp;
     $hahns->run('/is/not/singleton', 'get');
     $this->assertNotEquals($test, $tmp);
 }