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