private static function doCall($type, $type_param, $functionName, $params = array()) { if (Yii::app()->params['isUnitTests'] === true) { switch ($type) { case 'static': return StubFactory::getStub($type_param . '::' . $functionName); case 'instance': return StubFactory::getStub(get_class($type_param) . '->' . $functionName); default: throw new InvalidArgumentException('Unknown type of call: ' . $type); } } if (!$params) { $params = array(); } else { if (!is_array($params)) { $params = array($params); } } switch ($type) { case 'static': return forward_static_call_array(array($type_param, $functionName), $params); case 'instance': return call_user_func_array(array($type_param, $functionName), $params); default: throw new InvalidArgumentException('Unknown type of call: ' . $type); } }
public function testGetMessageWithTime_TwoSameCalls() { $log = new ListenerLog(); StubFactory::clear(); StubFactory::stubFunction('ListenerLog->find', array('return' => $log)); $message1 = ListenerLog::getMessageWithTime(1, '12345', '423'); $message2 = ListenerLog::getMessageWithTime(1, '12345', '423'); $this->assertSame($log, $message1); $this->assertSame($log, $message2); $this->assertEquals(1, StubFactory::getStubCallCount('ListenerLog->find')); }
public function test_Run_AWS01Station() { $settings = new Settings(); $listenerLog = new ListenerLog(); $listenerLog->message = '@DAWS01000101001900WS13000000000000RN1001007000009500BV1120SR1001000000000000SD10010000000TP10060HU1000TP20431TP30391WD13001001001PR116150693D2856$'; $processMessage = new ProcessMessage(LoggerFactory::getTestLogger(), $listenerLog); $station = new Station(); $station->station_id = 1; $station->station_id_code = 'AWS01'; $station->station_type = 'aws'; $handlers = array(); $sensorHandler = new SensorDBHandler(); $sensorHandler->handler_id_code = 'WindSpeed'; $sensor = new StationSensor(); $sensor->handler = $sensorHandler; $sensor->station_sensor_id = 1; StubFactory::clear(); StubFactory::stubFunction('ListenerLogProcessError->save'); StubFactory::stubFunction('ListenerLog->save'); StubFactory::stubFunction('Station->find', array('return' => $station)); StubFactory::stubFunction('Settings->findByPk', array('return' => $settings)); StubFactory::stubFunction('SensorData->find'); StubFactory::stubFunction('SensorData->save'); StubFactory::stubFunction('StationCalculation->findAll', array('return' => $handlers)); StubFactory::stubFunction('StationSensor->find', array('return' => $sensor)); $processMessage->run(); $this->assertEquals(9, count($processMessage->warnings)); $this->assertEquals(0, count($processMessage->errors)); // Call of stub in destructor unset($processMessage); $this->assertEquals(0, StubFactory::getStubCallCount('Settings->findByPk')); $this->assertEquals(1, StubFactory::getStubCallCount('Station->find')); $this->assertEquals(2, StubFactory::getStubCallCount('ListenerLog->save')); $this->assertEquals(4, StubFactory::getStubCallCount('SensorData->save')); }
public static function clear() { self::$stubInfo = array(); }