Skip to content

Instantly share code, notes, and snippets.

@adz
Forked from captainpete/library.rb
Created June 3, 2011 03:21
Show Gist options
  • Save adz/1005816 to your computer and use it in GitHub Desktop.
Save adz/1005816 to your computer and use it in GitHub Desktop.
Tom's coding challenge. MiniTest suite
module Library
def self.leaf_paths_of(paths)
paths.select{|path|
!paths.any?{|other|
other.start_with?(path + '/')
}
end
end
require 'minitest/autorun'
require './library'
describe Library do
describe "leaf paths of" do
it "returns a path, if it doesn't have a sub dir in the list" do
Library.leaf_paths_of(["a"]).must_equal ["a"]
end
it "keeps unrelated paths" do
Library.leaf_paths_of(["a", "b"]).must_equal ["a", "b"]
end
it "removes the base path if we have a subdir for it" do
Library.leaf_paths_of(["a", "a/aa"]).must_equal ["a/aa"]
end
it "keeps all sub dirs of the base path" do
Library.leaf_paths_of(["a", "a/aa", "a/ab", "a/ac"]).must_equal ["a/aa", "a/ab", "a/ac"]
end
it "doesn't touch unrelated paths if a base dir is removed" do
Library.leaf_paths_of(["a", "a/aa", "b"]).must_equal ["a/aa", "b"]
end
it "removes all base paths if they all have sub dirs" do
Library.leaf_paths_of(["a", "a/aa", "b", "b/bb"]).must_equal ["a/aa", "b/bb"]
end
it "makes sure we only get leaves" do
Library.leaf_paths_of(["a", "a/aa", "a/aa/aaa"]).must_equal ["a/aa/aaa"]
end
it "leaves similar named subdirs in another base path alone" do
Library.leaf_paths_of(["a", "a/aa", "b", "b/a", "b/aa"]).must_equal ["a/aa", "b/a", "b/aa"]
end
it "keeps similar named subdirs in another base path if nested further" do
Library.leaf_paths_of(["a", "a/aa", "a/aa/aaa", "b", "b/aa"]).must_equal ["a/aa/aaa", "b/aa"]
end
it "handles regular brackets in the path" do
Library.leaf_paths_of(["a", "a/aa (123)"]).must_equal ["a/aa (123)"]
end
it "handles square brackets in the path" do
Library.leaf_paths_of(["a", "a/aa [123]"]).must_equal ["a/aa [123]"]
end
it "handles square brackets with a dash in the path" do
Library.leaf_paths_of(["a", "a/aa [mp3-123-456]"]).must_equal ["a/aa [mp3-123-456]"]
end
end
end
Loaded suite library_spec
Started
............
Finished in 0.000900 seconds.
12 tests, 12 assertions, 0 failures, 0 errors, 0 skips
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment