is_deeply($r->reset()->add($str)->__path, ['a', 'b', 'l+', 'X', 'y', 'z', '\\+'], "add {$str}"); $str = '\\Q^a[b['; is_deeply($r->reset()->add($str)->__path, ['\\^', 'a', '\\[', 'b', '\\['], "add {$str}"); //} //{ // my $path; $path = []; is_deeply($path, $rt->_path_copy($path), '_path_copy([])'); $path = ['0', 'ab cd ef']; is_deeply($path, $rt->_path_copy($path), '_path_copy(0 ab cd ef)'); //PHPなので判別できない // $path = {}; // is_deeply( $path, $rt->_node_copy($path), // '_node_copy({})' ); $path = ['a' => ['a bb ccc'], 'b' => ['b cc ddd']]; is_deeply($path, $rt->_node_copy($path), '_node_copy({a,b})'); $path = [['c' => ['c', 'd'], 'e' => ['e', 'f']], 't', ['d' => ['d', 'f'], 'b' => ['b', 0]], ['' => 0, 'a' => ['a']]]; is_deeply($path, $rt->_path_copy($path), '_path_copy({c,e} t {d,b} {* a}'); $path = [[0, 1, 2], ['a', 'b', 'c'], ['d', ['e' => ['e', 'f'], 'g' => ['g', 'h']]]]; is_deeply($path, $rt->_path_copy($path), '_path_copy(ab cd ef {* a})'); //} is_deeply($rt->__path, [], 'path is empty'); $context = ['debug' => 0, 'depth' => 0]; is_deeply($rt->_unrev_path([0, 1], $context), [1, 0], 'path(0,1)'); is_deeply($rt->_unrev_path(['ab', 'cd', 'ef'], $context), ['ef', 'cd', 'ab'], 'path(ab,cd,ef)'); is_deeply($rt->_unrev_path($rt->_unrev_path([['ab', 'cd', 'ef']], $context), $context), [['ab', 'cd', 'ef']], 'path(ab,cd,ef) back'); is_deeply($rt->_unrev_path(['ab', 'cd', 'ef', '\\d+', '\\D', 'ghi', 'jkl', 'mno'], $context), ['mno', 'jkl', 'ghi', '\\D', '\\d+', 'ef', 'cd', 'ab'], 'path(ab cd...)'); is_deeply($rt->_unrev_path($rt->_unrev_path(['ab', 'cd', 'ef', '\\d+', '\\D', 'ghi', 'jkl', 'mno'], $context), $context), ['ab', 'cd', 'ef', '\\d+', '\\D', 'ghi', 'jkl', 'mno'], 'path(ab cd...) back'); is_deeply($rt->_unrev_node([0 => [0, 1]], $context), [1 => [1, 0]], 'node(0)'); is_deeply($rt->_unrev_node([0 => [0, 1], 2 => [2, 0]], $context), [1 => [1, 0], 0 => [0, 2]], 'node(0,2)'); is_deeply($rt->_unrev_node(['' => 0, 'a' => ['a', 'b']], $context), ['' => 0, 'b' => ['b', 'a']], 'node(*,a,b)');