require 'test_helper'
require 'faster_path/optional/refinements'
class RefinedPathname
using FasterPath::RefinePathname
using FasterPath::RefineFile
def cleanpath_aggressive(pth)
Pathname.new(pth).send(:cleanpath_aggressive).to_s
end
end
class CleanpathAggressiveTest < Minitest::Test
def test_clean_aggressive_defaults1
assert_equal RefinedPathname.new.cleanpath_aggressive('/'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive(''), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('.'), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('..'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('a'), 'a'
assert_equal RefinedPathname.new.cleanpath_aggressive('/.'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('/..'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('/a'), '/a'
assert_equal RefinedPathname.new.cleanpath_aggressive('./'), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('../'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/'), 'a'
assert_equal RefinedPathname.new.cleanpath_aggressive('a//b'), 'a/b'
end
def test_clean_aggressive_defaults2
assert_equal RefinedPathname.new.cleanpath_aggressive('a/.'), 'a'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/./'), 'a'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/..'), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/../'), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('/a/.'), '/a'
assert_equal RefinedPathname.new.cleanpath_aggressive('./..'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('../.'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('./../'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('.././'), '..'
assert_equal RefinedPathname.new.cleanpath_aggressive('/./..'), '/'
end
def test_clean_aggressive_defaults3
assert_equal RefinedPathname.new.cleanpath_aggressive('/../.'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('/./../'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('/.././'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/b/c'), 'a/b/c'
assert_equal RefinedPathname.new.cleanpath_aggressive('./b/c'), 'b/c'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/./c'), 'a/c'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/b/.'), 'a/b'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/../.'), '.'
assert_equal RefinedPathname.new.cleanpath_aggressive('/../.././../a'), '/a'
assert_equal RefinedPathname.new.cleanpath_aggressive('a/b/../../../../c/../d'), '../../d'
end
def test_clean_aggressive_dosish_stuff
if File.dirname("//") == "//" assert_equal RefinedPathname.new.cleanpath_aggressive('//a/b/c/'), '//a/b/c'
else
assert_equal RefinedPathname.new.cleanpath_aggressive('///'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('///a'), '/a'
assert_equal RefinedPathname.new.cleanpath_aggressive('///..'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('///.'), '/'
assert_equal RefinedPathname.new.cleanpath_aggressive('///a/../..'), '/'
end
if !File::ALT_SEPARATOR.nil? assert_equal RefinedPathname.new.cleanpath_aggressive('c:\\foo\\bar'), 'c:/foo/bar'
end
end
end