Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mruby
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
mruby
Commits
fe5324bd
Commit
fe5324bd
authored
Jul 19, 2013
by
Ryan Scott
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Wrote tests around attr, attr_reader, attr_writer, attr_accessor
parent
958d5b76
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
193 additions
and
7 deletions
+193
-7
mrblib/class.rb
mrblib/class.rb
+13
-7
test/t/module.rb
test/t/module.rb
+180
-0
No files found.
mrblib/class.rb
View file @
fe5324bd
class
Module
class
Module
# 15.2.2.4.13
# 15.2.2.4.13
def
attr_reader
(
*
names
)
def
attr_reader
(
*
names
)
names
.
each
{
|
name
|
names
.
each
do
|
name
|
name2
=
(
'@'
+
name
.
to_s
).
intern
name
=
name
.
to_s
raise
(
NameError
,
"
#{
name
.
inspect
}
is not allowed as an instance variable name"
)
if
name
.
include?
(
'@'
)
||
name
.
include?
(
'?'
)
||
name
.
include?
(
'$'
)
name2
=
(
'@'
+
name
).
intern
define_method
(
name
){
self
.
instance_variable_get
(
name2
)}
define_method
(
name
){
self
.
instance_variable_get
(
name2
)}
}
end
end
end
# 15.2.2.4.14
# 15.2.2.4.14
def
attr_writer
(
*
names
)
def
attr_writer
(
*
names
)
names
.
each
{
|
name
|
names
.
each
do
|
name
|
name2
=
(
'@'
+
name
.
to_s
).
intern
name
=
name
.
to_s
name
=
(
name
.
to_s
+
"="
).
intern
raise
(
NameError
,
"
#{
name
.
inspect
}
is not allowed as an instance variable name"
)
if
name
.
include?
(
'@'
)
||
name
.
include?
(
'?'
)
||
name
.
include?
(
'$'
)
name2
=
(
'@'
+
name
).
intern
name
=
(
name
+
"="
).
intern
define_method
(
name
){
|
v
|
self
.
instance_variable_set
(
name2
,
v
)}
define_method
(
name
){
|
v
|
self
.
instance_variable_set
(
name2
,
v
)}
}
end
end
end
# 15.2.2.4.12
# 15.2.2.4.12
def
attr_accessor
(
*
names
)
def
attr_accessor
(
*
names
)
...
...
test/t/module.rb
View file @
fe5324bd
...
@@ -37,6 +37,186 @@ assert('Module#append_features', '15.2.2.4.10') do
...
@@ -37,6 +37,186 @@ assert('Module#append_features', '15.2.2.4.10') do
assert_equal
Test4AppendFeatures2
.
const_get
(
:Const4AppendFeatures2
),
Test4AppendFeatures2
assert_equal
Test4AppendFeatures2
.
const_get
(
:Const4AppendFeatures2
),
Test4AppendFeatures2
end
end
assert
(
'Module#attr'
,
'15.2.2.4.11'
)
do
%w[
foo?
@foo
@@foo
$foo
]
.
each
do
|
name
|
assert_raise
(
NameError
)
do
module
NameTest
;
end
NameTest
.
module_eval
{
attr_reader
name
.
to_sym
}
end
end
class
AttrTest
class
<<
self
attr
:cattr
def
cattr_val
@cattr
end
def
cattr_val
=
(
val
)
@cattr
=
val
end
end
attr
:iattr
def
iattr_val
@iattr
end
def
iattr_val
=
(
val
)
@iattr
=
val
end
end
test
=
AttrTest
.
new
assert_true
AttrTest
.
respond_to?
(
:cattr
)
assert_true
test
.
respond_to?
(
:iattr
)
assert_false
AttrTest
.
respond_to?
(
:vattr
=
)
assert_false
test
.
respond_to?
(
:iattr
=
)
test
.
iattr_val
=
'test'
assert_equal
'test'
,
test
.
iattr
AttrTest
.
cattr_val
=
'test'
assert_equal
'test'
,
AttrTest
.
cattr
end
assert
(
'Module#attr_accessor'
,
'15.2.2.4.12'
)
do
%w[
foo?
@foo
@@foo
$foo
]
.
each
do
|
name
|
assert_raise
(
NameError
)
do
module
NameTest
;
end
NameTest
.
module_eval
{
attr_reader
name
.
to_sym
}
end
end
class
AttrTestAccessor
class
<<
self
attr_accessor
:cattr
end
attr_accessor
:iattr
,
'iattr2'
end
attr_instance
=
AttrTestAccessor
.
new
assert_true
AttrTestAccessor
.
respond_to?
(
:cattr
=
)
assert_true
attr_instance
.
respond_to?
(
:iattr
=
)
assert_true
attr_instance
.
respond_to?
(
:iattr2
=
)
assert_true
AttrTestAccessor
.
respond_to?
(
:cattr
)
assert_true
attr_instance
.
respond_to?
(
:iattr
)
assert_true
attr_instance
.
respond_to?
(
:iattr2
)
attr_instance
.
iattr
=
'test'
assert_equal
'test'
,
attr_instance
.
iattr
AttrTestAccessor
.
cattr
=
'test'
assert_equal
'test'
,
AttrTestAccessor
.
cattr
end
assert
(
'Module#attr_reader'
,
'15.2.2.4.13'
)
do
%w[
foo?
@foo
@@foo
$foo
]
.
each
do
|
name
|
assert_raise
(
NameError
)
do
module
NameTest
;
end
NameTest
.
module_eval
{
attr_reader
name
.
to_sym
}
end
end
class
AttrTestReader
class
<<
self
attr_reader
:cattr
def
cattr_val
@cattr
end
def
cattr_val
=
(
val
)
@cattr
=
val
end
end
attr_reader
:iattr
,
'iattr2'
def
iattr_val
@iattr
end
def
iattr_val
=
(
val
)
@iattr
=
val
end
end
attr_instance
=
AttrTestReader
.
new
assert_true
AttrTestReader
.
respond_to?
(
:cattr
)
assert_true
attr_instance
.
respond_to?
(
:iattr
)
assert_true
attr_instance
.
respond_to?
(
:iattr2
)
assert_false
AttrTestReader
.
respond_to?
(
:cattr
=
)
assert_false
attr_instance
.
respond_to?
(
:iattr
=
)
assert_false
attr_instance
.
respond_to?
(
:iattr2
=
)
attr_instance
.
iattr_val
=
'test'
assert_equal
'test'
,
attr_instance
.
iattr
AttrTestReader
.
cattr_val
=
'test'
assert_equal
'test'
,
AttrTestReader
.
cattr
end
assert
(
'Module#attr_writer'
,
'15.2.2.4.14'
)
do
%w[
foo?
@foo
@@foo
$foo
]
.
each
do
|
name
|
assert_raise
(
NameError
)
do
module
NameTest
;
end
NameTest
.
module_eval
{
attr_reader
name
.
to_sym
}
end
end
class
AttrTestWriter
class
<<
self
attr_writer
:cattr
def
cattr_val
@cattr
end
def
cattr_val
=
(
val
)
@cattr
=
val
end
end
attr_writer
:iattr
,
'iattr2'
def
iattr_val
@iattr
end
def
iattr_val
=
(
val
)
@iattr
=
val
end
end
attr_instance
=
AttrTestWriter
.
new
assert_true
AttrTestWriter
.
respond_to?
(
:cattr
=
)
assert_true
attr_instance
.
respond_to?
(
:iattr
=
)
assert_true
attr_instance
.
respond_to?
(
:iattr2
=
)
assert_false
AttrTestWriter
.
respond_to?
(
:cattr
)
assert_false
attr_instance
.
respond_to?
(
:iattr
)
assert_false
attr_instance
.
respond_to?
(
:iattr2
)
attr_instance
.
iattr
=
'test'
assert_equal
'test'
,
attr_instance
.
iattr_val
AttrTestWriter
.
cattr
=
'test'
assert_equal
'test'
,
AttrTestWriter
.
cattr_val
end
assert
(
'Module#class_eval'
,
'15.2.2.4.15'
)
do
assert
(
'Module#class_eval'
,
'15.2.2.4.15'
)
do
class
Test4ClassEval
class
Test4ClassEval
@a
=
11
@a
=
11
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment