lebowski 0.1.0
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.
- data/History.md +3 -0
- data/License.txt +20 -0
- data/Manifest.txt +84 -0
- data/README.md +146 -0
- data/Rakefile +42 -0
- data/bin/lebowski +26 -0
- data/bin/lebowski-spec +29 -0
- data/bin/lebowski-start-server +24 -0
- data/lib/lebowski.rb +15 -0
- data/lib/lebowski/core.rb +35 -0
- data/lib/lebowski/foundation.rb +52 -0
- data/lib/lebowski/foundation/application.rb +315 -0
- data/lib/lebowski/foundation/core.rb +61 -0
- data/lib/lebowski/foundation/core_query.rb +231 -0
- data/lib/lebowski/foundation/dom_element.rb +114 -0
- data/lib/lebowski/foundation/errors/argument_invalid_type.rb +31 -0
- data/lib/lebowski/foundation/errors/unexpected_type.rb +30 -0
- data/lib/lebowski/foundation/mixins/collection_item_view_support.rb +87 -0
- data/lib/lebowski/foundation/mixins/delegate_support.rb +22 -0
- data/lib/lebowski/foundation/mixins/inline_text_field_support.rb +29 -0
- data/lib/lebowski/foundation/mixins/key_check.rb +35 -0
- data/lib/lebowski/foundation/mixins/list_item_view_support.rb +36 -0
- data/lib/lebowski/foundation/mixins/positioned_element.rb +20 -0
- data/lib/lebowski/foundation/mixins/stall_support.rb +79 -0
- data/lib/lebowski/foundation/mixins/user_actions.rb +302 -0
- data/lib/lebowski/foundation/mixins/wait_actions.rb +44 -0
- data/lib/lebowski/foundation/object_array.rb +305 -0
- data/lib/lebowski/foundation/panes/alert.rb +117 -0
- data/lib/lebowski/foundation/panes/main.rb +20 -0
- data/lib/lebowski/foundation/panes/menu.rb +100 -0
- data/lib/lebowski/foundation/panes/modal.rb +21 -0
- data/lib/lebowski/foundation/panes/palette.rb +21 -0
- data/lib/lebowski/foundation/panes/pane.rb +24 -0
- data/lib/lebowski/foundation/panes/panel.rb +25 -0
- data/lib/lebowski/foundation/panes/picker.rb +43 -0
- data/lib/lebowski/foundation/panes/sheet.rb +21 -0
- data/lib/lebowski/foundation/proxy_factory.rb +87 -0
- data/lib/lebowski/foundation/proxy_object.rb +670 -0
- data/lib/lebowski/foundation/sc_object.rb +38 -0
- data/lib/lebowski/foundation/views/button.rb +20 -0
- data/lib/lebowski/foundation/views/checkbox.rb +63 -0
- data/lib/lebowski/foundation/views/collection.rb +304 -0
- data/lib/lebowski/foundation/views/container.rb +32 -0
- data/lib/lebowski/foundation/views/disclosure.rb +59 -0
- data/lib/lebowski/foundation/views/grid.rb +21 -0
- data/lib/lebowski/foundation/views/label.rb +30 -0
- data/lib/lebowski/foundation/views/list.rb +67 -0
- data/lib/lebowski/foundation/views/list_item.rb +280 -0
- data/lib/lebowski/foundation/views/menu_item.rb +27 -0
- data/lib/lebowski/foundation/views/radio.rb +32 -0
- data/lib/lebowski/foundation/views/segmented.rb +97 -0
- data/lib/lebowski/foundation/views/select_field.rb +139 -0
- data/lib/lebowski/foundation/views/support/simple_item_array.rb +249 -0
- data/lib/lebowski/foundation/views/text_field.rb +108 -0
- data/lib/lebowski/foundation/views/view.rb +108 -0
- data/lib/lebowski/runtime.rb +7 -0
- data/lib/lebowski/runtime/errors/remote_control_command_execution_error.rb +9 -0
- data/lib/lebowski/runtime/errors/remote_control_command_timeout_error.rb +9 -0
- data/lib/lebowski/runtime/errors/remote_control_error.rb +9 -0
- data/lib/lebowski/runtime/errors/selenium_server_error.rb +9 -0
- data/lib/lebowski/runtime/object_encoder.rb +123 -0
- data/lib/lebowski/runtime/sprout_core_driver.rb +14 -0
- data/lib/lebowski/runtime/sprout_core_extensions.rb +600 -0
- data/lib/lebowski/scui.rb +18 -0
- data/lib/lebowski/scui/mixins/node_item_view_support.rb +136 -0
- data/lib/lebowski/scui/mixins/terminal_view_support.rb +25 -0
- data/lib/lebowski/scui/views/combo_box.rb +119 -0
- data/lib/lebowski/scui/views/date_picker.rb +148 -0
- data/lib/lebowski/scui/views/linkit.rb +36 -0
- data/lib/lebowski/spec.rb +17 -0
- data/lib/lebowski/spec/core.rb +21 -0
- data/lib/lebowski/spec/matchers/be.rb +63 -0
- data/lib/lebowski/spec/matchers/has.rb +40 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_object_function.rb +67 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_predicate_with_no_prefix.rb +50 -0
- data/lib/lebowski/spec/matchers/match_supporters/has_predicate_with_prefix_has.rb +50 -0
- data/lib/lebowski/spec/matchers/match_supporters/match_supporter.rb +29 -0
- data/lib/lebowski/spec/matchers/method_missing.rb +24 -0
- data/lib/lebowski/spec/operators/operator.rb +20 -0
- data/lib/lebowski/spec/operators/that.rb +116 -0
- data/lib/lebowski/spec/util.rb +26 -0
- data/lib/lebowski/version.rb +17 -0
- data/resources/selenium-server.jar +0 -0
- data/resources/user-extensions.js +1421 -0
- metadata +198 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
module Lebowski
|
2
|
+
module SCUI
|
3
|
+
module Views
|
4
|
+
|
5
|
+
class CanvasView < Lebowski::Foundation::Views::CollectionView
|
6
|
+
representing_sc_class 'LinkIt.CanvasView'
|
7
|
+
|
8
|
+
def nodes
|
9
|
+
return item_views
|
10
|
+
end
|
11
|
+
|
12
|
+
def empty?
|
13
|
+
return self['isEmpty']
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
def create_item_views_object_array()
|
18
|
+
return Support::NodeItemViewArray.new self
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module Support
|
23
|
+
|
24
|
+
class NodeItemViewArray < Lebowski::Foundation::Views::Support::CollectionItemViewArray
|
25
|
+
def mix_in_support_for_object(obj)
|
26
|
+
if not obj.class.ancestors.member? Lebowski::SCUI::Mixins::NodeItemViewSupport
|
27
|
+
obj.extend Lebowski::SCUI::Mixins::NodeItemViewSupport
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lebowski')
|
7
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/core')
|
8
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/util')
|
9
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/operators/operator')
|
10
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/operators/that')
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/match_supporters/match_supporter')
|
12
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/match_supporters/has_object_function')
|
13
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/match_supporters/has_predicate_with_no_prefix')
|
14
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/match_supporters/has_predicate_with_prefix_has')
|
15
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/be')
|
16
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/has')
|
17
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec/matchers/method_missing')
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
#
|
7
|
+
# matcher is to only be applied to an object that derives from
|
8
|
+
# Lebowksi::Foundation::Object class otherwise an exception will
|
9
|
+
# be raised
|
10
|
+
#
|
11
|
+
# Usage:
|
12
|
+
#
|
13
|
+
# myobject.should exist_in_app => myobject.exists? == true
|
14
|
+
# myobject.should_not exist_in_app => myobject.exists? == false
|
15
|
+
#
|
16
|
+
Spec::Matchers.define :exist_in_app do
|
17
|
+
match do |object|
|
18
|
+
object.exists?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
#
|
11
|
+
# Create owr own Be class that inherits from RSpec's Be class. This class
|
12
|
+
# adds some logic to check for predicates that have a prefix is_. If
|
13
|
+
# there is no such prefix then we hand back control to parent class to
|
14
|
+
# apply the default pattern matching
|
15
|
+
#
|
16
|
+
# We are trying to accomplish the following:
|
17
|
+
#
|
18
|
+
# myobject.should be_orange ==> myobject.is_orange? == true
|
19
|
+
#
|
20
|
+
# RSpec's default implementation of Be does not support checks for the is_
|
21
|
+
# prefix.
|
22
|
+
#
|
23
|
+
# Ideally, it would've been better if the original class had hooks in it
|
24
|
+
# to try custom patterns before ultimately applying the default pattern
|
25
|
+
# checks
|
26
|
+
#
|
27
|
+
class Be < ::Spec::Matchers::BePredicate
|
28
|
+
|
29
|
+
def matches?(actual)
|
30
|
+
|
31
|
+
begin
|
32
|
+
return @result = actual.__send__("is_#{@expected.to_s}?".to_sym, *@args)
|
33
|
+
rescue NoMethodError => nme
|
34
|
+
rescue ArgumentError => ae
|
35
|
+
end
|
36
|
+
|
37
|
+
begin
|
38
|
+
return @result = actual.__send__("#{@expected.to_s}?".to_sym, *@args)
|
39
|
+
rescue NoMethodError => nme
|
40
|
+
rescue ArgumentError => ae
|
41
|
+
end
|
42
|
+
|
43
|
+
begin
|
44
|
+
return @result = actual.__send__("is_#{@expected.to_s}".to_sym, *@args)
|
45
|
+
rescue NoMethodError => nme
|
46
|
+
rescue ArgumentError => ae
|
47
|
+
end
|
48
|
+
|
49
|
+
begin
|
50
|
+
return @result = actual.__send__(@expected, *@args)
|
51
|
+
rescue NoMethodError => nme
|
52
|
+
rescue ArgumentError => ae
|
53
|
+
end
|
54
|
+
|
55
|
+
# None of the above options worked. Now we can default back to the
|
56
|
+
# parent object's approach
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
#
|
11
|
+
# Create owr own Has class that inherits from RSpec's Has class. This class
|
12
|
+
# adds some logic to check if the given "actual" object has a property with
|
13
|
+
# the name extracted from @expected. If not, then pass control back to the
|
14
|
+
# parent class.
|
15
|
+
#
|
16
|
+
# Ideally it would have been better if the original Has class provided hooks
|
17
|
+
# to include custom pattern checks that are used before the default pattern
|
18
|
+
# checks are performed.
|
19
|
+
#
|
20
|
+
class Has < ::Spec::Matchers::Has
|
21
|
+
|
22
|
+
def matches?(actual)
|
23
|
+
support = HasPredicateWithPrefixHas.new(actual, @expected, *@args)
|
24
|
+
return support.result if support.has_match?
|
25
|
+
|
26
|
+
support = HasPredicateWithNoPrefix.new(actual, @expected, *@args)
|
27
|
+
return support.result if support.has_match?
|
28
|
+
|
29
|
+
support = HasObjectFunction.new(actual, @expected, *@args)
|
30
|
+
return support.result if support.has_match?
|
31
|
+
|
32
|
+
# None of the above options worked. Now we can default back to the
|
33
|
+
# parent object's approach
|
34
|
+
super
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
class HasObjectFunction < MatchSupporter
|
11
|
+
|
12
|
+
def has_match?()
|
13
|
+
|
14
|
+
return false if @args.length == 0
|
15
|
+
|
16
|
+
method_name = obj_property(@expected)
|
17
|
+
|
18
|
+
ret_val = nil
|
19
|
+
invoked_method = false
|
20
|
+
|
21
|
+
# Try with arguments
|
22
|
+
begin
|
23
|
+
args = @args.clone; args.pop
|
24
|
+
ret_val = @object.__send__(method_name, *args)
|
25
|
+
invoked_method = true
|
26
|
+
rescue NoMethodError => nme
|
27
|
+
rescue ArgumentError => ae
|
28
|
+
end
|
29
|
+
|
30
|
+
# Try with no arguments
|
31
|
+
begin
|
32
|
+
if not invoked_method
|
33
|
+
ret_val = @object.__send__(method_name)
|
34
|
+
invoked_method = true
|
35
|
+
end
|
36
|
+
rescue NoMethodError => nme
|
37
|
+
rescue ArgumentError => ae
|
38
|
+
end
|
39
|
+
|
40
|
+
return false if not invoked_method
|
41
|
+
|
42
|
+
operator = @args[@args.length - 1]
|
43
|
+
if operator.kind_of? Lebowski::Spec::Operators::Operator
|
44
|
+
@result = operator.evaluate(ret_val)
|
45
|
+
return true
|
46
|
+
end
|
47
|
+
|
48
|
+
@result = Lebowski::Spec::Util.match?(@args[@args.length - 1], ret_val)
|
49
|
+
|
50
|
+
return true
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def obj_property(sym)
|
57
|
+
["has_", "have_"].each do |prefix|
|
58
|
+
if sym.to_s =~ /^#{prefix}/
|
59
|
+
return sym.to_s.sub(prefix, "").to_sym
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
class HasPredicateWithNoPrefix < MatchSupporter
|
11
|
+
|
12
|
+
def has_match?()
|
13
|
+
|
14
|
+
executed_method = false
|
15
|
+
|
16
|
+
method_name = predicate_with_no_prefix(@expected)
|
17
|
+
|
18
|
+
# Try with arguments
|
19
|
+
begin
|
20
|
+
@result = @object.__send__(method_name, *@args)
|
21
|
+
executed_method = true
|
22
|
+
rescue NoMethodError => nme
|
23
|
+
rescue ArgumentError => ae
|
24
|
+
end
|
25
|
+
|
26
|
+
return true if executed_method
|
27
|
+
|
28
|
+
# Try with no arguments
|
29
|
+
begin
|
30
|
+
@result = @object.__send__(method_name)
|
31
|
+
executed_method = true
|
32
|
+
rescue NoMethodError => nme
|
33
|
+
rescue ArgumentError => ae
|
34
|
+
end
|
35
|
+
|
36
|
+
return executed_method
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def predicate_with_no_prefix(sym)
|
43
|
+
return (sym.to_s.sub('have_', '') << '?').to_sym
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
class HasPredicateWithPrefixHas < MatchSupporter
|
11
|
+
|
12
|
+
def has_match?()
|
13
|
+
|
14
|
+
executed_method = false
|
15
|
+
|
16
|
+
method_name = predicate_with_prefix_has(@expected)
|
17
|
+
|
18
|
+
# Try with arguments
|
19
|
+
begin
|
20
|
+
@result = @object.__send__(method_name, *@args)
|
21
|
+
executed_method = true
|
22
|
+
rescue NoMethodError => nme
|
23
|
+
rescue ArgumentError => ae
|
24
|
+
end
|
25
|
+
|
26
|
+
return true if executed_method
|
27
|
+
|
28
|
+
# Try with no arguments
|
29
|
+
begin
|
30
|
+
@result = @object.__send__(method_name)
|
31
|
+
executed_method = true
|
32
|
+
rescue NoMethodError => nme
|
33
|
+
rescue ArgumentError => ae
|
34
|
+
end
|
35
|
+
|
36
|
+
return executed_method
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def predicate_with_prefix_has(sym)
|
43
|
+
return (sym.to_s.sub('have_', 'has_') << '?').to_sym
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Matchers
|
9
|
+
|
10
|
+
class MatchSupporter
|
11
|
+
|
12
|
+
attr_reader :result
|
13
|
+
|
14
|
+
def initialize(object, expected, *args)
|
15
|
+
@object = object
|
16
|
+
@expected = expected
|
17
|
+
@args = args
|
18
|
+
@result = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def has_match?()
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Spec
|
7
|
+
module Matchers
|
8
|
+
|
9
|
+
#
|
10
|
+
# Replacing RSpec's default method_missing implementation so that we can
|
11
|
+
# include our own special default hooks that allows spec tests to look
|
12
|
+
# more readable.
|
13
|
+
#
|
14
|
+
# Ideally it would have been better if RSpec provided some nice hooks to
|
15
|
+
# try other default pattern matchers
|
16
|
+
#
|
17
|
+
def method_missing(sym, *args, &block)
|
18
|
+
return Lebowski::Spec::Matchers::Be.new(sym, *args) if sym.to_s =~ /^be_/
|
19
|
+
return Lebowski::Spec::Matchers::Has.new(sym, *args) if sym.to_s =~ /^have_/
|
20
|
+
return Lebowski::Spec::Operators::That.new(sym, *args) if sym.to_s =~ /^that_/
|
21
|
+
super
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Operators
|
9
|
+
|
10
|
+
class Operator
|
11
|
+
|
12
|
+
def evaluate(value)
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# ==========================================================================
|
2
|
+
# Project: Lebowski Framework - The SproutCore Test Automation Framework
|
3
|
+
# License: Licensed under MIT license (see License.txt)
|
4
|
+
# ==========================================================================
|
5
|
+
|
6
|
+
module Lebowski
|
7
|
+
module Spec
|
8
|
+
module Operators
|
9
|
+
|
10
|
+
class That < Operator
|
11
|
+
|
12
|
+
def initialize(sym, *args)
|
13
|
+
@sym = sym
|
14
|
+
@args = args
|
15
|
+
end
|
16
|
+
|
17
|
+
def evaluate(value)
|
18
|
+
case operator
|
19
|
+
when :not_empty
|
20
|
+
return not_empty? value
|
21
|
+
when :empty
|
22
|
+
return empty? value
|
23
|
+
when :between
|
24
|
+
return between? value
|
25
|
+
when :at_most
|
26
|
+
return at_most? value
|
27
|
+
when :at_least
|
28
|
+
return at_least? value
|
29
|
+
when :greater_than
|
30
|
+
return greater_than? value
|
31
|
+
when :less_than
|
32
|
+
return less_than? value
|
33
|
+
when :contains
|
34
|
+
return contains? value
|
35
|
+
when :matches
|
36
|
+
return matches? value
|
37
|
+
when :equals
|
38
|
+
return equals? value
|
39
|
+
when :equal_to
|
40
|
+
return equals? value
|
41
|
+
else
|
42
|
+
raise ArgumentError "Invalid that operator: #{operator}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def operator()
|
47
|
+
["that_is_", "that_"].each do |prefix|
|
48
|
+
if @sym =~ /^#{prefix}/
|
49
|
+
return @sym.to_s.sub(prefix, "").to_sym
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def method_missing(sym, *args, &block)
|
55
|
+
return self
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def not_empty?(value)
|
61
|
+
return (not empty? value)
|
62
|
+
end
|
63
|
+
|
64
|
+
def empty?(value)
|
65
|
+
return true if value.nil?
|
66
|
+
return value.length == 0 if value.kind_of?(Array) or value.kind_of?(String)
|
67
|
+
return false
|
68
|
+
end
|
69
|
+
|
70
|
+
def between?(value)
|
71
|
+
return false if not value.kind_of? Numeric
|
72
|
+
min = @args[0]
|
73
|
+
max = @args[1]
|
74
|
+
return ((value >= min) and (value <= max))
|
75
|
+
end
|
76
|
+
|
77
|
+
def at_least?(value)
|
78
|
+
return false if not value.kind_of? Numeric
|
79
|
+
return value >= @args[0]
|
80
|
+
end
|
81
|
+
|
82
|
+
def at_most?(value)
|
83
|
+
return false if not value.kind_of? Numeric
|
84
|
+
return value <= @args[0]
|
85
|
+
end
|
86
|
+
|
87
|
+
def greater_than?(value)
|
88
|
+
return false if not value.kind_of? Numeric
|
89
|
+
return value > @args[0]
|
90
|
+
end
|
91
|
+
|
92
|
+
def less_than?(value)
|
93
|
+
return false if not value.kind_of? Numeric
|
94
|
+
return value < @args[0]
|
95
|
+
end
|
96
|
+
|
97
|
+
def contains?(value)
|
98
|
+
return false if value.nil?
|
99
|
+
@args.all? do |x|
|
100
|
+
value.member? x
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def matches?(value)
|
105
|
+
return Lebowski::Spec::Util.match?(@args[0], value)
|
106
|
+
end
|
107
|
+
|
108
|
+
def equals?(value)
|
109
|
+
return @args[0] == value
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|