Пример #1
0
 /**
  * Tests checking if attribute has to be replaced on persistence
  *
  * @return void
  */
 public function testIsReplaced()
 {
     $test = new NodeAttribute('test');
     $test->add(array('v1', 'v2', 'v3', 'v4'));
     $test->snapshot();
     $test->add('v5');
     $test->remove('v3');
     $test->remove('v2');
     $test->add('v3');
     $this->assertEquals(array('v5'), $test->getDiffAdditions(), 'Tracking works as usual');
     $this->assertEquals(array('v2'), $test->getDiffDeletions(), 'Tracking works as usual');
     $this->assertEquals(array('v3'), $test->getDiffReplacements(), 'Tracking works as usual');
     $this->assertFalse($test->isReplaced(), 'We have just been adding & removing values');
     $test->set(array('v2', 'v6'));
     $this->assertEquals(array(), array_merge($test->getDiffAdditions(), $test->getDiffDeletions(), $test->getDiffReplacements()), 'Diff got cleared');
     $this->assertTrue($test->isReplaced(), 'Object is marked for a complete replacement');
     $test->add('v5');
     $test->remove('v2');
     $this->assertEquals(array(), array_merge($test->getDiffAdditions(), $test->getDiffDeletions(), $test->getDiffReplacements()), 'Diff not updated');
     $this->assertTrue($test->isReplaced(), 'Object is still marked for a replacement');
     $test->snapshot();
     $test->add('v2');
     $this->assertEquals(array('v2'), $test->getDiffAdditions(), 'Diff tracked again');
     $this->assertFalse($test->isReplaced(), 'We are no more in a replacement case');
 }