1 | <?php |
||
17 | $second = new Person('Alex', 'Jobs', [ |
||
18 | new XmlConvertibleObject() |
||
19 | ]); |
||
20 | $diff = $first->xmlDiff($second); |
||
21 | $this->assertInstanceOf(get_class($first), $diff); |
||
22 | } |
||
23 | |||
24 | public function testDifferenceWithAdditional() |
||
25 | { |
||
26 | $first = new Person('Alex', 'Jobs', [ |
||
27 | new XmlConvertibleObject('a'), |
||
28 | new XmlConvertibleObject('b'), |
||
29 | ]); |
||
30 | $second = new Person('Alex', 'Jobs', [ |
||
31 | new XmlConvertibleObject('b'), |
||
32 | ]); |
||
33 | |||
34 | $diff = $first->xmlDiff($second); |
||
35 | $this->assertInstanceOf(XmlConvertibleInterface::class, $diff); |
||
36 | $this->assertNotNull($diff->xmlChildren); |
||
37 | $this->assertEquals(1, count($diff->xmlChildren ?? [])); |
||
38 | $this->assertEquals('a', $diff->xmlChildren[0]->getXmlElementName()); |
||
39 | } |
||
40 | |||
41 | public function testDifferenceWithNoProperty() |
||
42 | { |
||
43 | $a = new XmlConvertibleObject('undefined'); |
||
44 | $b = new XmlConvertibleObject('undefined'); |
||
45 | $a->{'property'} = mt_rand(); |
||
46 | $diff = $a->xmlDiff($b); |
||
47 | $this->assertInstanceOf(get_class($a), $diff); |
||
48 | } |
||
49 | |||
50 | public function testDifference() |
||
51 | { |
||
52 | $xml = $this->generateFirst(); |
||
53 | $compared = $this->generateSecond(); |
||
54 | |||
55 | $result = $xml->xmlDiff($compared); |
||
56 | |||
57 | $this->assertInstanceOf(Person::class, $result); |
||
58 | |||
59 | $this->assertNotNull($result->xmlChildren); |
||
60 | $this->assertCount(1, $result->xmlChildren); |
||
61 | |||
62 | $this->assertInstanceOf(Head::class, $result->xmlChildren[0]); |
||
63 | $this->assertNotNull($result->xmlChildren[0]->xmlChildren); |
||
64 | $this->assertCount(1, $result->xmlChildren[0]->xmlChildren); |
||
65 | |||
66 | $this->assertInstanceOf( |
||
67 | XmlConvertibleObject::class, |
||
68 | $result->xmlChildren[0]->xmlChildren[0] |
||
69 | ); |
||
70 | $this->assertNull($result->xmlChildren[0]->xmlChildren[0]->xmlChildren); |
||
71 | } |
||
72 | |||
73 | protected function generateFirst() |
||
74 | { |
||
75 | return new Person("Alex", "Letni", [ |
||
76 | new Head("small", 'cool', [ |
||
77 | new XmlConvertibleObject('Eye'), |
||
78 | new XmlConvertibleObject('Eye', [ |
||
79 | new Person('Adam', 'Morgan'), |
||
80 | ]), |
||
81 | ]) |
||
82 | ]); |
||
83 | } |
||
84 | |||
85 | protected function generateSecond() |
||
86 | { |
||
87 | return new Person("Alex", "Letni", [ |
||
88 | new Head('small', 'cool', [ |
||
89 | new XmlConvertibleObject('Eye', [ |
||
90 | new Person('Adam', 'Morgan'), |
||
91 | ]), |
||
92 | ]) |
||
93 | ]); |
||
94 | } |
||
95 | } |
||
96 |