qtext 0.6.8 → 0.6.9
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 +7 -0
- data/History.txt +5 -1
- data/README.txt +4 -3
- data/Rakefile +0 -1
- data/lib/qtext/action_builder.rb +3 -3
- data/lib/qtext/version.rb +1 -1
- data/test/test_key_event.rb +29 -29
- data/test/test_model_index_extensions.rb +12 -12
- data/test/test_object_table.rb +86 -85
- data/test/test_widget.rb +104 -104
- metadata +81 -79
- data/website/index.html +0 -11
- data/website/index.txt +0 -83
- data/website/javascripts/rounded_corners_lite.inc.js +0 -285
- data/website/stylesheets/screen.css +0 -138
- data/website/template.html.erb +0 -48
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dfe64329c4fb2c401403072b0eae2ad28a336c77
|
4
|
+
data.tar.gz: a1bf928c812c6694b2968fe59525825c1bf4a90c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3c453b9747d5dcc88d4e7f47042ac0a370d08f47d19fb7c635f31e464ab578195a74c474ab6121fff2963cc239e425ce90a083e653e87c8a45c6318854ce3f7d
|
7
|
+
data.tar.gz: 55acf85c952e78c40aba1c8cb6b9efc0a0916391fde0dfa96d97ffd6e03dc15f490e60f86cf8b10288462205e543fd7e165658ff643e01b53157028bf17d8d70
|
data/History.txt
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 0.6.9
|
2
|
+
* fix error in ActionBuilder.included
|
3
|
+
* tests broken
|
4
|
+
|
1
5
|
== 0.6.8
|
2
6
|
* Remove Hoe dependency
|
3
7
|
* Update gather dependency
|
@@ -21,7 +25,7 @@
|
|
21
25
|
== 0.6.0
|
22
26
|
* add Qt::Widget.signal class method which adds some signal emitting and
|
23
27
|
handling methods.
|
24
|
-
* remove Qt::Widget.construct and construct_exec because they're already part
|
28
|
+
* remove Qt::Widget.construct and construct_exec because they're already part
|
25
29
|
of Qt::Widget.new
|
26
30
|
* Documentation
|
27
31
|
* Some testing
|
data/README.txt
CHANGED
@@ -4,7 +4,7 @@ http://rubyforge.org/projects/qtext
|
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
Some extensions to
|
7
|
+
Some extensions to qtruby to make it more rubyish.
|
8
8
|
|
9
9
|
== FEATURES
|
10
10
|
- ActionBuilder module to simplify creating Action objects for inclusion into menus.
|
@@ -18,13 +18,14 @@ Some extensions to qt4-qtruby to make it more rubyish.
|
|
18
18
|
|
19
19
|
== SYNOPSIS:
|
20
20
|
|
21
|
-
require 'qtext'
|
21
|
+
require 'qtext'
|
22
22
|
|
23
23
|
== REQUIREMENTS:
|
24
24
|
|
25
25
|
- qtruby4
|
26
26
|
- Shoulda if you want to run tests
|
27
|
-
-
|
27
|
+
- something that supplies String#humanize (activesupport or sequel)
|
28
|
+
|
28
29
|
== INSTALL:
|
29
30
|
|
30
31
|
sudo gem install qtext
|
data/Rakefile
CHANGED
data/lib/qtext/action_builder.rb
CHANGED
@@ -71,11 +71,11 @@ If this method is not defined, it will be created in the including class as an e
|
|
71
71
|
module ActionBuilder
|
72
72
|
# raise a RuntimeError if the including class/module does not define add_action
|
73
73
|
def self.included( including_module )
|
74
|
-
shortlist = including_module.instance_methods.grep
|
74
|
+
shortlist = including_module.instance_methods.grep(/action/i).map{|meth_name| meth_name.to_sym}
|
75
75
|
# add_action is actually an method_missing lookup for addAction, so
|
76
76
|
# search for both.
|
77
|
-
unless shortlist.any? {|x| %
|
78
|
-
raise NotImplementedError
|
77
|
+
unless shortlist.any? {|x| %i{add_action addAction}.include?( x )}
|
78
|
+
raise NotImplementedError, "#{including_module.name} must have an add_action method"
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
data/lib/qtext/version.rb
CHANGED
data/test/test_key_event.rb
CHANGED
@@ -1,29 +1,29 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'sequel/core'
|
4
|
-
require 'sequel/extensions/inflector'
|
5
|
-
|
6
|
-
module Sequel; end
|
7
|
-
|
8
|
-
class TestKeyEvent < Test::Unit::TestCase
|
9
|
-
|
10
|
-
#~ Qt::NoModifier 0x00000000 No modifier key is pressed.
|
11
|
-
#~ Qt::ShiftModifier 0x02000000 A Shift key on the keyboard is pressed.
|
12
|
-
#~ Qt::ControlModifier 0x04000000 A Ctrl key on the keyboard is pressed.
|
13
|
-
#~ Qt::AltModifier 0x08000000 An Alt key on the keyboard is pressed.
|
14
|
-
#~ Qt::MetaModifier 0x10000000 A Meta key on the keyboard is pressed.
|
15
|
-
#~ Qt::KeypadModifier 0x20000000 A keypad button is pressed.
|
16
|
-
#~ Qt::GroupSwitchModifier
|
17
|
-
def setup
|
18
|
-
@key_event = Qt::KeyEvent.new( Qt::Event::KeyPress, Qt::Key_Down, Qt::NoModifier )
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_camelize
|
22
|
-
assert "somstring".respond_to?( :camelize ), "String has no camelize method"
|
23
|
-
end
|
24
|
-
|
25
|
-
should 'have the key? methods' do
|
26
|
-
assert @key_event.key? 'down'
|
27
|
-
assert @key_event.down?, "Key is not Qt::Key_Down"
|
28
|
-
end
|
29
|
-
end
|
1
|
+
require_relative 'test_helper.rb'
|
2
|
+
|
3
|
+
require 'sequel/core'
|
4
|
+
require 'sequel/extensions/inflector'
|
5
|
+
|
6
|
+
module Sequel; end
|
7
|
+
|
8
|
+
class TestKeyEvent < Test::Unit::TestCase
|
9
|
+
|
10
|
+
#~ Qt::NoModifier 0x00000000 No modifier key is pressed.
|
11
|
+
#~ Qt::ShiftModifier 0x02000000 A Shift key on the keyboard is pressed.
|
12
|
+
#~ Qt::ControlModifier 0x04000000 A Ctrl key on the keyboard is pressed.
|
13
|
+
#~ Qt::AltModifier 0x08000000 An Alt key on the keyboard is pressed.
|
14
|
+
#~ Qt::MetaModifier 0x10000000 A Meta key on the keyboard is pressed.
|
15
|
+
#~ Qt::KeypadModifier 0x20000000 A keypad button is pressed.
|
16
|
+
#~ Qt::GroupSwitchModifier
|
17
|
+
def setup
|
18
|
+
@key_event = Qt::KeyEvent.new( Qt::Event::KeyPress, Qt::Key_Down, Qt::NoModifier )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_camelize
|
22
|
+
assert "somstring".respond_to?( :camelize ), "String has no camelize method"
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'have the key? methods' do
|
26
|
+
assert @key_event.key? 'down'
|
27
|
+
assert @key_event.down?, "Key is not Qt::Key_Down"
|
28
|
+
end
|
29
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative 'test_helper.rb'
|
2
2
|
|
3
3
|
class TestModelIndex < Test::Unit::TestCase
|
4
4
|
def setup
|
@@ -10,24 +10,24 @@ class TestModelIndex < Test::Unit::TestCase
|
|
10
10
|
end
|
11
11
|
@zero_index = @model.create_index(0,0)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def teardown
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
should "be valid" do
|
18
18
|
assert @zero_index.valid?
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
should_eventually "be invalid" do
|
22
22
|
mi = @model.create_index( @model.row_count+1, @model.column_count+1 )
|
23
23
|
assert !mi.valid?
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
should 'be an invalid copy of an invalid index' do
|
27
27
|
choppy = Qt::ModelIndex.invalid.choppy
|
28
28
|
assert !choppy.valid?
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
should "be a valid exact copy" do
|
32
32
|
choppy = @zero_index.choppy
|
33
33
|
assert choppy.valid?
|
@@ -36,11 +36,11 @@ class TestModelIndex < Test::Unit::TestCase
|
|
36
36
|
should 'be an invalid copy' do
|
37
37
|
choppy = @zero_index.choppy( :row => @model.row_count )
|
38
38
|
assert !choppy.valid?, "choppy: #{choppy.inspect}"
|
39
|
-
|
39
|
+
|
40
40
|
choppy = @zero_index.choppy( :column => @model.column_count )
|
41
41
|
assert !choppy.valid?
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
should 'be a copy with a changed row and column, from hash' do
|
45
45
|
choppy = @zero_index.choppy( :row => 1, :column => 2)
|
46
46
|
assert_equal 1, choppy.row, choppy.inspect
|
@@ -57,23 +57,23 @@ class TestModelIndex < Test::Unit::TestCase
|
|
57
57
|
assert_equal 1, choppy.row
|
58
58
|
assert_equal 2, choppy.column
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
should 'be a copy with changed row and column, from parameters' do
|
62
62
|
choppy = @zero_index.choppy(3,0)
|
63
63
|
assert choppy.valid?
|
64
64
|
assert_equal 3, choppy.row
|
65
65
|
assert_equal 0, choppy.column
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
should 'raise an exception because parameters are wrong' do
|
69
69
|
assert_raise TypeError do
|
70
70
|
@zero_index.choppy( 3 )
|
71
71
|
end
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
should 'be a copy with decremented row and column, from block' do
|
75
75
|
two_index = @model.create_index(2,2)
|
76
|
-
|
76
|
+
|
77
77
|
choppy = two_index.choppy do |i|
|
78
78
|
i.row -= 1
|
79
79
|
i.column -= 2
|
data/test/test_object_table.rb
CHANGED
@@ -1,85 +1,86 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
Thing.new( "
|
14
|
-
Thing.new( "
|
15
|
-
Thing.new( "
|
16
|
-
|
17
|
-
|
18
|
-
@
|
19
|
-
@
|
20
|
-
|
21
|
-
@view = Qt::
|
22
|
-
@main_window.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
assert_equal 4, @model.
|
32
|
-
assert_equal 4, @model.
|
33
|
-
assert_equal 4, @model.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
assert_equal 0, @model.
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
assert_equal Qt::AlignLeft.to_i, @model.data( @model.create_index(0,
|
59
|
-
assert_equal Qt::
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
@main_window.
|
81
|
-
@main_window.
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
1
|
+
require_relative 'test_helper.rb'
|
2
|
+
|
3
|
+
require 'qtext/object_table_model.rb'
|
4
|
+
require 'Qt4'
|
5
|
+
|
6
|
+
class TestObjectTableModel < Test::Unit::TestCase
|
7
|
+
Thing = Struct.new( :name, :value, :location, :price, :ignored ) do
|
8
|
+
include TreeViewable
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup
|
12
|
+
@data = [
|
13
|
+
Thing.new( "Screwdriver", 'high', 'toolbox', 10.96, 'not' ),
|
14
|
+
Thing.new( "Thermometer", '15 degrees', 'bathroom', 0.01, 'here' ),
|
15
|
+
Thing.new( "Bed", 'large', 'bedroom' ),
|
16
|
+
Thing.new( "Approximation", 'useful', 'maths', 'none', 'all' )
|
17
|
+
]
|
18
|
+
@data[3].children = @data
|
19
|
+
@model = ObjectTableModel.new( :data => @data, :headers => [ :name, :value, :location, Header.new( :attribute => :price, :alignment => Qt::AlignRight ) ] )
|
20
|
+
@main_window = Qt::MainWindow.new
|
21
|
+
#~ @view = Qt::TableView.new( @main_window ) { |tv| tv.model = @model }
|
22
|
+
@view = Qt::TreeView.new( @main_window ) { |tv| tv.model = @model }
|
23
|
+
@main_window.central_widget = @view
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'have children for data[3]' do
|
27
|
+
assert_equal 4, @data[3].children.size
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'have a 4 x 4 size' do
|
31
|
+
assert_equal 4, @model.rowCount
|
32
|
+
assert_equal 4, @model.row_count
|
33
|
+
assert_equal 4, @model.columnCount
|
34
|
+
assert_equal 4, @model.column_count
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'have 0x0 size for children models at a given index' do
|
38
|
+
index = @model.create_index(1,1)
|
39
|
+
assert_equal 0, @model.row_count( index )
|
40
|
+
assert_equal 0, @model.column_count( index )
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'return correct data' do
|
44
|
+
@data.each_with_index do |item,i|
|
45
|
+
Thing.members.each_with_index do |member,j|
|
46
|
+
next if j >= 4
|
47
|
+
model_index = @model.create_index(i,j)
|
48
|
+
assert_equal item[member], @model.data( model_index ).value
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'return nil for invalid index' do
|
54
|
+
assert_equal Qt::Variant.invalid, @model.data( Qt::ModelIndex.invalid )
|
55
|
+
end
|
56
|
+
|
57
|
+
should 'have price aligned right' do
|
58
|
+
assert_equal Qt::AlignLeft.to_i, @model.data( @model.create_index(0,0), Qt::TextAlignmentRole ).to_i & Qt::AlignLeft.to_i
|
59
|
+
assert_equal Qt::AlignLeft.to_i, @model.data( @model.create_index(0,1), Qt::TextAlignmentRole ).to_i & Qt::AlignLeft.to_i
|
60
|
+
assert_equal Qt::AlignRight.to_i, @model.data( @model.create_index(0,3), Qt::TextAlignmentRole ).to_i & Qt::AlignRight.to_i
|
61
|
+
end
|
62
|
+
|
63
|
+
should 'have a nil parent' do
|
64
|
+
assert_nil @model.parent
|
65
|
+
end
|
66
|
+
|
67
|
+
should 'have parent == @model' do
|
68
|
+
model = ObjectTableModel.new( :parent => @model, :data => @data, :headers => [ :name, :value, :location, Header.new( :attribute => :price, :alignment => Qt::AlignRight ) ] )
|
69
|
+
assert_equal @model, model.parent
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'tree view' do
|
73
|
+
should 'have children' do
|
74
|
+
model_index = @model.create_index(3,0)
|
75
|
+
assert_equal 4, @model.row_count( model_index )
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def dont_test_show_window
|
80
|
+
@main_window.window_title = 'Test ObjectTableModel'
|
81
|
+
@main_window.move( 150, 0 )
|
82
|
+
@main_window.show
|
83
|
+
#~ $app.exec
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
data/test/test_widget.rb
CHANGED
@@ -1,104 +1,104 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class Thok < Qt::Widget
|
4
|
-
signal :whatever
|
5
|
-
end
|
6
|
-
|
7
|
-
class TestWidget < Test::Unit::TestCase
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@thok = Thok.new
|
11
|
-
end
|
12
|
-
|
13
|
-
should 'have a whatever_signal method' do
|
14
|
-
assert_equal 1, @thok.methods.grep( /^whatever_signal$/ ).size
|
15
|
-
assert_raise ArgumentError do
|
16
|
-
@thok.whatever_signal( 'hello' )
|
17
|
-
end
|
18
|
-
|
19
|
-
assert_nothing_raised do
|
20
|
-
@thok.whatever_signal( 'hello'.to_variant )
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
should 'have a whatever emitter' do
|
25
|
-
assert_equal 1, @thok.methods.grep( /^whatever$/ ).size
|
26
|
-
assert_nothing_raised { @thok.whatever }
|
27
|
-
assert_nothing_raised { @thok.whatever 1 }
|
28
|
-
assert_nothing_raised { @thok.whatever 1,2,3 }
|
29
|
-
assert_nothing_raised { @thok.whatever [4,5,6] }
|
30
|
-
end
|
31
|
-
|
32
|
-
should 'have an on_whatever handler' do
|
33
|
-
assert_equal 1, @thok.methods.grep( /^on_whatever$/ ).size
|
34
|
-
end
|
35
|
-
|
36
|
-
context 'on_whatever handler' do
|
37
|
-
should 'handle nil args' do
|
38
|
-
@thok.on_whatever do |arg|
|
39
|
-
assert_nil arg
|
40
|
-
end
|
41
|
-
@thok.whatever
|
42
|
-
@thok.whatever( nil )
|
43
|
-
end
|
44
|
-
|
45
|
-
should 'handle single args' do
|
46
|
-
@thok.on_whatever do |arg|
|
47
|
-
assert_not_nil arg
|
48
|
-
assert_not_equal Array, arg.class
|
49
|
-
end
|
50
|
-
@thok.whatever 1
|
51
|
-
@thok.whatever 'hello'
|
52
|
-
end
|
53
|
-
|
54
|
-
should_eventually 'handle objects' do
|
55
|
-
NVP = Struct.new :name, :value
|
56
|
-
nvp = NVP.new
|
57
|
-
nvp.name = 'how'
|
58
|
-
nvp.value = 'that'
|
59
|
-
@thok.on_whatever do |arg|
|
60
|
-
assert_not_nil arg
|
61
|
-
assert_equal NVP, arg.class
|
62
|
-
end
|
63
|
-
@thok.whatever nvp
|
64
|
-
end
|
65
|
-
|
66
|
-
should 'handle arg lists' do
|
67
|
-
@thok.on_whatever do |arg1,arg2|
|
68
|
-
assert_not_nil arg1
|
69
|
-
assert_not_nil arg2
|
70
|
-
assert_not_equal Array, arg1.class
|
71
|
-
assert_not_equal Array, arg2.class
|
72
|
-
end
|
73
|
-
@thok.whatever 1,2
|
74
|
-
@thok.whatever 'hello','there'
|
75
|
-
end
|
76
|
-
|
77
|
-
should 'handle a single array' do
|
78
|
-
@thok.on_whatever do |ary|
|
79
|
-
assert_not_nil ary
|
80
|
-
assert_equal Array, ary.class
|
81
|
-
assert_equal 3, ary.size
|
82
|
-
assert_equal [4,5,6], ary
|
83
|
-
end
|
84
|
-
@thok.whatever [4,5,6]
|
85
|
-
end
|
86
|
-
|
87
|
-
should_eventually 'handle multiple arrays' do
|
88
|
-
@thok.on_whatever do |ary1,ary2|
|
89
|
-
assert_not_nil ary1
|
90
|
-
assert_not_nil ary2
|
91
|
-
assert_equal Array, ary1.class
|
92
|
-
assert_equal Array, ary2.class
|
93
|
-
assert_equal 3, ary1.size
|
94
|
-
assert_equal 3, ary2.size
|
95
|
-
# fails here because ary1 is an array of variants
|
96
|
-
puts "ary1: #{ary1.inspect}"
|
97
|
-
assert_equal [4,5,6], ary1
|
98
|
-
assert_equal [7,8,9], ary2
|
99
|
-
end
|
100
|
-
@thok.whatever( [4,5,6], [7,8,9] )
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
1
|
+
require_relative 'test_helper.rb'
|
2
|
+
|
3
|
+
class Thok < Qt::Widget
|
4
|
+
signal :whatever
|
5
|
+
end
|
6
|
+
|
7
|
+
class TestWidget < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@thok = Thok.new
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'have a whatever_signal method' do
|
14
|
+
assert_equal 1, @thok.methods.grep( /^whatever_signal$/ ).size
|
15
|
+
assert_raise ArgumentError do
|
16
|
+
@thok.whatever_signal( 'hello' )
|
17
|
+
end
|
18
|
+
|
19
|
+
assert_nothing_raised do
|
20
|
+
@thok.whatever_signal( 'hello'.to_variant )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
should 'have a whatever emitter' do
|
25
|
+
assert_equal 1, @thok.methods.grep( /^whatever$/ ).size
|
26
|
+
assert_nothing_raised { @thok.whatever }
|
27
|
+
assert_nothing_raised { @thok.whatever 1 }
|
28
|
+
assert_nothing_raised { @thok.whatever 1,2,3 }
|
29
|
+
assert_nothing_raised { @thok.whatever [4,5,6] }
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'have an on_whatever handler' do
|
33
|
+
assert_equal 1, @thok.methods.grep( /^on_whatever$/ ).size
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'on_whatever handler' do
|
37
|
+
should 'handle nil args' do
|
38
|
+
@thok.on_whatever do |arg|
|
39
|
+
assert_nil arg
|
40
|
+
end
|
41
|
+
@thok.whatever
|
42
|
+
@thok.whatever( nil )
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'handle single args' do
|
46
|
+
@thok.on_whatever do |arg|
|
47
|
+
assert_not_nil arg
|
48
|
+
assert_not_equal Array, arg.class
|
49
|
+
end
|
50
|
+
@thok.whatever 1
|
51
|
+
@thok.whatever 'hello'
|
52
|
+
end
|
53
|
+
|
54
|
+
should_eventually 'handle objects' do
|
55
|
+
NVP = Struct.new :name, :value
|
56
|
+
nvp = NVP.new
|
57
|
+
nvp.name = 'how'
|
58
|
+
nvp.value = 'that'
|
59
|
+
@thok.on_whatever do |arg|
|
60
|
+
assert_not_nil arg
|
61
|
+
assert_equal NVP, arg.class
|
62
|
+
end
|
63
|
+
@thok.whatever nvp
|
64
|
+
end
|
65
|
+
|
66
|
+
should 'handle arg lists' do
|
67
|
+
@thok.on_whatever do |arg1,arg2|
|
68
|
+
assert_not_nil arg1
|
69
|
+
assert_not_nil arg2
|
70
|
+
assert_not_equal Array, arg1.class
|
71
|
+
assert_not_equal Array, arg2.class
|
72
|
+
end
|
73
|
+
@thok.whatever 1,2
|
74
|
+
@thok.whatever 'hello','there'
|
75
|
+
end
|
76
|
+
|
77
|
+
should 'handle a single array' do
|
78
|
+
@thok.on_whatever do |ary|
|
79
|
+
assert_not_nil ary
|
80
|
+
assert_equal Array, ary.class
|
81
|
+
assert_equal 3, ary.size
|
82
|
+
assert_equal [4,5,6], ary
|
83
|
+
end
|
84
|
+
@thok.whatever [4,5,6]
|
85
|
+
end
|
86
|
+
|
87
|
+
should_eventually 'handle multiple arrays' do
|
88
|
+
@thok.on_whatever do |ary1,ary2|
|
89
|
+
assert_not_nil ary1
|
90
|
+
assert_not_nil ary2
|
91
|
+
assert_equal Array, ary1.class
|
92
|
+
assert_equal Array, ary2.class
|
93
|
+
assert_equal 3, ary1.size
|
94
|
+
assert_equal 3, ary2.size
|
95
|
+
# fails here because ary1 is an array of variants
|
96
|
+
puts "ary1: #{ary1.inspect}"
|
97
|
+
assert_equal [4,5,6], ary1
|
98
|
+
assert_equal [7,8,9], ary2
|
99
|
+
end
|
100
|
+
@thok.whatever( [4,5,6], [7,8,9] )
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|