mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
9cadc95b28
* lib/rake: Update to rake 10.1.0 * bin/rake: ditto. * test/rake: ditto. * NEWS: Update NEWS to include rake 10.1.0 and links to release notes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
84 lines
2.2 KiB
Ruby
84 lines
2.2 KiB
Ruby
require File.expand_path('../helper', __FILE__)
|
|
|
|
class TestLinkedList < Rake::TestCase
|
|
include Rake
|
|
|
|
def test_empty_list
|
|
empty = LinkedList::EMPTY
|
|
assert empty.empty?, "should be empty"
|
|
end
|
|
|
|
def test_list_with_one_item
|
|
list = LinkedList.make(:one)
|
|
assert ! list.empty?, "should not be empty"
|
|
assert_equal :one, list.head
|
|
assert_equal LinkedList::EMPTY, list.tail
|
|
end
|
|
|
|
def test_make_with_no_arguments
|
|
empty = LinkedList.make()
|
|
assert_equal LinkedList::EMPTY, empty
|
|
end
|
|
|
|
def test_make_with_one_argument
|
|
list = LinkedList.make(:one)
|
|
assert ! list.empty?
|
|
assert_equal :one, list.head
|
|
assert_equal LinkedList::EMPTY, list.tail
|
|
end
|
|
|
|
def test_make_with_two_arguments
|
|
list = LinkedList.make(:one, :two)
|
|
assert ! list.empty?
|
|
assert_equal :one, list.head
|
|
assert_equal :two, list.tail.head
|
|
assert_equal LinkedList::EMPTY, list.tail.tail
|
|
end
|
|
|
|
def test_list_with_several_items
|
|
list = LinkedList.make(:one, :two, :three)
|
|
|
|
assert ! list.empty?, "should not be empty"
|
|
assert_equal :one, list.head
|
|
assert_equal :two, list.tail.head
|
|
assert_equal :three, list.tail.tail.head
|
|
assert_equal LinkedList::EMPTY, list.tail.tail.tail
|
|
end
|
|
|
|
def test_lists_are_structurally_equivalent
|
|
list = LinkedList.make(1, 2, 3)
|
|
same = LinkedList.make(1, 2, 3)
|
|
diff = LinkedList.make(1, 2, 4)
|
|
short = LinkedList.make(1, 2)
|
|
|
|
assert_equal list, same
|
|
refute_equal list, diff
|
|
refute_equal list, short
|
|
refute_equal short, list
|
|
end
|
|
|
|
def test_converstion_to_string
|
|
list = LinkedList.make(:one, :two, :three)
|
|
assert_equal "LL(one, two, three)", list.to_s
|
|
assert_equal "LL()", LinkedList.make().to_s
|
|
end
|
|
|
|
def test_converstion_with_inspect
|
|
list = LinkedList.make(:one, :two, :three)
|
|
assert_equal "LL(:one, :two, :three)", list.inspect
|
|
assert_equal "LL()", LinkedList.make().inspect
|
|
end
|
|
|
|
def test_lists_are_enumerable
|
|
list = LinkedList.make(1, 2, 3)
|
|
new_list = list.map { |item| item + 10 }
|
|
expected = [11, 12, 13]
|
|
assert_equal expected, new_list
|
|
end
|
|
|
|
def test_conjunction
|
|
list = LinkedList.make.conj("C").conj("B").conj("A")
|
|
assert_equal LinkedList.make("A", "B", "C"), list
|
|
end
|
|
|
|
end
|