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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
def assert(name, &block)
@_tests ||= {}
@_tests[name] = block
end
def with_unbox(a, &block)
case [a.class]
when [M::Left], [M::Right] then
a.map(&block).get_or_else(false)
else
yield(a)
end
end
def assert_equal(a, b)
raise "Expected #{a} to equal #{b}" unless with_unbox(a) {|v| v == b}
end
def assert_class(a, klass)
raise "Expected #{a} to be of class #{klass}" \
unless with_unbox(a) {|v| v.class == klass}
end
def assert_include(a, b)
raise "Expected:\n#{a}\nto include\n#{b}\n" \
unless with_unbox(a) { |v| v.include?(b) }
end
def ok(s)
"\e[32m#{s}\e[0m"
end
def ko(s)
"\e[31m#{s}\e[0m"
end
def run
puts "\n\nRunning test suite..."
failed = false
@_tests.each do |name, block|
print name
begin
block.call
puts ok(" ~ ok")
rescue => e
puts ko(" ~ fail")
puts "\n"
puts e.inspect
puts "\n"
e.backtrace.map { |x| puts x }
failed = true
break
end
end
puts "\n done! All tests pass!\n\n" unless failed
M.commandv "quit", 'asd'
end
assert ".property_list returns an array" do
assert_class(M.get_property('property-list').get!, Array)
assert_class(M.get_property('property-list'), Array)
end
assert ".property_list contains options" do
assert_include(M.get_property('property-list'), "mute")
end
assert ".get_property returns proper values" do
assert_class(M.get_property("working-directory"), String)
assert_class(M.get_property("volume"), Float)
assert_class(M.get_property("osd-width"), Fixnum)
assert_class(M.get_property("vf"), Array)
assert_equal(M.get_property("mute"), false)
end
assert ".set_property works on complex types" do
assert_equal(M.get_property("vf"), [])
M.set_property("vf", [{ name: "crop", params: { w: "400", h: "400" }}])
assert_equal(M.get_property("vf"), [{
"name" => "crop",
"enabled" => true,
"params" => { "w" => "400", "h" => "400" }
}])
end
run
|