-
Notifications
You must be signed in to change notification settings - Fork 0
/
JsonEncoderTest.php
75 lines (63 loc) · 2.4 KB
/
JsonEncoderTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
namespace Tests\Weew\JsonEncoder;
namespace Tests\Weew\JsonEncoder;
use PHPUnit_Framework_TestCase;
use Tests\Weew\JsonEncoder\Stubs\FakeArrayable;
use Tests\Weew\JsonEncoder\Stubs\FakeJsonable;
use Weew\JsonEncoder\Exceptions\InvalidDataTypeException;
use Weew\JsonEncoder\Exceptions\JsonDecodeException;
use Weew\JsonEncoder\Exceptions\JsonEncodeException;
use Weew\JsonEncoder\JsonEncoder;
class JsonEncoderTest extends PHPUnit_Framework_TestCase {
public function test_encode_array() {
$encoder = new JsonEncoder();
$json = $encoder->encode(['foo' => 'bar']);
$this->assertEquals('{"foo":"bar"}', $json);
}
public function test_encode_object() {
$encoder = new JsonEncoder();
$json = $encoder->encode((object) ['foo' => 'bar']);
$this->assertEquals('{"foo":"bar"}', $json);
}
public function test_encode_arrayable() {
$encoder = new JsonEncoder();
$json = $encoder->encode(new FakeArrayable());
$this->assertEquals('{"foo":"bar"}', $json);
}
public function test_encode_jsonable() {
$encoder = new JsonEncoder();
$json = $encoder->encode(new FakeJsonable());
$this->assertEquals('{"foo":"bar"}', $json);
}
public function test_encode_invalid_data_type() {
$encoder = new JsonEncoder();
$this->setExpectedException(InvalidDataTypeException::class);
$encoder->encode(1);
}
public function test_encode_throws_exception_with_invalid_data() {
$encoder = new JsonEncoder();
$data = [];
$data['foo'] = &$data;
$this->setExpectedException(JsonEncodeException::class);
$encoder->encode($data);
}
public function test_decode() {
$encoder = new JsonEncoder();
$data = $encoder->decode('{"foo": "bar"}');
$this->assertEquals(['foo' => 'bar'], $data);
}
public function test_decode_throws_exception_with_invalid_data() {
$encoder = new JsonEncoder();
$this->setExpectedException(JsonDecodeException::class);
$encoder->decode('{"foo": "bar"');
}
public function test_encode_null() {
$encoder = new JsonEncoder();
$this->setExpectedException(InvalidDataTypeException::class);
$encoder->encode(null);
}
public function test_decode_null() {
$encoder = new JsonEncoder();
$this->assertEquals(null, $encoder->decode(null));
}
}