/**
  * Test cache is correctly flushed on write
  */
 function testCacheFlushing()
 {
     // For base classes, aggregate is calculcated on it and all children classes
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 9);
     // For subclasses, aggregate is calculated for that subclass and it's children only
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 9);
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6);
     $foo = $this->objFromFixture('AggregateTest_Foo', 'foo1');
     $foo->Foo = 12;
     $foo->write();
     // For base classes, aggregate is calculcated on it and all children classes
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 12);
     // For subclasses, aggregate is calculated for that subclass and it's children only
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 9);
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6);
     $fab = $this->objFromFixture('AggregateTest_Fab', 'fab1');
     $fab->Foo = 15;
     $fab->write();
     // For base classes, aggregate is calculcated on it and all children classes
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Foo')->Max('Foo'), 15);
     // For subclasses, aggregate is calculated for that subclass and it's children only
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fab')->Max('Foo'), 15);
     $this->assertEquals(DataObject::Aggregate('AggregateTest_Fac')->Max('Foo'), 6);
 }