uh-layout 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/uh/layout/version.rb +1 -1
- metadata +1 -23
- data/.gitignore +0 -3
- data/.rspec +0 -1
- data/.travis.yml +0 -17
- data/Gemfile +0 -5
- data/Guardfile +0 -6
- data/LICENSE +0 -30
- data/README.md +0 -18
- data/Rakefile +0 -5
- data/spec/spec_helper.rb +0 -16
- data/spec/support/factories.rb +0 -23
- data/spec/uh/layout/arrangers/fixed_width_spec.rb +0 -72
- data/spec/uh/layout/arrangers/stack_spec.rb +0 -42
- data/spec/uh/layout/arrangers/vert_tile_spec.rb +0 -49
- data/spec/uh/layout/client_column_mover_spec.rb +0 -96
- data/spec/uh/layout/column_spec.rb +0 -137
- data/spec/uh/layout/container_spec.rb +0 -194
- data/spec/uh/layout/history_spec.rb +0 -32
- data/spec/uh/layout/registrant_spec.rb +0 -46
- data/spec/uh/layout/screen_spec.rb +0 -40
- data/spec/uh/layout/tag_spec.rb +0 -91
- data/spec/uh/layout_spec.rb +0 -485
- data/uh-layout.gemspec +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 586dbaf6dde99169879ab4e52b8f9b5553aeb5cf
|
4
|
+
data.tar.gz: f029cc9a50ce9848c20fe22f54bf6e7c5e4f846a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05c787214555dcea902301c0b720e2e6681080ed923881b688fd9eaf90bfc7cfaae2f3348e94efe0f2e07735df5788389be2c8b9ba635253f3fe8da5817ac7c3
|
7
|
+
data.tar.gz: ddbece19dfd6d6379bdff86426ec662871ea4521c84b07f9e2c0377d713b52cac2e2b34c075891b57c4b17e1a9c097efa9574bb61a8316cdd8d1c823ee03611d
|
data/lib/uh/layout/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uh-layout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibault Jouan
|
@@ -58,14 +58,6 @@ executables: []
|
|
58
58
|
extensions: []
|
59
59
|
extra_rdoc_files: []
|
60
60
|
files:
|
61
|
-
- ".gitignore"
|
62
|
-
- ".rspec"
|
63
|
-
- ".travis.yml"
|
64
|
-
- Gemfile
|
65
|
-
- Guardfile
|
66
|
-
- LICENSE
|
67
|
-
- README.md
|
68
|
-
- Rakefile
|
69
61
|
- lib/uh/layout.rb
|
70
62
|
- lib/uh/layout/arrangers/fixed_width.rb
|
71
63
|
- lib/uh/layout/arrangers/stack.rb
|
@@ -80,20 +72,6 @@ files:
|
|
80
72
|
- lib/uh/layout/screen.rb
|
81
73
|
- lib/uh/layout/tag.rb
|
82
74
|
- lib/uh/layout/version.rb
|
83
|
-
- spec/spec_helper.rb
|
84
|
-
- spec/support/factories.rb
|
85
|
-
- spec/uh/layout/arrangers/fixed_width_spec.rb
|
86
|
-
- spec/uh/layout/arrangers/stack_spec.rb
|
87
|
-
- spec/uh/layout/arrangers/vert_tile_spec.rb
|
88
|
-
- spec/uh/layout/client_column_mover_spec.rb
|
89
|
-
- spec/uh/layout/column_spec.rb
|
90
|
-
- spec/uh/layout/container_spec.rb
|
91
|
-
- spec/uh/layout/history_spec.rb
|
92
|
-
- spec/uh/layout/registrant_spec.rb
|
93
|
-
- spec/uh/layout/screen_spec.rb
|
94
|
-
- spec/uh/layout/tag_spec.rb
|
95
|
-
- spec/uh/layout_spec.rb
|
96
|
-
- uh-layout.gemspec
|
97
75
|
homepage: https://rubygems.org/gems/uh-layout
|
98
76
|
licenses:
|
99
77
|
- BSD-3-Clause
|
data/.gitignore
DELETED
data/.rspec
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
--require spec_helper
|
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Guardfile
DELETED
data/LICENSE
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
Copyright 2014 Thibault Jouan. All rights reserved.
|
2
|
-
|
3
|
-
Redistribution and use in source and binary forms, with or without
|
4
|
-
modification, are permitted provided that the following conditions are
|
5
|
-
met:
|
6
|
-
|
7
|
-
* Redistributions of source code must retain the above copyright
|
8
|
-
notice, this list of conditions and the following disclaimer.
|
9
|
-
|
10
|
-
* Redistributions in binary form must reproduce the above copyright
|
11
|
-
notice, this list of conditions and the following disclaimer in
|
12
|
-
the documentation and/or other materials provided with the
|
13
|
-
distribution.
|
14
|
-
|
15
|
-
* Neither the name of the software nor the names of its contributors
|
16
|
-
may be used to endorse or promote products derived from this
|
17
|
-
software without specific prior written permission.
|
18
|
-
|
19
|
-
|
20
|
-
THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS "AS IS" AND
|
21
|
-
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
22
|
-
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
23
|
-
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS
|
24
|
-
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
25
|
-
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
26
|
-
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
27
|
-
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
28
|
-
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
29
|
-
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
30
|
-
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
uh-layout
|
2
|
-
=========
|
3
|
-
|
4
|
-
[![Version ][badge-version-img]][badge-version-uri]
|
5
|
-
[![Build status ][badge-build-img]][badge-build-uri]
|
6
|
-
[![Code Climate ][badge-cclimate-img]][badge-cclimate-uri]
|
7
|
-
|
8
|
-
|
9
|
-
Tiling and stacking layout for `uh-wm` ruby gem.
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
[badge-version-img]: https://img.shields.io/gem/v/uh-layout.svg?style=flat-square
|
14
|
-
[badge-version-uri]: https://rubygems.org/gems/uh-layout
|
15
|
-
[badge-build-img]: https://img.shields.io/travis/tjouan/uh-layout/master.svg?style=flat-square
|
16
|
-
[badge-build-uri]: https://travis-ci.org/tjouan/uh-layout
|
17
|
-
[badge-cclimate-img]: https://img.shields.io/codeclimate/github/tjouan/uh-layout.svg?style=flat-square
|
18
|
-
[badge-cclimate-uri]: https://codeclimate.com/github/tjouan/uh-layout
|
data/Rakefile
DELETED
data/spec/spec_helper.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'uh'
|
2
|
-
require 'uh/wm'
|
3
|
-
require 'uh/layout'
|
4
|
-
|
5
|
-
Dir['spec/support/**/*.rb'].map { |e| require e.gsub 'spec/', '' }
|
6
|
-
|
7
|
-
RSpec::Matchers.define_negated_matcher :not_be, :be
|
8
|
-
|
9
|
-
RSpec.configure do |config|
|
10
|
-
config.include Factories
|
11
|
-
|
12
|
-
config.mock_with :rspec do |mocks|
|
13
|
-
mocks.verify_doubled_constant_names = true
|
14
|
-
mocks.verify_partial_doubles = true
|
15
|
-
end
|
16
|
-
end
|
data/spec/support/factories.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Factories
|
2
|
-
class Entry
|
3
|
-
include Uh::GeoAccessors
|
4
|
-
|
5
|
-
attr_accessor :geo
|
6
|
-
|
7
|
-
def initialize(geo)
|
8
|
-
@geo = geo
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def build_client
|
13
|
-
Uh::WM::Client.new(instance_spy Uh::Window)
|
14
|
-
end
|
15
|
-
|
16
|
-
def build_entry(geo = build_geo)
|
17
|
-
Entry.new(geo)
|
18
|
-
end
|
19
|
-
|
20
|
-
def build_geo(x = 0, y = 0, width = 640, height = 480)
|
21
|
-
Uh::Geo.new(x, y, width, height)
|
22
|
-
end
|
23
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
module Uh
|
2
|
-
class Layout
|
3
|
-
module Arrangers
|
4
|
-
describe FixedWidth do
|
5
|
-
let(:geo) { build_geo 20, 0, 640, 480 }
|
6
|
-
let(:entry) { build_entry }
|
7
|
-
let(:entries) { Container.new([entry, build_entry]) }
|
8
|
-
subject(:arranger) { described_class.new entries, geo, width: 300 }
|
9
|
-
|
10
|
-
describe '#arrange' do
|
11
|
-
it 'decreases first entry width as the optimal width' do
|
12
|
-
arranger.arrange
|
13
|
-
expect(entries[0].width).to eq 300
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'offsets entries with given geo' do
|
17
|
-
arranger.arrange
|
18
|
-
expect(entries[0].x).to eq 20
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'moves second entry aside the first entry' do
|
22
|
-
arranger.arrange
|
23
|
-
expect(entries[1].x).to eq 320
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'increases last entry width to occupy remaining width' do
|
27
|
-
arranger.arrange
|
28
|
-
expect(entries[1].width).to eq 340
|
29
|
-
end
|
30
|
-
|
31
|
-
it 'copies given geo y' do
|
32
|
-
entries[0].y = nil
|
33
|
-
arranger.arrange
|
34
|
-
expect(entries[0].y).to eq 0
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'copies given geo height' do
|
38
|
-
entries[0].height = nil
|
39
|
-
arranger.arrange
|
40
|
-
expect(entries[0].height).to eq 480
|
41
|
-
end
|
42
|
-
|
43
|
-
context 'without entry' do
|
44
|
-
let(:entries) { Container.new([]) }
|
45
|
-
|
46
|
-
it 'does not raise any error' do
|
47
|
-
expect { arranger.arrange }.not_to raise_error
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe '#max_count?' do
|
53
|
-
context 'when a new entry fits in current geo' do
|
54
|
-
let(:entries) { Container.new([entry]) }
|
55
|
-
|
56
|
-
it 'returns false' do
|
57
|
-
expect(arranger.max_count?).to be false
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'when current geo can not contain more entry' do
|
62
|
-
let(:entries) { Container.new([entry, entry.dup]) }
|
63
|
-
|
64
|
-
it 'returns true' do
|
65
|
-
expect(arranger.max_count?).to be true
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Uh
|
2
|
-
class Layout
|
3
|
-
module Arrangers
|
4
|
-
describe Stack do
|
5
|
-
let(:entry) { build_entry }
|
6
|
-
let(:other_entry) { build_entry }
|
7
|
-
let(:entries) { Container.new([entry, other_entry]) }
|
8
|
-
let(:geo) { build_geo 0, 0, 300, 480 }
|
9
|
-
subject(:arranger) { described_class.new entries, geo }
|
10
|
-
|
11
|
-
describe '#arrange' do
|
12
|
-
it 'sets given geo on all entries' do
|
13
|
-
arranger.arrange
|
14
|
-
expect(entries.map(&:geo)).to all eq geo
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#each_visible' do
|
19
|
-
it 'yields current entry' do
|
20
|
-
expect { |b| arranger.each_visible &b }
|
21
|
-
.to yield_successive_args entry
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'with no current entry' do
|
25
|
-
let(:entries) { Container.new([]) }
|
26
|
-
|
27
|
-
it 'does not yield' do
|
28
|
-
expect { |b| arranger.each_visible &b }.not_to yield_control
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#each_hidden' do
|
34
|
-
it 'yields all entries except current one' do
|
35
|
-
expect { |b| arranger.each_hidden &b }
|
36
|
-
.to yield_successive_args other_entry
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
module Uh
|
2
|
-
class Layout
|
3
|
-
module Arrangers
|
4
|
-
describe VertTile do
|
5
|
-
let(:entry) { build_entry }
|
6
|
-
let(:other_entry) { build_entry }
|
7
|
-
let(:entries) { Container.new([entry, other_entry]) }
|
8
|
-
let(:geo) { build_geo 0, 0, 300, 480 }
|
9
|
-
subject(:arranger) { described_class.new entries, geo }
|
10
|
-
|
11
|
-
describe '#arrange' do
|
12
|
-
it 'sets x offset from given geo on all entries' do
|
13
|
-
arranger.arrange
|
14
|
-
expect(entries.map(&:x)).to all eq 0
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'sets width from given geo on all entries' do
|
18
|
-
arranger.arrange
|
19
|
-
expect(entries.map(&:width)).to all eq 300
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'splits entries height equally' do
|
23
|
-
arranger.arrange
|
24
|
-
expect(entries.map(&:height)).to all eq 239
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'adds a margin between entries' do
|
28
|
-
arranger.arrange
|
29
|
-
expect(entries[1].y - entries[0].height - entries[0].y).to eq 1
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#each_visible' do
|
34
|
-
it 'yields all entries' do
|
35
|
-
expect { |b| arranger.each_visible &b }
|
36
|
-
.to yield_successive_args entry, other_entry
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#each_hidden' do
|
41
|
-
it 'yields no entry' do
|
42
|
-
expect { |b| arranger.each_hidden &b }.not_to yield_control
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
@@ -1,96 +0,0 @@
|
|
1
|
-
module Uh
|
2
|
-
class Layout
|
3
|
-
describe ClientColumnMover do
|
4
|
-
let(:client) { build_client }
|
5
|
-
let(:column) { Column.new(build_geo) }
|
6
|
-
let(:columns) { Container.new([column]) }
|
7
|
-
let(:columns_max_count) { false }
|
8
|
-
subject(:mover) { described_class.new columns, columns_max_count }
|
9
|
-
|
10
|
-
describe '#move_current' do
|
11
|
-
shared_examples 'moves current client' do |expected_column_index|
|
12
|
-
it 'removes current client from origin column' do
|
13
|
-
mover.move_current :succ
|
14
|
-
expect(column).not_to include client
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'adds current client in the destination column' do
|
18
|
-
mover.move_current :succ
|
19
|
-
expect(columns[expected_column_index]).to include client
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'updates destination column as the current one' do
|
23
|
-
mover.move_current :succ
|
24
|
-
expect(columns.current).to be columns[expected_column_index]
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'preserves current client as the current one' do
|
28
|
-
expect { mover.move_current :succ }
|
29
|
-
.not_to change { columns.current.current_client }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'given one column with one client' do
|
34
|
-
before { column << client }
|
35
|
-
|
36
|
-
include_examples 'moves current client', 1
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'given one column with many clients' do
|
40
|
-
before { column << client << client.dup }
|
41
|
-
|
42
|
-
include_examples 'moves current client', 1
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'given two columns' do
|
46
|
-
let(:columns) { Container.new([column, Column.new(build_geo)]) }
|
47
|
-
|
48
|
-
before { columns[1] << client.dup }
|
49
|
-
|
50
|
-
context 'when origin column has many clients' do
|
51
|
-
before { column << client << client.dup }
|
52
|
-
|
53
|
-
include_examples 'moves current client', 1
|
54
|
-
end
|
55
|
-
|
56
|
-
context 'when origin column has one client' do
|
57
|
-
before { column << client }
|
58
|
-
|
59
|
-
include_examples 'moves current client', 1
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe '#get_or_create_column' do
|
65
|
-
let(:columns) { Container.new([column, Column.new(build_geo)]) }
|
66
|
-
|
67
|
-
it 'returns the consecutive column in given direction' do
|
68
|
-
expect(mover.get_or_create_column :succ).to be columns[1]
|
69
|
-
end
|
70
|
-
|
71
|
-
context 'when current column is last in given direction' do
|
72
|
-
before { columns.current = columns[1] }
|
73
|
-
|
74
|
-
context 'when max columns count is not reached' do
|
75
|
-
it 'appends a new column' do
|
76
|
-
expect(mover.get_or_create_column :succ).to be columns[2]
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'prepends a new column' do
|
80
|
-
columns.current = columns[0]
|
81
|
-
expect(mover.get_or_create_column :pred).to be columns[0]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context 'when max columns count is reached' do
|
86
|
-
let(:columns_max_count) { true }
|
87
|
-
|
88
|
-
it 'returns the consecutive column in given direction' do
|
89
|
-
expect(mover.get_or_create_column :succ).to be columns[0]
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
@@ -1,137 +0,0 @@
|
|
1
|
-
module Uh
|
2
|
-
class Layout
|
3
|
-
describe Column do
|
4
|
-
let(:geo) { build_geo }
|
5
|
-
let(:other_geo) { build_geo 640, 0, 320, 240 }
|
6
|
-
let(:mode) { :stack }
|
7
|
-
let(:client) { build_client }
|
8
|
-
let(:other_client) { build_client }
|
9
|
-
subject(:column) { described_class.new geo, mode: mode }
|
10
|
-
|
11
|
-
it 'has a copy to given geo' do
|
12
|
-
expect(column.geo).to eq(geo).and not_be geo
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'has no client assigned' do
|
16
|
-
expect(column).to be_empty
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'has :stack as default mode' do
|
20
|
-
expect(column.mode).to be :stack
|
21
|
-
end
|
22
|
-
|
23
|
-
describe '#<<' do
|
24
|
-
before { column << client }
|
25
|
-
|
26
|
-
it 'adds given client' do
|
27
|
-
expect(column.clients).to include client
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'adds given client after current one' do
|
31
|
-
column << other_client
|
32
|
-
column.current_client = client
|
33
|
-
column << new_client = build_client
|
34
|
-
expect(column.clients.to_a).to eq [client, new_client, other_client]
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'assigns column geo copy to given client' do
|
38
|
-
expect(client.geo).to eq(column.geo).and not_be column.geo
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'returns self' do
|
42
|
-
expect(column << client).to be column
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe '#mode_toggle' do
|
47
|
-
it 'toggles mode from stack to tile' do
|
48
|
-
expect { column.mode_toggle }
|
49
|
-
.to change { column.mode }.from(:stack).to(:tile)
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'toggles mode from tile to stack' do
|
53
|
-
column.mode_toggle
|
54
|
-
expect { column.mode_toggle }
|
55
|
-
.to change { column.mode }.from(:tile).to(:stack)
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
describe '#arranger' do
|
61
|
-
context 'when column mode is stack' do
|
62
|
-
it 'returns a stack arranger' do
|
63
|
-
expect(column.arranger).to be_an Arrangers::Stack
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context 'when column mode is tile' do
|
68
|
-
it 'returns a vertical tile arranger' do
|
69
|
-
column.mode_toggle
|
70
|
-
expect(column.arranger).to be_an Arrangers::VertTile
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
describe '#client_swap' do
|
76
|
-
before { column << client << other_client }
|
77
|
-
|
78
|
-
it 'sends #set message to clients with given direction' do
|
79
|
-
expect(column.clients).to receive(:set).with :pred
|
80
|
-
column.client_swap :pred
|
81
|
-
end
|
82
|
-
|
83
|
-
context 'when column mode is tile' do
|
84
|
-
let(:mode) { :tile }
|
85
|
-
|
86
|
-
it 'arranges current column clients' do
|
87
|
-
expect(column).to receive :arrange_clients
|
88
|
-
column.client_swap :pred
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'shows and hides clients in current column' do
|
92
|
-
expect(column).to receive :show_hide_clients
|
93
|
-
column.client_swap :pred
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
describe '#arrange_clients' do
|
99
|
-
before { column << client << other_client }
|
100
|
-
|
101
|
-
it 'arranges clients' do
|
102
|
-
arranger = instance_spy Arrangers::Stack
|
103
|
-
allow(column).to receive(:arranger) { arranger }
|
104
|
-
expect(arranger).to receive :arrange
|
105
|
-
column.arrange_clients
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'moveresizes clients' do
|
109
|
-
expect([client, other_client]).to all receive :moveresize
|
110
|
-
column.arrange_clients
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
describe '#show_hide_clients' do
|
115
|
-
let(:arranger) { double 'arranger', each_visible: nil, each_hidden: nil }
|
116
|
-
|
117
|
-
it 'shows visible clients when they are hidden' do
|
118
|
-
allow(arranger).to receive(:each_visible)
|
119
|
-
.and_yield(client.hide)
|
120
|
-
.and_yield(other_client.show)
|
121
|
-
expect(client).to receive :show
|
122
|
-
expect(other_client).not_to receive :show
|
123
|
-
column.show_hide_clients arranger: arranger
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'hides hidden clients except those already hidden' do
|
127
|
-
allow(arranger).to receive(:each_hidden)
|
128
|
-
.and_yield(client.show)
|
129
|
-
.and_yield(other_client.hide)
|
130
|
-
expect(client).to receive :hide
|
131
|
-
expect(other_client).not_to receive :hide
|
132
|
-
column.show_hide_clients arranger: arranger
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|