public function testGetComponentByIdOrClassNameComplex() { $id = 'assessmentSectionRoot'; $title = 'Assessment Section Root'; $assessmentSectionRoot = new AssessmentSection($id, $title, true); // -- subAssessmentSection1 $id = 'subAssessmentSection1'; $title = 'Sub-AssessmentSection 1'; $subAssessmentSection1 = new AssessmentSection($id, $title, true); $sectionParts = new SectionPartCollection(); $sectionParts[] = new AssessmentItemRef('Q01', './Q01.xml'); $sectionParts[] = new AssessmentItemRef('Q02', './Q02.xml'); $sectionParts[] = new AssessmentItemRef('Q03', './Q03.xml'); $sectionParts[] = new AssessmentItemRef('Q04', './Q04.xml'); $subAssessmentSection1->setSectionParts($sectionParts); // -- subAssessmentSection2 $id = 'subAssessmentSection2'; $title = 'Sub-AssessmentSection 1'; $subAssessmentSection2 = new AssessmentSection($id, $title, true); $sectionParts = new SectionPartCollection(); $sectionParts[] = new AssessmentItemRef('Q05', './Q05.xml'); $sectionParts[] = new AssessmentItemRef('Q06', './Q06.xml'); $sectionParts[] = new AssessmentItemRef('Q07', './Q07.xml'); $subAssessmentSection2->setSectionParts($sectionParts); // -- bind the whole thing together. $sectionParts = new SectionPartCollection(); $sectionParts[] = $subAssessmentSection1; $sectionParts[] = $subAssessmentSection2; $assessmentSectionRoot->setSectionParts($sectionParts); // -- recursive search testing. $search = $assessmentSectionRoot->getComponentByIdentifier('Q02'); $this->assertEquals('Q02', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('Q04'); $this->assertEquals('Q04', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('Q05'); $this->assertEquals('Q05', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('Q07'); $this->assertEquals('Q07', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('subAssessmentSection1'); $this->assertEquals('subAssessmentSection1', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('subAssessmentSection2'); $this->assertEquals('subAssessmentSection2', $search->getIdentifier()); // -- non recursive search testing. $search = $assessmentSectionRoot->getComponentByIdentifier('Q02', false); $this->assertSame($search, null); $search = $assessmentSectionRoot->getComponentByIdentifier('subAssessmentSection1', false); $this->assertEquals('subAssessmentSection1', $search->getIdentifier()); $search = $assessmentSectionRoot->getComponentByIdentifier('assessmentSectionRoot', false); $this->assertSame($search, null); // -- recursive class name search. $search = $assessmentSectionRoot->getComponentsByClassName('assessmentSection'); $this->assertEquals(2, count($search)); $search = $assessmentSectionRoot->getComponentsByClassName('assessmentItemRef'); $this->assertEquals(7, count($search)); $search = $assessmentSectionRoot->getComponentsByClassName(array('assessmentSection', 'assessmentItemRef')); $this->assertEquals(9, count($search)); $search = $assessmentSectionRoot->getComponentsByClassName('microMachine'); $this->assertEquals(0, count($search)); // -- non recursive class name search. $search = $assessmentSectionRoot->getComponentsByClassName('assessmentSection', false); $this->assertEquals(2, count($search)); $search = $assessmentSectionRoot->getComponentsByClassName('assessmentItemRef', false); $this->assertEquals(0, count($search)); $search = $assessmentSectionRoot->getComponentsByClassName(array('assessmentSection', 'assessmentItemRef'), false); $this->assertEquals(2, count($search)); }