-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.rb
More file actions
69 lines (53 loc) · 1.59 KB
/
Copy pathtests.rb
File metadata and controls
69 lines (53 loc) · 1.59 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require "./numbers"
require "./booleans"
require "./assert"
#
# Numbers
#
Zero = NumberZero.new
One = Zero.succ
Two = One.succ
Three = Two.succ
Four = Three.succ
Five = Four.succ
Six = Five.succ
puts Assert.new("1 + 1 = 2").check(One + One == Two)
# Multiplication
puts Assert.new("1 * 1 = 1").check(One * One == One)
puts Assert.new("2 * 3 = 6").check(Two * Three == Six)
puts Assert.new("5 * 0 = 0").check(Five * Zero == Zero)
puts Assert.new("0 * 5 = 0").check(Zero * Five == Zero)
# Subtraction
puts Assert.new("5 - 1 = 4").check(Five - One == Four)
puts Assert.new("5 - 0 = 5").check(Five - Zero == Five)
puts Assert.new("5 - 5 = 0").check(Five - Five == Zero)
puts Assert.new("0 - 0 = 0").check(Zero - Zero == Zero)
puts Assert.new("2 - 5 = <LessThanZero>").check(Two - Five == LessThanZero.new)
# Division
puts Assert.new("3 / 1 = 3").check(Three / One == Three)
puts Assert.new("6 / 3 = 2").check(Six / Three == Two)
puts Assert.new("2 / 5 = 0").check(Two / Five == Zero)
#
# Lists
#
require "./list"
list = List.new
list << Six
list << Two
list << Two
list << Three
puts Assert.new("List element 0 is Six").check(list[Zero] == Six)
puts Assert.new("List element 1 is Two").check(list[One] == Two)
puts Assert.new("List element 2 is Two").check(list[Two] == Two)
puts Assert.new("List element 3 is Three").check(list[Three] == Three)
#
# Map
#
require "./map"
map = Map.new
map[One] = Two
map[Two] = Four
map[Three] = Six
puts Assert.new("Map[One] is Two").check(map[One] == Two)
puts Assert.new("Map[Two] is Two").check(map[Two] == Four)
puts Assert.new("Map[Three] is Two").check(map[Three] == Six)