code.oscarkilo.com/klex-git/util/paths_test.go

..
commit.go
commit_test.go
committest/
files.go
files_test.go
paths.go
paths_test.go
root.go
root_test.go
run.go
run_test.go
package util

import (
  "reflect"
  "testing"
)

func TestSplitPath(t *testing.T) {
  ok := func(p string, want []string) {
    got := SplitPath(p)
    if !reflect.DeepEqual(got, want) {
      t.Errorf("SplitPath(%q) = %v; want %v", p, got, want)
    }
  }

  ok("", nil)
  ok("a", []string{"a"})
  ok("a/b", []string{"a", "b"})
  ok("a/b/c", []string{"a", "b", "c"})
}

func TestStripPathPrefix(t *testing.T) {
  ok := func(long, pref, want string) {
    got, found := StripPathPrefix(long, pref)
    if !found {
      t.Errorf("StripPathPrefix(%s, %s) not found", long, pref)
    }
    if got != want {
      t.Errorf("StripPathPrefix(%s, %s) = %s; want %q", long, pref, got, want)
    }
  }
  bad := func(long, pref string) {
    got, found := StripPathPrefix(long, pref)
    if found {
      t.Errorf("StripPathPrefix(%s, %s) = %s; want not found", long, pref, got)
    }
  }

  ok("a/b/c", "", "a/b/c")
  ok("a/b/c", "a", "b/c")
  ok("a/b/c", "a/", "b/c")
  ok("a/b/c", "a/b", "c")
  ok("a/b/c", "a/b/", "c")
  ok("a/b/c", "a/b/c", "")
  ok("a/b/c", "a/b/c/", "")

  bad("a/b/c", "b")
  bad("a/b/c", "a/b/c/d")
  bad("foo/bar/baz", "foo/baz")
  bad("foo/bar/baz", "foo/ba")
  bad("foo/bar/baz", "foo/bart")
}