createDocumentFragment(); $fragment->appendXML( trim( $html ) ); $expected = self::getJson( $expectedPath ); $actual = []; CommentUtils::linearWalk( $fragment, function ( $event, $node ) use ( &$actual ) { $actual[] = "$event {$node->nodeName}({$node->nodeType})"; } ); $actualBackwards = []; CommentUtils::linearWalkBackwards( $fragment, function ( $event, $node ) use ( &$actualBackwards ) { $actualBackwards[] = "$event {$node->nodeName}({$node->nodeType})"; } ); // Optionally write updated content to the JSON files if ( getenv( 'DISCUSSIONTOOLS_OVERWRITE_TESTS' ) ) { self::overwriteJsonFile( $expectedPath, $actual ); } self::assertEquals( $expected, $actual, $name ); $expectedBackwards = array_map( function ( $a ) { return ( substr( $a, 0, 5 ) === 'enter' ? 'leave' : 'enter' ) . substr( $a, 5 ); }, array_reverse( $expected ) ); self::assertEquals( $expectedBackwards, $actualBackwards, $name . ' (backwards)' ); } public function provideLinearWalk() : array { return self::getJson( '../cases/linearWalk.json' ); } }