<?php
namespace Test\Providers;
use TADPHP\Providers\TADZKLib;
use Test\Helpers\ClassReflection;
class TADZKLibTest extends \PHPUnit_Framework_TestCase
{
public function testBuildTADZKLibIsOk()
{
$options = ['ip' => '127.0.0.1', 'udp_port' => 4370, 'connection_timeout'=>1];
$zk = new TADZKLib( $options );
$this->assertNotNull($zk);
$this->assertInstanceOf('TADPHP\Providers\TADZKLib', $zk);
return $zk;
}
/**
* @depends testBuildTADZKLibIsOk
* @dataProvider build_commands_fixtures
*/
public function testBuildCommandResponse($command, $result_code, $result, $expected_xml, $encoding, TADZKLib $zk)
{
$result = ClassReflection::invoke_method($zk, 'build_command_response', [ $command, $result_code, $result, $encoding ]);
$this->assertEquals($expected_xml, $result);
}
/**
* @depends testBuildTADZKLibIsOk
* @dataProvider datetime_fixtures
*/
public function testSettingUpDateIsOk($datetime, TADZKLib $zk)
{
$valid_datetime_keys = ['year', 'month', 'day', 'hour', 'minute', 'second'];
$result = ClassReflection::invoke_method( $zk, 'setup_datetime', [$datetime] );
$result_keys = array_keys($result);
$this->assertEmpty( array_diff( $valid_datetime_keys, $result_keys ), 'invalid keys found!');
}
/**
* @depends testBuildTADZKLibIsOk
*/
public function testReverseHex(TADZKLib $zk)
{
$hex_data = "000000000000000000000000000000002202000000000000420400000000000043000000000000004a0a00000000000002000000020000001027000010270000400d0300ce220000ee240000fd0c0300000000000000000000000000";
$reversed_hex = ClassReflection::invoke_method($zk, 'reverse_hex', [$hex_data]);
$reversed_reversed_hex = ClassReflection::invoke_method($zk, 'reverse_hex', [$reversed_hex]);
$this->assertEquals( strlen($hex_data), strlen($reversed_hex));
$this->assertEquals( $hex_data, $reversed_reversed_hex );
}
/**
* @depends testBuildTADZKLibIsOk
*/
public function testEncodeTime(TADZKLib $zk)
{
$expected_encoded_time = 480003771; // This integer represents '2014-12-07 14:22:51' timestamp.
$dt = ['date'=>'2014-12-07', 'time'=>'14:22:51'];
$t = ClassReflection::invoke_method($zk, 'setup_datetime', [$dt]);
$encoded_time = ClassReflection::invoke_method($zk, 'encode_time', [$t]);
$this->assertInternalType('integer', $encoded_time);
$this->assertEquals($expected_encoded_time, $encoded_time);
}
public function build_commands_fixtures()
{
$encoding = 'iso8859-1';
return [
[ 'restart', true, true, '<RestartResponse><Row><Result>1</Result><Information>Successfully!</Information></Row></RestartResponse>', $encoding],
[ 'poweroff', false, false, '<PoweroffResponse><Row><Result>0</Result><Information>Fail!</Information></Row></PoweroffResponse>', $encoding],
[ 'foo', true, ['bar'=>0, 'taz'=>0], '<FooResponse><Row><bar>0</bar><taz>0</taz></Row></FooResponse>', $encoding],
[ 'foo', true, [], '<FooResponse></FooResponse>', $encoding]
];
}
public function datetime_fixtures()
{
return [
'empty_args' => [ [] ],
'only_date' => [ ['date'=>'2014-12-06'] ],
'only_time' => [ ['time'=>'08:38:23'] ],
'valid_args' => [ ['date'=>'2014-12-06', 'time'=>'08:38:23'] ] ,
'crazy_args' => [ ['foo'=>'123', 'bar'=>'abc', 'baz'=>'#$%'] ]
];
}
}
|