<?php
namespace ssa\runner\converter;
use ssa\runner\converter\DefaultJsonEncoderTest;
/**
*
*
* Description of DefaultJsonEncoderTest
*
* @author thomas
*/
class DefaultJsonEncoderTest extends \PHPUnit_Framework_TestCase {
private $encoder;
public function setUp() {
$this->encoder = new DefaultJsonEncoder();
}
public function testArrayEncoder() {
$result = $this->encoder->encode(array(1,2,'3'));
$this->assertEquals('[1,2,"3"]', $result);
$this->assertEquals(array(
'Content-type' => 'application/json'
), $this->encoder->getHeaders());
}
public function testArrayKeyValueEncoder() {
$result = $this->encoder->encode(array(
'param1' => 'value1',
'param2' => (object) array('param1' => 'value2'),
'param3' => array('bla'),
'param4' => 10
));
// attribute without getter are not exported
$this->assertEquals('{"param1":"value1","param2":[],"param3":["bla"],"param4":10}', $result);
$this->assertEquals(array(
'Content-type' => 'application/json'
), $this->encoder->getHeaders());
}
public function testObjectEncoder() {
$pojo = new Pojo();
$subPojo = new Pojo();
$subPojo->setParam1('sub-value');
$pojo->setParam1('value1');
$pojo->setParam2(154);
$pojo->setParam3($subPojo);
$result = $this->encoder->encode($pojo);
$this->assertEquals('{"param1":"value1","param3":{"param1":"sub-value","param3":null}}', $result);
$this->assertEquals(array(
'Content-type' => 'application/json'
), $this->encoder->getHeaders());
}
public function testArrayObjectEncoder() {
$pojo = new Pojo();
$pojo->setParam1('value1');
$pojo->setParam2(154);
$pojo->setParam3(48);
$pojo2 = new Pojo();
$pojo2->setParam1('sub-value');
$result = $this->encoder->encode(array($pojo, $pojo2));
$this->assertEquals('[{"param1":"value1","param3":48},{"param1":"sub-value","param3":null}]', $result);
$this->assertEquals(array(
'Content-type' => 'application/json'
), $this->encoder->getHeaders());
}
}
class Pojo {
private $param1;
private $param2;
private $param3;
public function getParam1() {
return $this->param1;
}
public function getParam3() {
return $this->param3;
}
public function setParam1($param1) {
$this->param1 = $param1;
}
public function setParam3($param3) {
$this->param3 = $param3;
}
public function setParam2($param2) {
$this->param2 = $param2;
}
}
|