-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgriddable_array_spec.rb
82 lines (64 loc) · 1.74 KB
/
griddable_array_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
76
77
78
79
80
81
# GriddableArray_spec.rb
require_relative 'griddable_array'
require 'ruby-debug'
describe GriddableArray, '#max_depth' do
it 'returns 1 for unnnested array' do
unnest = GriddableArray.new([1,2,3]);
unnest.max_depth.should eq(1)
end
it 'returns 2 for single nest' do
nest2 = GriddableArray.new([1,[2,3],4]);
nest2.max_depth.should eq(2)
end
it 'returns 4 for 4 deep' do
nest4 = GriddableArray.new([1,[[[2,3],4],5],6]);
nest4.max_depth.should eq(4)
end
end
describe GriddableArray, '#max_width' do
it 'returns count for unnnested array' do
unnest = GriddableArray.new([1,2,3]);
unnest.max_width.should eq(3)
end
it 'returns width of single nest' do
#
# 1 2
# 4 3
nest2 = GriddableArray.new([1,[2,3],4]);
nest2.max_width.should eq(2)
end
it 'returns 2 for 4 deep' do
nest4 = GriddableArray.new([1,[[[2,3],4],5],6]);
#
# 1 2
# 6 5 4 3
nest4.max_width.should eq(2)
end
it 'returns correct for example' do
nest_t = GriddableArray.new(['a', ['a1', ['a1a', ['a1a1', 'a1a2']]],
['a2', ['a2a', 'a2b']] ]);
# a a1 a1a a1a1
# a1a2
# a2 a2a
# a2b
nest_t.max_width.should eq(4)
end
end
describe GriddableArray, '#to_grid' do
it 'returns column for unnnested array' do
unnest = GriddableArray.new([1,2,3]);
unnest.to_grid.should eq([[1],[2],[3]])
end
it 'returns correct for example' do
nest_t = GriddableArray.new(['a', ['a1', ['a1a', ['a1a1', 'a1a2']]],
['a2', ['a2a', 'a2b']] ]);
# a a1 a1a a1a1
# a1a2
# a2 a2a
# a2b
nest_t.to_grid.should eq([ ['a', 'a1', 'a1a', 'a1a1'],
[nil, nil, nil, 'a1a2'],
[nil, 'a2', 'a2a'],
[nil, nil, 'a2b'] ])
end
end