require 'test/unit' require 'dirtravel' class DirTravelTest < Test::Unit::TestCase require 'fileutils' Dir.chdir 'test' FileUtils.rm_r( 'test' ) if File.exist?( 'test' ) # Create test file hierarchy. FileUtils.mkdir_p 'test/test_0/test_0_0' FileUtils.mkdir_p 'test/test_0/test_0_1' FileUtils.mkdir_p 'test/test_1' [ 'test/test_0/test_0_0/test.xtx', 'test/test_0/test_0_1/test_0.txt', 'test/test_0/test_0_1/test_1.txt', 'test/test_1/test.txt' ].each do |tf| File.open( tf, 'w' ) do |fh| fh.puts tf end end def test_height data = DirTravel::Travel.filetree( 'test' ) assert_equal( 3, data.node_height ) end def test_suffix_selection data = DirTravel::Travel.filetree( 'test', { :suffix => ".txt" } ) data.files.each do |i| assert_match( /.txt$/, i.name ) end end def test_paths data = DirTravel::Travel.filetree( 'test' ) 2.times do assert_equal( 'test/test_0/test_0_1', data.select_level( 2 )[ 0 ].path ) assert_equal( 'test/test_0/test_0_0', data.select_level( 2 )[ 1 ].path ) assert_equal( 'test_0/test_0_1', data.select_level( 2 )[ 0 ].subpath ) assert_equal( 'test_0_1', data.select_level( 2 )[ 0 ].subpath( 2 ) ) assert_equal( 'test/test_0', data.select_level( 2 )[ 0 ].dir ) assert_equal( Dir.pwd + '/test/test_0/test_0_1', data.select_level( 2 )[ 0 ].abspath ) data = DirTravel::Travel.filetree( Dir.pwd + '/test' ) end end def test_stat data = DirTravel::Travel.filetree( 'test' ) file = ( data.select do |i| i.name == 'test.xtx' end )[0] stat = file.stat assert_equal( 30, stat.size ) end def test_sort data = DirTravel::Travel.filetree( 'test' ) assert_equal( 'test/test_0/test_0_1', data.select_level( 2 )[ 0 ].path ) data = DirTravel::Travel.filetree( 'test', { :sort => true } ) assert_equal( 'test/test_0/test_0_0', data.select_level( 2 )[ 0 ].path ) end def test_files data = DirTravel::Travel.filetree( 'test' ) assert_equal( 9, data.length ) data = DirTravel::Travel.filetree( 'test', { :files => false } ) assert_equal( 5, data.length ) end def test_tip_rel target = 'test' data = DirTravel::Travel.filetree( target ) assert_equal( target, data.name ) assert_equal( 'test', data.tip ) end def test_tip_abs pwd = Dir.pwd target = pwd + '/test' data = DirTravel::Travel.filetree( target ) assert_equal( target, data.name ) assert_equal( 'test', data.tip ) end def test_inclusive_rel pwd = 'test' target = pwd + '/test_0' data = DirTravel::Travel.filetree( target, { :inclusive => true } ) assert_equal( pwd, data.name ) assert_equal( Dir.pwd + '/' + pwd, data.abspath ) assert_equal( 'test', data.tip ) assert_equal( 1, data.children.length ) root = data.children[0] assert_equal( 'test_0', root.name ) assert_equal( 'test_0', root.tip ) assert_equal( 'test/test_0', root.path ) end def test_inclusive_rel2 pwd = 'test' target = '../test/' + pwd + '/test_0' data = DirTravel::Travel.filetree( target, { :inclusive => true } ) assert_equal( pwd, data.name ) assert_equal( Dir.pwd + '/' + pwd, data.abspath ) assert_equal( 'test', data.tip ) assert_equal( 1, data.children.length ) root = data.children[0] assert_equal( 'test_0', root.name ) assert_equal( 'test_0', root.tip ) assert_equal( 'test/test_0', root.path ) end def test_inclusive_rel3 pwd = 'test' target = './' + pwd + '/test_0' data = DirTravel::Travel.filetree( target, { :inclusive => true } ) assert_equal( pwd, data.name ) assert_equal( Dir.pwd + '/' + pwd, data.abspath ) assert_equal( 'test', data.tip ) assert_equal( 1, data.children.length ) root = data.children[0] assert_equal( 'test_0', root.name ) assert_equal( 'test_0', root.tip ) assert_equal( 'test/test_0', root.path ) end def test_inclusive_abs pwd = Dir.pwd + '/test' target = pwd + '/test_0' data = DirTravel::Travel.filetree( target, { :inclusive => true } ) assert_equal( pwd, data.name ) assert_equal( 'test', data.tip ) assert_equal( 1, data.children.length ) root = data.children[0] assert_equal( 'test_0', root.name ) assert_equal( 'test_0', root.tip ) assert_equal( 'test/test_0', root.path ) end end