named_parameter 0.0.4 → 0.0.5

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.
@@ -0,0 +1,185 @@
1
+ require 'spec_helper'
2
+
3
+ describe "above named" do
4
+ describe "singleton named method feature" do
5
+ describe "becomes possible:" do
6
+ describe 'Named Parameter' do
7
+ specify %q{
8
+ class People
9
+ extend NamedParameter
10
+
11
+ named
12
+ def self.say(phrase)
13
+ phrase
14
+ end
15
+ end
16
+
17
+ People.say phrase: "Hi!"
18
+ # => "Hi!"
19
+ } do
20
+ class People
21
+ extend NamedParameter
22
+
23
+ named
24
+ def self.say(phrase)
25
+ phrase
26
+ end
27
+ end
28
+
29
+ phrase = People.say phrase: "Hi!"
30
+ phrase.should be == "Hi!"
31
+ end
32
+ end
33
+
34
+ describe 'Optional Named Parameter' do
35
+ specify %q{
36
+ class People
37
+ extend NamedParameter
38
+
39
+ named
40
+ def self.say(phrase="I'm mute")
41
+ phrase
42
+ end
43
+ end
44
+
45
+ People.say
46
+ # => "I'm mute"
47
+ } do
48
+ class People
49
+ extend NamedParameter
50
+
51
+ named
52
+ def self.say(phrase="I'm mute")
53
+ phrase
54
+ end
55
+ end
56
+
57
+ phrase = People.say
58
+ phrase.should be == "I'm mute"
59
+ end
60
+ end
61
+
62
+ describe 'Multiple Named Parameter (in any order)' do
63
+ specify %q{
64
+ class Point
65
+ extend NamedParameter
66
+
67
+ named
68
+ def self.move_to(x,y)
69
+ [x,y]
70
+ end
71
+ end
72
+
73
+ Point.move_to x: 1,y: 2
74
+ # => [1,2]
75
+
76
+ Point.move_to y: 2, x: 1
77
+ # => [1,2]
78
+ } do
79
+ class Point
80
+ extend NamedParameter
81
+
82
+ named
83
+ def self.move_to(x,y)
84
+ [x,y]
85
+ end
86
+ end
87
+
88
+ position = Point.move_to x: 1,y: 2
89
+ position.should be == [1,2]
90
+
91
+ position = Point.move_to y: 2, x: 1
92
+ position.should be == [1,2]
93
+ end
94
+ end
95
+
96
+ describe 'ArgumentError when given undefined args' do
97
+ specify %q{
98
+ class People
99
+ extend NamedParameter
100
+
101
+ named
102
+ def self.say(phrase)
103
+ end
104
+ end
105
+
106
+ People.say phrase: "hi!",undefined: "test"
107
+ #=> ArgumentError
108
+ } do
109
+ class People
110
+ extend NamedParameter
111
+
112
+ named
113
+ def self.say(phrase)
114
+ end
115
+ end
116
+
117
+ lambda{People.say(phrase: "hi!",undefined: "hugo")}.should raise_error ArgumentError, /'undefined'[\w\s]*'say'/
118
+ end
119
+ end
120
+
121
+ describe 'ArgumentError when not given required args' do
122
+ specify %q{
123
+ class People
124
+ extend NamedParameter
125
+
126
+ named
127
+ def self.say(phrase)
128
+ end
129
+ end
130
+
131
+ People.say
132
+ #=> ArgumentError
133
+ } do
134
+ class People
135
+ extend NamedParameter
136
+
137
+ named
138
+ def self.say(phrase)
139
+ end
140
+ end
141
+
142
+ lambda {People.say}.should raise_error ArgumentError, /'phrase'[\w\s]*'say'/
143
+ end
144
+ end
145
+
146
+ describe 'ArgumentError when given a non Hash argument' do
147
+ specify %q{
148
+ class People
149
+ extend NamedParameter
150
+
151
+ named
152
+ def self.say(phrase)
153
+ end
154
+ end
155
+
156
+ People.say
157
+ #=> ArgumentError
158
+ } do
159
+ class People
160
+ extend NamedParameter
161
+
162
+ named
163
+ def self.say(phrase)
164
+ end
165
+ end
166
+
167
+ lambda {People.say("non Hash argument")}.should raise_error ArgumentError, /"non Hash argument"[\w\s]*'say'/
168
+ end
169
+ end
170
+ end
171
+
172
+ describe "no named method" do
173
+ it "can be called with normal parameters" do
174
+ class People
175
+ def self.no_named_say(phrase)
176
+ phrase
177
+ end
178
+ end
179
+
180
+ phrase = People.no_named_say "Hi!"
181
+ phrase.should be == "Hi!"
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,199 @@
1
+ require 'spec_helper'
2
+
3
+ describe "inline named" do
4
+ describe "class << self named method feature" do
5
+ describe "becomes possible:" do
6
+ describe 'Named Parameter' do
7
+ specify %q{
8
+ class People
9
+ extend NamedParameter
10
+
11
+ class << self
12
+ named def say(phrase)
13
+ phrase
14
+ end
15
+ end
16
+ end
17
+
18
+ People.say phrase: "Hi!"
19
+ # => "Hi!"
20
+ } do
21
+ class People
22
+ extend NamedParameter
23
+
24
+ class << self
25
+ named def say(phrase)
26
+ phrase
27
+ end
28
+ end
29
+ end
30
+
31
+ phrase = People.say phrase: "Hi!"
32
+ phrase.should be == "Hi!"
33
+ end
34
+ end
35
+
36
+ describe 'Optional Named Parameter' do
37
+ specify %q{
38
+ class People
39
+ extend NamedParameter
40
+
41
+ class << self
42
+ named def say(phrase="I'm mute")
43
+ phrase
44
+ end
45
+ end
46
+ end
47
+
48
+ People.say
49
+ # => "I'm mute"
50
+ } do
51
+ class People
52
+ extend NamedParameter
53
+
54
+ class << self
55
+ named def say(phrase="I'm mute")
56
+ phrase
57
+ end
58
+ end
59
+ end
60
+
61
+ phrase = People.say
62
+ phrase.should be == "I'm mute"
63
+ end
64
+ end
65
+
66
+ describe 'Multiple Named Parameter (in any order)' do
67
+ specify %q{
68
+ class Point
69
+ extend NamedParameter
70
+
71
+ class << self
72
+ named def move_to(x,y)
73
+ [x,y]
74
+ end
75
+ end
76
+ end
77
+
78
+ Point.move_to x: 1,y: 2
79
+ # => [1,2]
80
+
81
+ Point.move_to y: 2, x: 1
82
+ # => [1,2]
83
+ } do
84
+ class Point
85
+ extend NamedParameter
86
+
87
+ class << self
88
+ named def move_to(x,y)
89
+ [x,y]
90
+ end
91
+ end
92
+ end
93
+
94
+ position = Point.move_to x: 1,y: 2
95
+ position.should be == [1,2]
96
+
97
+ position = Point.move_to y: 2, x: 1
98
+ position.should be == [1,2]
99
+ end
100
+ end
101
+
102
+ describe 'ArgumentError when given undefined args' do
103
+ specify %q{
104
+ class People
105
+ extend NamedParameter
106
+
107
+ class << self
108
+ named def say(phrase)
109
+ end
110
+ end
111
+ end
112
+
113
+ People.say phrase: "hi!",undefined: "test"
114
+ #=> ArgumentError
115
+ } do
116
+ class People
117
+ extend NamedParameter
118
+
119
+ class << self
120
+ named def say(phrase)
121
+ end
122
+ end
123
+ end
124
+
125
+ lambda{People.say(phrase: "hi!",undefined: "hugo")}.should raise_error ArgumentError, /'undefined'[\w\s]*'say'/
126
+ end
127
+ end
128
+
129
+ describe 'ArgumentError when not given required args' do
130
+ specify %q{
131
+ class People
132
+ extend NamedParameter
133
+
134
+ class << self
135
+ named def say(phrase)
136
+ end
137
+ end
138
+ end
139
+
140
+ People.say
141
+ #=> ArgumentError
142
+ } do
143
+ class People
144
+ extend NamedParameter
145
+
146
+ class << self
147
+ named def say(phrase)
148
+ end
149
+ end
150
+ end
151
+
152
+ lambda {People.say}.should raise_error ArgumentError, /'phrase'[\w\s]*'say'/
153
+ end
154
+ end
155
+
156
+ describe 'ArgumentError when given a non Hash argument' do
157
+ specify %q{
158
+ class People
159
+ extend NamedParameter
160
+
161
+ class << self
162
+ named def say(phrase)
163
+ end
164
+ end
165
+ end
166
+
167
+ People.say
168
+ #=> ArgumentError
169
+ } do
170
+ class People
171
+ extend NamedParameter
172
+
173
+ class << self
174
+ named def say(phrase)
175
+ end
176
+ end
177
+ end
178
+
179
+ lambda {People.say("non Hash argument")}.should raise_error ArgumentError, /"non Hash argument"[\w\s]*'say'/
180
+ end
181
+ end
182
+ end
183
+
184
+ describe "no named method" do
185
+ it "can be called with normal parameters" do
186
+ class People
187
+ class << self
188
+ def no_named_say(phrase)
189
+ phrase
190
+ end
191
+ end
192
+ end
193
+
194
+ phrase = People.no_named_say "Hi!"
195
+ phrase.should be == "Hi!"
196
+ end
197
+ end
198
+ end
199
+ end
@@ -0,0 +1,166 @@
1
+ require 'spec_helper'
2
+
3
+ describe "inline named" do
4
+ describe "individual named method feature" do
5
+ describe "becomes possible:" do
6
+ describe 'Named Parameter' do
7
+ specify %q{
8
+ class People
9
+ extend NamedParameter
10
+
11
+ named def say(phrase)
12
+ phrase
13
+ end
14
+ end
15
+
16
+ People.new.say phrase: "Hi!"
17
+ # => "Hi!"
18
+ } do
19
+ class People
20
+ extend NamedParameter
21
+
22
+ named def say(phrase)
23
+ phrase
24
+ end
25
+ end
26
+
27
+ phrase = People.new.say phrase: "Hi!"
28
+ phrase.should be == "Hi!"
29
+ end
30
+ end
31
+
32
+ describe 'Optional Named Parameter' do
33
+ specify %q{
34
+ class People
35
+ extend NamedParameter
36
+
37
+ named def say(phrase="I'm mute")
38
+ phrase
39
+ end
40
+ end
41
+
42
+ People.new.say
43
+ # => "I'm mute"
44
+ } do
45
+ class People
46
+ extend NamedParameter
47
+
48
+ named def say(phrase="I'm mute")
49
+ phrase
50
+ end
51
+ end
52
+
53
+ phrase = People.new.say
54
+ phrase.should be == "I'm mute"
55
+ end
56
+ end
57
+
58
+ describe 'Multiple Named Parameter (in any order)' do
59
+ specify %q{
60
+ class Point
61
+ extend NamedParameter
62
+
63
+ named def move_to(x,y)
64
+ [x,y]
65
+ end
66
+ end
67
+
68
+ Point.new.move_to x: 1,y: 2
69
+ # => [1,2]
70
+
71
+ Point.new.move_to y: 2, x: 1
72
+ # => [1,2]
73
+ } do
74
+ class Point
75
+ extend NamedParameter
76
+
77
+ named def move_to(x,y)
78
+ [x,y]
79
+ end
80
+ end
81
+
82
+ position = Point.new.move_to x: 1,y: 2
83
+ position.should be == [1,2]
84
+
85
+ position = Point.new.move_to y: 2, x: 1
86
+ position.should be == [1,2]
87
+ end
88
+ end
89
+
90
+ describe 'ArgumentError when given undefined args' do
91
+ specify %q{
92
+ class People
93
+ extend NamedParameter
94
+ named def say(phrase)
95
+ end
96
+ end
97
+
98
+ People.new.say phrase: "hi!",undefined: "test"
99
+ #=> ArgumentError
100
+ } do
101
+ class People
102
+ named def say(phrase)
103
+ end
104
+ end
105
+
106
+ lambda{People.new.say(phrase: "hi!",undefined: "hugo")}.should raise_error ArgumentError, /'undefined'[\w\s]*'say'/
107
+ end
108
+ end
109
+
110
+ describe 'ArgumentError when not given required args' do
111
+ specify %q{
112
+ class People
113
+ extend NamedParameter
114
+ named def say(phrase)
115
+ end
116
+ end
117
+
118
+ People.new.say
119
+ #=> ArgumentError
120
+ } do
121
+ class People
122
+ extend NamedParameter
123
+ named def say(phrase)
124
+ end
125
+ end
126
+
127
+ lambda {People.new.say}.should raise_error ArgumentError, /'phrase'[\w\s]*'say'/
128
+ end
129
+ end
130
+
131
+ describe 'ArgumentError when given a non Hash argument' do
132
+ specify %q{
133
+ class People
134
+ extend NamedParameter
135
+ named def say(phrase)
136
+ end
137
+ end
138
+
139
+ People.new.say
140
+ #=> ArgumentError
141
+ } do
142
+ class People
143
+ extend NamedParameter
144
+ named def say(phrase)
145
+ end
146
+ end
147
+
148
+ lambda {People.new.say("non Hash argument")}.should raise_error ArgumentError, /"non Hash argument"[\w\s]*'say'/
149
+ end
150
+ end
151
+ end
152
+
153
+ describe "no named method" do
154
+ it "can be called with normal parameters" do
155
+ class People
156
+ def no_named_say(phrase)
157
+ phrase
158
+ end
159
+ end
160
+
161
+ phrase = People.new.no_named_say "Hi!"
162
+ phrase.should be == "Hi!"
163
+ end
164
+ end
165
+ end
166
+ end