1*4f582736SGuillaume Turri<?php 2*4f582736SGuillaume Turri 3*4f582736SGuillaume Turriclass sectionid_test extends Dokuwikitest 4*4f582736SGuillaume Turri{ 5*4f582736SGuillaume Turri /** 6*4f582736SGuillaume Turri * DataProvider 7*4f582736SGuillaume Turri * 8*4f582736SGuillaume Turri * @return Generator|array 9*4f582736SGuillaume Turri * @see testSectionidsAreUnique 10*4f582736SGuillaume Turri */ 11*4f582736SGuillaume Turri public function provideTestData(){ 12*4f582736SGuillaume Turri // Each test case represents a sequence of sections title 13*4f582736SGuillaume Turri return [ 14*4f582736SGuillaume Turri [['A', 'A', 'A1']], 15*4f582736SGuillaume Turri [['A', 'A1', 'A']] 16*4f582736SGuillaume Turri ]; 17*4f582736SGuillaume Turri } 18*4f582736SGuillaume Turri 19*4f582736SGuillaume Turri /** 20*4f582736SGuillaume Turri * @dataProvider provideTestData 21*4f582736SGuillaume Turri * @param array $titles 22*4f582736SGuillaume Turri */ 23*4f582736SGuillaume Turri function testSectionidsAreUnique($titles) 24*4f582736SGuillaume Turri { 25*4f582736SGuillaume Turri $check = array(); 26*4f582736SGuillaume Turri $alreadyGeneratedIds = array(); 27*4f582736SGuillaume Turri foreach($titles as $title){ 28*4f582736SGuillaume Turri $newId = sectionID($title, $check); 29*4f582736SGuillaume Turri $this->assertNotContains($newId, $alreadyGeneratedIds, "id $newId has been generated twice. The 2nd time it was for the title $title"); 30*4f582736SGuillaume Turri $alreadyGeneratedIds []= $newId; 31*4f582736SGuillaume Turri } 32*4f582736SGuillaume Turri } 33*4f582736SGuillaume Turri 34*4f582736SGuillaume Turri /** 35*4f582736SGuillaume Turri * The convention in the code is to pass $check=false when we're not interested in having 36*4f582736SGuillaume Turri * unique sectionID. This test ensures that this type of call is correctly handled 37*4f582736SGuillaume Turri */ 38*4f582736SGuillaume Turri function testSectionIDCanBeCalledWithNonArrayCheck(){ 39*4f582736SGuillaume Turri $check = false; 40*4f582736SGuillaume Turri $this->assertEquals("abc", sectionID("abc", $check), "Passing \$check=false shouldn't lead to an error"); 41*4f582736SGuillaume Turri $this->assertEquals("abc", sectionID("abc", $check), "Passing \$check=false shouldn't try to deduplicate id"); 42*4f582736SGuillaume Turri } 43*4f582736SGuillaume Turri} 44