summaryrefslogtreecommitdiff
path: root/test/ruby/test_path.rb
blob: d13ec66d30a10ca5376513f992dffa64739f2fec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
require 'test/unit'

$KCODE = 'none'

class TestPath < Test::Unit::TestCase
  def test_path
    assert(File.basename("a") == "a")
    assert(File.basename("a/b") == "b")
    assert(File.basename("a/b/") == "b")
    assert(File.basename("/") == "/")
    assert(File.basename("//") == "/")
    assert(File.basename("///") == "/")
    assert(File.basename("a/b////") == "b")
    assert(File.basename("a.rb", ".rb") == "a")
    assert(File.basename("a.rb///", ".rb") == "a")
    assert(File.basename("a.rb///", ".*") == "a")
    assert(File.basename("a.rb///", ".c") == "a.rb")
    assert(File.dirname("a") == ".")
    assert(File.dirname("/") == "/")
    assert(File.dirname("/a") == "/")
    assert(File.dirname("a/b") == "a")
    assert(File.dirname("a/b/c") == "a/b")
    assert(File.dirname("/a/b/c") == "/a/b")
    assert(File.dirname("/a/b/") == "/a")
    assert(File.dirname("/a/b///") == "/a")
    case Dir.pwd
    when %r'\A\w:'
      assert(/\A\w:\/\z/ =~ File.expand_path(".", "/"))
      assert(/\A\w:\/a\z/ =~ File.expand_path("a", "/"))
      dosish = true
    when %r'\A//'
      assert(%r'\A//[^/]+/[^/]+\z' =~ File.expand_path(".", "/"))
      assert(%r'\A//[^/]+/[^/]+/a\z' =~ File.expand_path(".", "/"))
      dosish = true
    else
      assert(File.expand_path(".", "/") == "/")
      assert(File.expand_path("sub", "/") == "/sub")
    end
    if dosish
      assert(File.expand_path("/", "//machine/share/sub") == "//machine/share")
      assert(File.expand_path("/dir", "//machine/share/sub") == "//machine/share/dir")
      assert(File.expand_path("/", "z:/sub") == "z:/")
      assert(File.expand_path("/dir", "z:/sub") == "z:/dir")
    end
    assert(File.expand_path(".", "//") == "//")
    assert(File.expand_path("sub", "//") == "//sub")
  end
end