+ public function testGetSessionArguments()
+ {
+ $session = new Session(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+ $controller = array($this, 'controllerWithSession');
+
+ $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+ }
+
+ public function testGetSessionArgumentsWithExtendedSession()
+ {
+ $session = new ExtendingSession(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+ $controller = array($this, 'controllerWithExtendingSession');
+
+ $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+ }
+
+ public function testGetSessionArgumentsWithInterface()
+ {
+ $session = $this->getMockBuilder(SessionInterface::class)->getMock();
+ $request = Request::create('/');
+ $request->setSession($session);
+ $controller = array($this, 'controllerWithSessionInterface');
+
+ $this->assertEquals(array($session), self::$resolver->getArguments($request, $controller));
+ }
+
+ /**
+ * @expectedException \RuntimeException
+ */
+ public function testGetSessionMissMatchWithInterface()
+ {
+ $session = $this->getMockBuilder(SessionInterface::class)->getMock();
+ $request = Request::create('/');
+ $request->setSession($session);
+ $controller = array($this, 'controllerWithExtendingSession');
+
+ self::$resolver->getArguments($request, $controller);
+ }
+
+ /**
+ * @expectedException \RuntimeException
+ */
+ public function testGetSessionMissMatchWithImplementation()
+ {
+ $session = new Session(new MockArraySessionStorage());
+ $request = Request::create('/');
+ $request->setSession($session);
+ $controller = array($this, 'controllerWithExtendingSession');
+
+ self::$resolver->getArguments($request, $controller);
+ }
+
+ /**
+ * @expectedException \RuntimeException
+ */
+ public function testGetSessionMissMatchOnNull()
+ {
+ $request = Request::create('/');
+ $controller = array($this, 'controllerWithExtendingSession');
+
+ self::$resolver->getArguments($request, $controller);
+ }
+