rspec-i18n 0.2.1 → 1.0.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/.gitignore +13 -0
- data/History.rdoc +17 -2
- data/License.txt +1 -1
- data/README.rdoc +17 -6
- data/Rakefile +6 -4
- data/TODO.txt +5 -5
- data/VERSION.yml +3 -3
- data/examples/i18n/pt/person_spec.rb +117 -12
- data/lib/spec-i18n/command_line/language_help_formatter.rb +67 -14
- data/lib/spec-i18n/command_line/options.rb +18 -17
- data/lib/spec-i18n/dsl/main.rb +1 -1
- data/lib/spec-i18n/example/before_and_after_hooks.rb +14 -9
- data/lib/spec-i18n/example/example_group_methods.rb +1 -1
- data/lib/spec-i18n/example/subject.rb +29 -0
- data/lib/spec-i18n/example.rb +2 -1
- data/lib/spec-i18n/expectations/extensions/kernel.rb +1 -1
- data/lib/spec-i18n/languages.yml +40 -3
- data/lib/spec-i18n/matchers/be.rb +19 -0
- data/lib/spec-i18n/matchers/method_missing.rb +25 -0
- data/lib/spec-i18n/matchers/register_all_matchers.rb +10 -0
- data/lib/spec-i18n/matchers/translate_basic_matchers.rb +28 -0
- data/lib/spec-i18n/matchers.rb +6 -0
- data/lib/spec-i18n/parser/natural_language.rb +19 -27
- data/lib/spec-i18n/runner/configuration.rb +3 -0
- data/lib/spec-i18n/spec_language.rb +3 -0
- data/lib/spec-i18n.rb +2 -1
- data/rspec-i18n.gemspec +57 -18
- data/spec/spec-i18n/command_line/language_help_formatter_spec.rb +73 -4
- data/spec/spec-i18n/dsl/main_spec.rb +1 -1
- data/spec/spec-i18n/example/subject_spec.rb +125 -0
- data/spec/spec-i18n/expectations/kernel_spec.rb +1 -0
- data/spec/spec-i18n/matchers/be_close_spec.rb +40 -0
- data/spec/spec-i18n/matchers/be_instance_of_spec.rb +32 -0
- data/spec/spec-i18n/matchers/be_kind_of_spec.rb +37 -0
- data/spec/spec-i18n/matchers/be_spec.rb +61 -0
- data/spec/spec-i18n/matchers/eql_spec.rb +33 -0
- data/spec/spec-i18n/matchers/equal_spec.rb +26 -0
- data/spec/spec-i18n/matchers/exist_spec.rb +45 -0
- data/spec/spec-i18n/matchers/have_spec.rb +61 -0
- data/spec/spec-i18n/matchers/include_spec.rb +34 -0
- data/spec/spec-i18n/matchers/match_spec.rb +36 -0
- data/spec/spec-i18n/matchers/raise_error_spec.rb +25 -0
- data/spec/spec-i18n/matchers/register_all_matchers_spec.rb +17 -0
- data/spec/spec-i18n/matchers/satisfy_spec.rb +28 -0
- data/spec/spec-i18n/parser/natural_language_spec.rb +42 -58
- data/spec/spec-i18n/spec_examples/pt/pessoa_spec.rb +153 -0
- data/spec/spec-i18n/spec_language_spec.rb +6 -0
- data/spec/spec.opts +1 -1
- data/spec/spec_helper.rb +44 -0
- metadata +66 -13
- data/pkg/rspec-i18n-0.1.0.gem +0 -0
- data/pkg/rspec-i18n-0.2.0.gem +0 -0
- data/spec/spec-i18n/example_spec.rb +0 -47
@@ -0,0 +1,153 @@
|
|
1
|
+
require 'spec-i18n'
|
2
|
+
|
3
|
+
Spec::Runner.configure do |config|
|
4
|
+
config.spec_language :pt
|
5
|
+
end
|
6
|
+
|
7
|
+
class Pessoa
|
8
|
+
attr_accessor :idade
|
9
|
+
def initialize(nome, sobrenome, opcoes={})
|
10
|
+
@nome = nome
|
11
|
+
@sobrenome = sobrenome
|
12
|
+
@idade = opcoes[:idade]
|
13
|
+
end
|
14
|
+
|
15
|
+
def nome_completo
|
16
|
+
"#{@nome} #{@sobrenome}"
|
17
|
+
end
|
18
|
+
|
19
|
+
def maior_de_idade?
|
20
|
+
return true if @idade >= 18
|
21
|
+
false
|
22
|
+
end
|
23
|
+
|
24
|
+
def pronto_para_votar?
|
25
|
+
maior_de_idade?
|
26
|
+
end
|
27
|
+
|
28
|
+
def pronto_para_dirigir?
|
29
|
+
maior_de_idade?
|
30
|
+
end
|
31
|
+
|
32
|
+
def autorizado_a_beber?
|
33
|
+
maior_de_idade?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# Silly Tests for specifying the library in portuguese language
|
38
|
+
descreva Pessoa do
|
39
|
+
|
40
|
+
antes(:de_todos) do
|
41
|
+
@pessoa = Pessoa.new("Homer", "Simpson")
|
42
|
+
end
|
43
|
+
|
44
|
+
antes(:de_cada) do
|
45
|
+
@pessoas = [@pessoa]
|
46
|
+
end
|
47
|
+
|
48
|
+
depois(:de_todos) do
|
49
|
+
@outras_pessoas = @pessoas.dup
|
50
|
+
end
|
51
|
+
|
52
|
+
depois(:de_cada) do
|
53
|
+
@outras_pessoas = []
|
54
|
+
end
|
55
|
+
|
56
|
+
depois(:suite) do
|
57
|
+
@pessoas = []
|
58
|
+
end
|
59
|
+
|
60
|
+
exemplo 'deve ser uma instancia da classe Pessoa' do
|
61
|
+
@pessoa.deve ser_instancia_de(Pessoa)
|
62
|
+
end
|
63
|
+
|
64
|
+
exemplo 'deve incluir uma pessoa' do
|
65
|
+
@pessoas.deve incluir(@pessoa)
|
66
|
+
end
|
67
|
+
|
68
|
+
exemplo 'deve ser do tipo Pessoa' do
|
69
|
+
@pessoa.deve ser_do_tipo(Pessoa)
|
70
|
+
end
|
71
|
+
|
72
|
+
exemplo 'deve ter pelo menos uma pessoa' do
|
73
|
+
@pessoas.deve ter_no_minimo(1).items
|
74
|
+
end
|
75
|
+
|
76
|
+
exemplo 'deve ter exatamente duas pessoas' do
|
77
|
+
@pessoas << @pessoa
|
78
|
+
@pessoas.deve ter_exatamente(2).items
|
79
|
+
end
|
80
|
+
|
81
|
+
exemplo 'deve ter no maximo tres pessoas' do
|
82
|
+
@pessoas = []
|
83
|
+
@pessoas.deve ter_no_maximo(3).items
|
84
|
+
end
|
85
|
+
|
86
|
+
contexto "Nome completo" do
|
87
|
+
|
88
|
+
antes(:de_cada_exemplo) do
|
89
|
+
@pessoa = Pessoa.new("Tomás", "D'Stefano")
|
90
|
+
end
|
91
|
+
|
92
|
+
exemplo "deve retornar o nome completo" do
|
93
|
+
@pessoa.nome_completo.deve ==("Tomás D'Stefano")
|
94
|
+
end
|
95
|
+
|
96
|
+
exemplo 'nome completo não pode ser nulo' do
|
97
|
+
@pessoa.nome_completo.nao_deve ser_igual_a(nil)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
contexto "a idade" do
|
103
|
+
|
104
|
+
antes(:de_todos_exemplos) do
|
105
|
+
@pessoa = Pessoa.new("Aaromn", "Monkey", :idade => 20)
|
106
|
+
end
|
107
|
+
|
108
|
+
especificar "deve ser opcional" do
|
109
|
+
@pessoa.idade.deve ser_igual_a(20)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
contexto 'maior de idade' do
|
114
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 18) }
|
115
|
+
|
116
|
+
exemplo "deve estar pronto para votar" do
|
117
|
+
deve estar_pronto_para_votar
|
118
|
+
end
|
119
|
+
|
120
|
+
exemplo "deve ser maior de idade" do
|
121
|
+
deve ser_maior_de_idade
|
122
|
+
end
|
123
|
+
|
124
|
+
exemplo "deve estar pronto para dirigir" do
|
125
|
+
assunto.deve estar_pronto_para_dirigir
|
126
|
+
end
|
127
|
+
|
128
|
+
exemplo "deve estar autorizado para beber =D" do
|
129
|
+
assunto.deve estar_autorizado_a_beber
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
contexto 'menor de idade' do
|
134
|
+
assunto { Pessoa.new('Aaron', 'Monkey', :idade => 17) }
|
135
|
+
|
136
|
+
exemplo "nao deve estar pronto para votar" do
|
137
|
+
nao_deve estar_pronto_para_votar
|
138
|
+
end
|
139
|
+
|
140
|
+
exemplo "nao deve ser maior de idade" do
|
141
|
+
nao_deve ser_maior_de_idade
|
142
|
+
end
|
143
|
+
|
144
|
+
exemplo "nao deve estar pronto para votar" do
|
145
|
+
assunto.nao_deve estar_pronto_para_votar
|
146
|
+
end
|
147
|
+
|
148
|
+
exemplo "nao deve estar autorizado para beber =(" do
|
149
|
+
assunto.nao_deve estar_autorizado_a_beber
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
@@ -13,4 +13,10 @@ describe SpecI18n do
|
|
13
13
|
spec_language.should == language
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
it "should assign the natural language" do
|
18
|
+
language = 'pt'
|
19
|
+
Spec::Runner.configuration.spec_language(language)
|
20
|
+
natural_language.keywords.should == Parser::NaturalLanguage.get(spec_language).keywords
|
21
|
+
end
|
16
22
|
end
|
data/spec/spec.opts
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -5,6 +5,28 @@ require 'spec-i18n'
|
|
5
5
|
|
6
6
|
$:.unshift(File.dirname(__FILE__), '../lib')
|
7
7
|
|
8
|
+
include SpecI18n
|
9
|
+
|
10
|
+
def portuguese_language(expected)
|
11
|
+
pt = Parser::NaturalLanguage.get("pt")
|
12
|
+
SpecI18n.stub!(:natural_language).and_return(pt)
|
13
|
+
|
14
|
+
expected['matchers']['be'] = 'ser|estar' unless expected['matchers'].nil?
|
15
|
+
|
16
|
+
predicade = pt.stub(:keywords).and_return(expected)
|
17
|
+
expected
|
18
|
+
end
|
19
|
+
|
20
|
+
def spanish_language(expected)
|
21
|
+
es = Parser::NaturalLanguage.get("es")
|
22
|
+
SpecI18n.stub!(:natural_language).and_return(es)
|
23
|
+
|
24
|
+
expected['matchers']['be'] = 'ser|estar' unless expected['matchers'].nil?
|
25
|
+
|
26
|
+
predicade = es.stub(:keywords).and_return(expected)
|
27
|
+
expected
|
28
|
+
end
|
29
|
+
|
8
30
|
def with_sandboxed_options
|
9
31
|
attr_reader :options
|
10
32
|
|
@@ -38,3 +60,25 @@ def with_sandboxed_config
|
|
38
60
|
|
39
61
|
yield
|
40
62
|
end
|
63
|
+
|
64
|
+
module Spec
|
65
|
+
module Matchers
|
66
|
+
def fail_with(message)
|
67
|
+
raise_error(Spec::Expectations::ExpectationNotMetError, message)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
module Spec
|
73
|
+
module Example
|
74
|
+
class ExampleGroupDouble < ExampleGroup
|
75
|
+
::Spec::Runner.options.remove_example_group self
|
76
|
+
def register_example_group(klass)
|
77
|
+
#ignore
|
78
|
+
end
|
79
|
+
def initialize(proxy=nil, &block)
|
80
|
+
super(proxy || ExampleProxy.new, &block)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-i18n
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas D'Stefano
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-19 00:00:00 -02:00
|
13
13
|
default_executable: rspec-i18n
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,17 +20,27 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.
|
23
|
+
version: 1.3.0
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
26
|
+
name: terminal-table
|
27
27
|
type: :runtime
|
28
28
|
version_requirement:
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.4.2
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: term-ansicolor
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - "="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.0.4
|
34
44
|
version:
|
35
45
|
- !ruby/object:Gem::Dependency
|
36
46
|
name: rspec
|
@@ -43,14 +53,24 @@ dependencies:
|
|
43
53
|
version: 1.2.9
|
44
54
|
version:
|
45
55
|
- !ruby/object:Gem::Dependency
|
46
|
-
name:
|
56
|
+
name: terminal-table
|
47
57
|
type: :development
|
48
58
|
version_requirement:
|
49
59
|
version_requirements: !ruby/object:Gem::Requirement
|
50
60
|
requirements:
|
51
61
|
- - ">="
|
52
62
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
63
|
+
version: 1.4.2
|
64
|
+
version:
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: term-ansicolor
|
67
|
+
type: :development
|
68
|
+
version_requirement:
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.0.4
|
54
74
|
version:
|
55
75
|
description: A internacionalization tool written in Ruby for the Rspec Framework
|
56
76
|
email: tomasdestefi@gmail.com
|
@@ -61,6 +81,7 @@ extensions: []
|
|
61
81
|
extra_rdoc_files:
|
62
82
|
- README.rdoc
|
63
83
|
files:
|
84
|
+
- .gitignore
|
64
85
|
- History.rdoc
|
65
86
|
- License.txt
|
66
87
|
- README.rdoc
|
@@ -78,18 +99,22 @@ files:
|
|
78
99
|
- lib/spec-i18n/example.rb
|
79
100
|
- lib/spec-i18n/example/before_and_after_hooks.rb
|
80
101
|
- lib/spec-i18n/example/example_group_methods.rb
|
102
|
+
- lib/spec-i18n/example/subject.rb
|
81
103
|
- lib/spec-i18n/expectations.rb
|
82
104
|
- lib/spec-i18n/expectations/extensions.rb
|
83
105
|
- lib/spec-i18n/expectations/extensions/kernel.rb
|
84
106
|
- lib/spec-i18n/languages.yml
|
107
|
+
- lib/spec-i18n/matchers.rb
|
108
|
+
- lib/spec-i18n/matchers/be.rb
|
109
|
+
- lib/spec-i18n/matchers/method_missing.rb
|
110
|
+
- lib/spec-i18n/matchers/register_all_matchers.rb
|
111
|
+
- lib/spec-i18n/matchers/translate_basic_matchers.rb
|
85
112
|
- lib/spec-i18n/parser.rb
|
86
113
|
- lib/spec-i18n/parser/natural_language.rb
|
87
114
|
- lib/spec-i18n/platform.rb
|
88
115
|
- lib/spec-i18n/runner.rb
|
89
116
|
- lib/spec-i18n/runner/configuration.rb
|
90
117
|
- lib/spec-i18n/spec_language.rb
|
91
|
-
- pkg/rspec-i18n-0.1.0.gem
|
92
|
-
- pkg/rspec-i18n-0.2.0.gem
|
93
118
|
- rspec-i18n.gemspec
|
94
119
|
- spec/spec-i18n/command_line/language_help_formatter_spec.rb
|
95
120
|
- spec/spec-i18n/command_line/main_spec.rb
|
@@ -97,11 +122,25 @@ files:
|
|
97
122
|
- spec/spec-i18n/dsl/main_spec.rb
|
98
123
|
- spec/spec-i18n/example/before_and_after_hooks_spec.rb
|
99
124
|
- spec/spec-i18n/example/example_group_methods_spec.rb
|
100
|
-
- spec/spec-i18n/
|
125
|
+
- spec/spec-i18n/example/subject_spec.rb
|
101
126
|
- spec/spec-i18n/expectations/kernel_spec.rb
|
127
|
+
- spec/spec-i18n/matchers/be_close_spec.rb
|
128
|
+
- spec/spec-i18n/matchers/be_instance_of_spec.rb
|
129
|
+
- spec/spec-i18n/matchers/be_kind_of_spec.rb
|
130
|
+
- spec/spec-i18n/matchers/be_spec.rb
|
131
|
+
- spec/spec-i18n/matchers/eql_spec.rb
|
132
|
+
- spec/spec-i18n/matchers/equal_spec.rb
|
133
|
+
- spec/spec-i18n/matchers/exist_spec.rb
|
134
|
+
- spec/spec-i18n/matchers/have_spec.rb
|
135
|
+
- spec/spec-i18n/matchers/include_spec.rb
|
136
|
+
- spec/spec-i18n/matchers/match_spec.rb
|
137
|
+
- spec/spec-i18n/matchers/raise_error_spec.rb
|
138
|
+
- spec/spec-i18n/matchers/register_all_matchers_spec.rb
|
139
|
+
- spec/spec-i18n/matchers/satisfy_spec.rb
|
102
140
|
- spec/spec-i18n/parser/natural_language_spec.rb
|
103
141
|
- spec/spec-i18n/runner/configuration_spec.rb
|
104
142
|
- spec/spec-i18n/runner/runner_spec.rb
|
143
|
+
- spec/spec-i18n/spec_examples/pt/pessoa_spec.rb
|
105
144
|
- spec/spec-i18n/spec_language_spec.rb
|
106
145
|
- spec/spec.opts
|
107
146
|
- spec/spec_helper.rb
|
@@ -114,9 +153,9 @@ post_install_message: |
|
|
114
153
|
--------------------------------------------------------------------------------
|
115
154
|
U P G R A D I N G
|
116
155
|
|
117
|
-
Thank you for installing rspec-i18n-0.
|
156
|
+
Thank you for installing rspec-i18n-1.0.0
|
118
157
|
Please be sure to read http://wiki.github.com/tomas-stefano/rspec-i18n/upgrading
|
119
|
-
for
|
158
|
+
for information about this release.
|
120
159
|
|
121
160
|
Remember: 'TDD is a muscle. You have to exercise it.' =) (Brian Liles)
|
122
161
|
|
@@ -152,11 +191,25 @@ test_files:
|
|
152
191
|
- spec/spec-i18n/dsl/main_spec.rb
|
153
192
|
- spec/spec-i18n/example/before_and_after_hooks_spec.rb
|
154
193
|
- spec/spec-i18n/example/example_group_methods_spec.rb
|
155
|
-
- spec/spec-i18n/
|
194
|
+
- spec/spec-i18n/example/subject_spec.rb
|
156
195
|
- spec/spec-i18n/expectations/kernel_spec.rb
|
196
|
+
- spec/spec-i18n/matchers/be_close_spec.rb
|
197
|
+
- spec/spec-i18n/matchers/be_instance_of_spec.rb
|
198
|
+
- spec/spec-i18n/matchers/be_kind_of_spec.rb
|
199
|
+
- spec/spec-i18n/matchers/be_spec.rb
|
200
|
+
- spec/spec-i18n/matchers/eql_spec.rb
|
201
|
+
- spec/spec-i18n/matchers/equal_spec.rb
|
202
|
+
- spec/spec-i18n/matchers/exist_spec.rb
|
203
|
+
- spec/spec-i18n/matchers/have_spec.rb
|
204
|
+
- spec/spec-i18n/matchers/include_spec.rb
|
205
|
+
- spec/spec-i18n/matchers/match_spec.rb
|
206
|
+
- spec/spec-i18n/matchers/raise_error_spec.rb
|
207
|
+
- spec/spec-i18n/matchers/register_all_matchers_spec.rb
|
208
|
+
- spec/spec-i18n/matchers/satisfy_spec.rb
|
157
209
|
- spec/spec-i18n/parser/natural_language_spec.rb
|
158
210
|
- spec/spec-i18n/runner/configuration_spec.rb
|
159
211
|
- spec/spec-i18n/runner/runner_spec.rb
|
212
|
+
- spec/spec-i18n/spec_examples/pt/pessoa_spec.rb
|
160
213
|
- spec/spec-i18n/spec_language_spec.rb
|
161
214
|
- spec/spec_helper.rb
|
162
215
|
- examples/i18n/pt/person_spec.rb
|
data/pkg/rspec-i18n-0.1.0.gem
DELETED
Binary file
|
data/pkg/rspec-i18n-0.2.0.gem
DELETED
Binary file
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'spec-i18n'
|
2
|
-
|
3
|
-
Spec::Runner.configure do |config|
|
4
|
-
config.spec_language :pt
|
5
|
-
end
|
6
|
-
|
7
|
-
class Pessoa
|
8
|
-
attr_reader :idade
|
9
|
-
def initialize(nome, sobrenome, idade=0)
|
10
|
-
@nome = nome
|
11
|
-
@sobrenome = sobrenome
|
12
|
-
@idade = idade
|
13
|
-
end
|
14
|
-
|
15
|
-
def nome_completo
|
16
|
-
"#{@nome} #{@sobrenome}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# Silly Tests
|
21
|
-
descreva Pessoa do
|
22
|
-
|
23
|
-
antes(:de_todos) do
|
24
|
-
@pessoa = Pessoa.new("Tomás", "D'Stefano")
|
25
|
-
end
|
26
|
-
|
27
|
-
antes(:de_cada) do
|
28
|
-
@pessoas = [@pessoa]
|
29
|
-
end
|
30
|
-
|
31
|
-
depois(:de_todos) do
|
32
|
-
@outras_pessoas = @pessoas.dup
|
33
|
-
end
|
34
|
-
|
35
|
-
depois(:de_cada) do
|
36
|
-
@outras_pessoas = []
|
37
|
-
end
|
38
|
-
|
39
|
-
exemplo "deve retornar o nome completo" do
|
40
|
-
@pessoa.nome_completo.deve == "Tomás D'Stefano"
|
41
|
-
end
|
42
|
-
|
43
|
-
especificar "a idade é opcional" do
|
44
|
-
Pessoa.new("Aaromn", "Monkey", 20).idade.deve == 20
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|