ACC SHELL

Path : /srv/www/vhosts/pk-dane/kliminvest/vendor/nette/tester/tests/Framework/
File Upload :
Current File : /srv/www/vhosts/pk-dane/kliminvest/vendor/nette/tester/tests/Framework/Assert.equal.recursive.phpt

<?php

/**
 * @testCase
 */

use Tester\Assert;

require __DIR__ . '/../bootstrap.php';


class RecursionTest extends Tester\TestCase
{
	public function testSimple()
	{
		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = $o1;
		$o2->a = $o2;
		$o1->b = 'foo';
		$o2->b = 'foo';
		Assert::equal( $o1, $o2 );


		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = $o1;
		$o2->a = $o2;
		$o1->b = 'foo';
		$o2->b = 'bar';
		Assert::notEqual( $o1, $o2 );


		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = $o1;
		$o2->a = new stdClass;
		Assert::notEqual( $o1, $o2 );


		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = new stdClass;
		$o2->a = new stdClass;
		$o1->a->a = $o1;
		$o2->a->a = $o2->a;
		Assert::notEqual( $o1, $o2 );
	}


	public function testMultiple()
	{
		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = $o1;
		$o2->a = $o2;
		$o1->b = $o1;
		$o2->b = $o2;
		$o1->c = $o1;
		$o2->c = $o2;
		Assert::equal( $o1, $o2 );

		$o2->c = $o1;
		Assert::notEqual( $o1, $o2 );
	}


	public function testDeep()
	{
		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = new stdClass;
		$o2->a = new stdClass;
		$o1->a->b = new stdClass;
		$o2->a->b = new stdClass;
		$o1->a->b->c = new stdClass;
		$o2->a->b->c = new stdClass;
		$o1->a->b->c->d = $o1;
		$o2->a->b->c->d = $o2;
		Assert::equal( $o1, $o2 );

		$o2->a->b->c->d = $o1;
		Assert::notEqual( $o1, $o2 );
	}


	public function testCross()
	{
		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = $o2;
		$o2->a = $o1;
		Assert::equal( $o1, $o2 );

		$o3 = new stdClass;
		$o3->a = $o3;
		$o2->a = $o3;
		Assert::notEqual( $o1, $o2 );


		$o1 = new stdClass;
		$o2 = new stdClass;
		$o1->a = new stdClass;
		$o2->b = new stdClass;
		$o1->b = $o1;
		$o2->a = $o2;
		Assert::notEqual( $o1, $o2 );

		$o1->b = $o1->a;
		$o2->a = $o2->b;
		Assert::equal( $o1, $o2 );
	}


	public function testThirdParty()
	{
		$o1 = new stdClass;
		$o2 = new stdClass;
		$o3 = new stdClass;
		$o1->a = $o3;
		$o2->a = $o3;
		$o1->b = $o1->a;
		$o2->b = $o2->a;
		Assert::equal( $o1, $o2 );


		$o1 = new stdClass;
		$o2 = new stdClass;
		$o3 = new stdClass;
		$o1->a = new stdClass;
		$o2->a = new stdClass;
		$o1->a->b = $o3;
		$o2->a->b = $o3;
		Assert::equal( $o1, $o2 );

		$o3->c = 'foo';
		Assert::equal( $o1, $o2 );

		$o3->c = $o1;
		Assert::equal( $o1, $o2 );
	}

}

$test = new RecursionTest;
$test->run();

ACC SHELL 2018