overrideConfigValue( 'FragmentMode', [ 'html5' ] ); } public function testRefKey() { $formatter = new AnchorFormatter(); $this->assertSame( 'cite_ref-key', $formatter->backLink( 'key', null ) ); $this->assertSame( 'cite_ref-key_2', $formatter->backLink( 'key', '2' ) ); } public function testGetReferencesKey() { $formatter = new AnchorFormatter(); $this->assertSame( 'cite_note-key', $formatter->jumpLink( 'key' ) ); } /** * @dataProvider provideKeyNormalizations */ public function testNormalizeKey( $key, $expected ) { /** @var AnchorFormatter $formatter */ $formatter = TestingAccessWrapper::newFromObject( new AnchorFormatter() ); $normalized = $formatter->normalizeKey( $key ); $encoded = Sanitizer::safeEncodeAttribute( Sanitizer::escapeIdForLink( $normalized ) ); $this->assertSame( $expected, $encoded ); } public static function provideKeyNormalizations() { return [ [ 'a b', 'a_b' ], [ 'a __ b', 'a_b' ], [ ':', ':' ], [ "\t\n", '_' ], [ "'", ''' ], [ "''", '''' ], [ '"%&/<>?[]{|}', '"%&/<>?[]{|}' ], [ 'ISBN', 'ISBN' ], [ 'nature%20phylo', 'nature%2520phylo' ], [ 'Mininova%2E26%2E11%2E2009', 'Mininova%252E26%252E11%252E2009' ], [ '%c8%98tiri_2019', '%25c8%2598tiri_2019' ], [ 'play%21', 'play%2521' ], [ 'Terry+O%26rsquo%3BN…