forked from senchalabs/jsduck
-
Notifications
You must be signed in to change notification settings - Fork 0
/
categories_spec.rb
75 lines (63 loc) · 1.8 KB
/
categories_spec.rb
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
require "jsduck/categories"
describe JsDuck::Categories do
# Small helper to check the sums
def sum(arr)
arr.reduce(0) {|sum,x| sum + x }
end
# Replace the sum method with the one that simply sums the numbers,
# so we can use simpler test-data.
class JsDuck::Categories
def sum(arr)
arr.reduce(0) {|sum,x| sum + x }
end
end
describe "#split" do
before do
@categories = JsDuck::Categories.new([], {}, {})
end
it "split(1 item by 1)" do
@cols = @categories.split([2], 1)
@cols.length.should == 1
sum(@cols[0]).should == 2
end
it "split(3 items by 1)" do
@cols = @categories.split([1, 2, 3], 1)
@cols.length.should == 1
sum(@cols[0]).should == 6
end
it "split(3 items to two equal-height columns)" do
@cols = @categories.split([1, 2, 3], 2)
@cols.length.should == 2
sum(@cols[0]).should == 3
sum(@cols[1]).should == 3
end
it "split(1 item by 3)" do
@cols = @categories.split([2], 3)
@cols.length.should == 3
sum(@cols[0]).should == 2
sum(@cols[1]).should == 0
sum(@cols[2]).should == 0
end
it "split(3 items by 3)" do
@cols = @categories.split([1, 2, 3], 3)
@cols.length.should == 3
sum(@cols[0]).should == 1
sum(@cols[1]).should == 2
sum(@cols[2]).should == 3
end
it "split(6 items by 3)" do
@cols = @categories.split([5, 8, 4, 2, 1, 3], 3)
@cols.length.should == 3
sum(@cols[0]).should <= 10
sum(@cols[1]).should <= 10
sum(@cols[2]).should <= 10
end
it "split(8 items by 3)" do
@cols = @categories.split([1, 3, 5, 2, 1, 4, 2, 3], 3)
@cols.length.should == 3
sum(@cols[0]).should <= 9
sum(@cols[1]).should <= 9
sum(@cols[2]).should <= 9
end
end
end