Esempio n. 1
0
 public function testReferenceJsons()
 {
     $first = TreeObject::createFrom(new JsonImport('{ "foo":{ "bar":"baz", "biz":"foo" }, "fiz":{ "foo":"baz" }, "bar":"baz", "baz":[ "foo", "bar" ] }'));
     $second = TreeObject::createFrom(new JsonImport('{ "foo":{ "bar":"baz1", "biz":"foo" }, "fiz":{ "foo":"baz" }, "bar":"baz", "baz":[ "foo1" ] }'));
     $diff = $this->comparator->diff($first, $second);
     $this->assertEquals('{"foo":{"bar":"baz1"},"baz":["foo1"]}', $diff->exportWith(new JsonExport()));
 }
Esempio n. 2
0
 public function testSubTreeCreation()
 {
     $arr = ["a" => 1, "b" => ["c" => 2], "c" => ["c" => 2]];
     $tree = Tree::createFrom(new Provider($arr));
     $this->assertTrue($tree->keyExists("a"));
     $this->assertTrue($tree->keyExists("b"));
     $this->assertTrue($tree->keyExists("c"));
     $this->assertTrue($tree->getKey("c")->keyExists("c"));
     $this->assertEquals(2, $tree->getKey("c")->getKey("c"));
     $this->assertEquals($tree->getKey("b")->getHash(), $tree->getKey("c")->getHash());
     $this->assertEquals($arr, $tree->exportWith($this->exporter));
 }
Esempio n. 3
0
 public function diff(TreeObject $first, TreeObject $second)
 {
     $ret = TreeObject::createFrom(new Provider([]));
     foreach ($second->getKeys() as $key) {
         $value = $second->getKey($key);
         if (!$first->keyExists($key)) {
             $ret->setValue($key, $value);
         } else {
             if ($value instanceof TreeObject) {
                 $subTree = $first->getKey($key);
                 $this->compareSubTree($subTree, $value, $ret, $key);
             } else {
                 if ($first->getKey($key) != $value) {
                     $ret->setValue($key, $value);
                 }
             }
         }
     }
     return $ret;
 }
Esempio n. 4
0
 public function testChangedObjectInSubTree()
 {
     $first = TreeObject::createFrom(new Provider(["a" => 1, "b" => ["c" => 2, "d" => 3]]));
     $second = TreeObject::createFrom(new Provider(["a" => 1, "b" => ["c" => 2, "d" => ["e" => 4]]]));
     $this->assertEquals(["b" => ["d" => ["e" => 4]]], $this->comparator->diff($first, $second)->exportWith($this->exporter));
 }
Esempio n. 5
0
<?php

/**
 * Created by PhpStorm.
 * User: alexk
 * Date: 2/2/16
 * Time: 9:58 PM
 */
chdir(dirname(__DIR__));
require_once "vendor" . DIRECTORY_SEPARATOR . "autoload.php";
use JsonDiff\ValueObject\Tree\Tree as TreeObject;
use JsonDiff\DataProvider\Json\Import as JsonProvider;
use JsonDiff\Comparator\Diff\Tree\Tree as Comparator;
use JsonDiff\DataProvider\Json\Export as JsonExporter;
$first = TreeObject::createFrom(new JsonProvider('{ "foo":{ "bar":"baz", "biz":"foo" }, "fiz":{ "foo":"baz" }, "bar":"baz", "baz":[ "foo", "bar" ] }'));
$second = TreeObject::createFrom(new JsonProvider('{ "foo":{ "bar":"baz1", "biz":"foo" }, "fiz":{ "foo":"baz" }, "bar":"baz", "baz":[ "foo1" ] }'));
$comparator = new Comparator();
$diff = $comparator->diff($first, $second);
$jsonExporter = new JsonExporter();
echo $first->exportWith($jsonExporter), PHP_EOL;
echo $second->exportWith($jsonExporter), PHP_EOL;
echo $diff->exportWith($jsonExporter), PHP_EOL;