/** * Tests setting values * * @return void */ public function testSet() { $test = new NodeAttribute('test'); $this->assertTrue($test->set('v1')); $this->assertEquals(array('v1'), $test->getValues(), 'Our value got added'); $this->assertEquals(array(), array_merge($test->getDiffAdditions(), $test->getDiffDeletions(), $test->getDiffReplacements()), 'Attribute is marked as overridden, changes are not tracked anymore'); $this->assertTrue($test->set(array('v2', 'v3'))); $this->assertEquals(array(), array_merge($test->getDiffAdditions(), $test->getDiffDeletions(), $test->getDiffReplacements()), 'Attribute is still marked as overridden, no changes got tracked'); $test->add('v4'); $test->remove('v3'); $test->remove('v2'); $test->add('v3'); $this->assertEquals(array(), array_merge($test->getDiffAdditions(), $test->getDiffDeletions(), $test->getDiffReplacements()), 'Even regular add and remove operations get ignored'); $test->snapshot(); $test->add('v5'); $this->assertEquals(array('v5'), $test->getDiffAdditions(), 'Tracking is working again'); }