/** * Test that the base class can be detected under various circumstances */ public function testBaseClassDetection() { // Explicit DataObject $field1 = new DBClassName('MyClass', 'DataObject'); $this->assertEquals('DataObject', $field1->getBaseClass()); $this->assertNotEquals('DataObject', $field1->getDefault()); // Explicit base class $field2 = new DBClassName('MyClass', 'DBClassNameTest_Object'); $this->assertEquals('DBClassNameTest_Object', $field2->getBaseClass()); $this->assertEquals('DBClassNameTest_Object', $field2->getDefault()); // Explicit subclass $field3 = new DBClassName('MyClass'); $field3->setValue(null, new DBClassNameTest_ObjectSubClass()); $this->assertEquals('DBClassNameTest_Object', $field3->getBaseClass()); $this->assertEquals('DBClassNameTest_Object', $field3->getDefault()); // Implicit table $field4 = new DBClassName('MyClass'); $field4->setTable('DBClassNameTest_ObjectSubClass_versions'); $this->assertEquals('DBClassNameTest_Object', $field4->getBaseClass()); $this->assertEquals('DBClassNameTest_Object', $field4->getDefault()); // Missing $field5 = new DBClassName('MyClass'); $this->assertEquals('DataObject', $field5->getBaseClass()); $this->assertNotEquals('DataObject', $field5->getDefault()); // Invalid class $field6 = new DBClassName('MyClass'); $field6->setTable('InvalidTable'); $this->assertEquals('DataObject', $field6->getBaseClass()); $this->assertNotEquals('DataObject', $field6->getDefault()); // Custom default_classname $field7 = new DBClassName('MyClass'); $field7->setTable('DBClassNameTest_CustomDefault'); $this->assertEquals('DBClassNameTest_CustomDefault', $field7->getBaseClass()); $this->assertEquals('DBClassNameTest_CustomDefaultSubclass', $field7->getDefault()); }