public function testMethodInvocationWithParameters()
{
$callable = new MockCallable();
$result = $callable->invokeMethod('foo');
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], array());
$expected = array('bar');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('one', 'two');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('short', 'parameter', 'list');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('a', 'longer', 'parameter', 'list');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('a', 'much', 'longer', 'parameter', 'list');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('an', 'extremely', 'long', 'list', 'of', 'parameters');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
$expected = array('an', 'extremely', 'long', 'list', 'of', 'parameters');
$result = $callable->invokeMethod('bar', $expected);
$this->assertEqual($result['method'], 'bar');
$this->assertEqual($result['params'], $expected);
$expected = array('if', 'you', 'have', 'a', 'parameter', 'list', 'this', 'long', 'then', 'UR', 'DOIN', 'IT', 'RONG');
$result = $callable->invokeMethod('foo', $expected);
$this->assertEqual($result['method'], 'foo');
$this->assertEqual($result['params'], $expected);
}