public function setUp()
 {
     $document = new MediaWikiDocument(new SimpleXMLElement($this->documentManyRevisionsXml));
     $contributor = new MediaWikiContributor(json_decode($this->documentManyRevisionsUserJson, true));
     $this->instance = new GitCommitFileRevision($document, 'foo/', '.html');
     $revisionsList = $document->getRevisions();
     for ($revisionsList->rewind(); $revisionsList->valid(); $revisionsList->next()) {
         $rev = $revisionsList->current();
         $rev->setContributor($contributor, false);
     }
     $this->instance->setRevision($document->getLatest());
 }
 /**
  * @covers ::normalize
  */
 public function testNormalize()
 {
     // What the page URL
     $assertions[0][0] = 'WPD:Infrastructure/proposals/Site Map';
     // Desired sanitized URL
     $assertions[0][1] = 'WPD/Infrastructure/proposals/Site_Map';
     // What would be the file name to read/write from
     $assertions[0][2] = 'out/foo/bar/WPD/Infrastructure/proposals/Site_Map/index.bazz';
     $assertions[1][0] = 'WPD:Doc Sprints';
     $assertions[1][1] = 'WPD/Doc_Sprints';
     $assertions[1][2] = 'out/foo/bar/WPD/Doc_Sprints/index.bazz';
     $assertions[2][0] = 'tutorials/What is CSS?';
     $assertions[2][1] = 'tutorials/What_is_CSS';
     $assertions[2][2] = 'out/foo/bar/tutorials/What_is_CSS/index.bazz';
     $assertions[3][0] = 'Tutorials/HTML forms - the basics';
     $assertions[3][1] = 'Tutorials/HTML_forms_-_the_basics';
     $assertions[3][2] = 'out/foo/bar/Tutorials/HTML_forms_-_the_basics/index.bazz';
     $assertions[4][0] = 'ja/concepts/programming/programming basics';
     $assertions[4][1] = 'ja/concepts/programming/programming_basics';
     $assertions[4][2] = 'out/foo/bar/ja/concepts/programming/programming_basics/index.bazz';
     $assertions[5][0] = 'concepts/Internet and Web/the history of the web/tr';
     $assertions[5][1] = 'concepts/Internet_and_Web/the_history_of_the_web/tr';
     $assertions[5][2] = 'out/foo/bar/concepts/Internet_and_Web/the_history_of_the_web/tr.bazz';
     $assertions[6][0] = 'tutorials/Raw WebGL 101 - Part 4: Textures';
     $assertions[6][1] = 'tutorials/Raw_WebGL_101_-_Part_4_Textures';
     $assertions[6][2] = 'out/foo/bar/tutorials/Raw_WebGL_101_-_Part_4_Textures/index.bazz';
     $assertions[7][0] = 'css/selectors/pseudo-classes/:optional';
     $assertions[7][1] = 'css/selectors/pseudo-classes/optional';
     $assertions[7][2] = 'out/foo/bar/css/selectors/pseudo-classes/optional/index.bazz';
     $assertions[8][0] = 'css/selectors/pseudo-classes/:nth-of-type(n)';
     $assertions[8][1] = 'css/selectors/pseudo-classes/nth-of-type';
     $assertions[8][2] = 'out/foo/bar/css/selectors/pseudo-classes/nth-of-type/index.bazz';
     $assertions[9][0] = 'css/selectors/pseudo-classes/:lang(c)';
     $assertions[9][1] = 'css/selectors/pseudo-classes/lang';
     $assertions[9][2] = 'out/foo/bar/css/selectors/pseudo-classes/lang/index.bazz';
     // False positive translated (tr HTML element that happens to conflate with the Turkish language code)
     $assertions[10][0] = 'html/elements/tr';
     $assertions[10][1] = 'html/elements/tr';
     $assertions[10][2] = 'out/foo/bar/html/elements/tr/index.bazz';
     // True positive translated document (Turkish version of the tr HTML element)
     $assertions[11][0] = 'html/elements/tr/tr';
     $assertions[11][1] = 'html/elements/tr/tr';
     $assertions[11][2] = 'out/foo/bar/html/elements/tr/tr.bazz';
     // Please, lets fix those too!!
     $assertions[12][0] = 'html/attributes/align (Table, iframe elements)';
     $assertions[12][1] = 'html/attributes/align_Table_iframe_elements';
     $assertions[12][2] = 'out/foo/bar/html/attributes/align_Table_iframe_elements/index.bazz';
     $mockDocument = '<page>
                 <title>overload me</title>
                 <revision>
                     <id>44</id>
                     <timestamp>2011-08-21T13:21:41Z</timestamp>
                     <contributor>
                         <username>Jdoe</username>
                         <id>42</id>
                     </contributor>
                     <text xml:space="preserve" bytes="20">Use me to overload title element!</text>
                 </revision>
             </page>';
     foreach ($assertions as $assertion) {
         $mock = new SimpleXMLElement($mockDocument);
         $mock->title = $assertion[0];
         // Let’s overload the title for what we want
         $document = new MediaWikiDocument($mock);
         $this->assertSame($assertion[0], $document->getTitle());
         $this->assertSame($assertion[1], $document->getName());
         $file = new GitCommitFileRevision($document, 'out/foo/bar/', '.bazz');
         $this->assertSame($assertion[2], $file->getName());
     }
 }