Exemple #1
0
 /**
  * @param TreeObject $subTree
  * @param TreeObject $value
  * @param TreeObject $ret
  * @param $key
  */
 private function compareSubTree($subTree, TreeObject $value, &$ret, $key)
 {
     if ($subTree instanceof TreeObject) {
         if ($value->getHash() != $subTree->getHash()) {
             $ret->setValue($key, $this->diff($subTree, $value));
         }
     } else {
         $ret->setValue($key, $value);
     }
 }
Exemple #2
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()));
 }
Exemple #3
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));
 }
Exemple #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));
 }
Exemple #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;