named_parameter 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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