Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
84268970
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
84268970
编写于
7月 29, 2014
作者:
R
Rafael Mendonça França
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #16334 from akshay-vishnoi/array-tests
Move array test files under array
上级
aade0a04
00979fdb
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
495 addition
and
0 deletion
+495
-0
activesupport/test/core_ext/array/access_test.rb
activesupport/test/core_ext/array/access_test.rb
+30
-0
activesupport/test/core_ext/array/conversions_test.rb
activesupport/test/core_ext/array/conversions_test.rb
+211
-0
activesupport/test/core_ext/array/extract_options_test.rb
activesupport/test/core_ext/array/extract_options_test.rb
+45
-0
activesupport/test/core_ext/array/grouping_test.rb
activesupport/test/core_ext/array/grouping_test.rb
+120
-0
activesupport/test/core_ext/array/prepend_append_test.rb
activesupport/test/core_ext/array/prepend_append_test.rb
+12
-0
activesupport/test/core_ext/array/wrap_test.rb
activesupport/test/core_ext/array/wrap_test.rb
+77
-0
未找到文件。
activesupport/test/core_ext/array/access_test.rb
0 → 100644
浏览文件 @
84268970
require
'abstract_unit'
require
'active_support/core_ext/array'
class
AccessTest
<
ActiveSupport
::
TestCase
def
test_from
assert_equal
%w( a b c d )
,
%w( a b c d )
.
from
(
0
)
assert_equal
%w( c d )
,
%w( a b c d )
.
from
(
2
)
assert_equal
%w()
,
%w( a b c d )
.
from
(
10
)
assert_equal
%w( d e )
,
%w( a b c d e )
.
from
(
-
2
)
assert_equal
%w()
,
%w( a b c d e )
.
from
(
-
10
)
end
def
test_to
assert_equal
%w( a )
,
%w( a b c d )
.
to
(
0
)
assert_equal
%w( a b c )
,
%w( a b c d )
.
to
(
2
)
assert_equal
%w( a b c d )
,
%w( a b c d )
.
to
(
10
)
assert_equal
%w( a b c )
,
%w( a b c d )
.
to
(
-
2
)
assert_equal
%w()
,
%w( a b c )
.
to
(
-
10
)
end
def
test_specific_accessor
array
=
(
1
..
42
).
to_a
assert_equal
array
[
1
],
array
.
second
assert_equal
array
[
2
],
array
.
third
assert_equal
array
[
3
],
array
.
fourth
assert_equal
array
[
4
],
array
.
fifth
assert_equal
array
[
41
],
array
.
forty_two
end
end
activesupport/test/core_ext/array
_ext
_test.rb
→
activesupport/test/core_ext/array
/conversions
_test.rb
浏览文件 @
84268970
...
...
@@ -2,60 +2,9 @@
require
'active_support/core_ext/array'
require
'active_support/core_ext/big_decimal'
require
'active_support/core_ext/hash'
require
'active_support/core_ext/object/conversions'
require
'active_support/core_ext/string'
class
ArrayExtAccessTests
<
ActiveSupport
::
TestCase
def
test_from
assert_equal
%w( a b c d )
,
%w( a b c d )
.
from
(
0
)
assert_equal
%w( c d )
,
%w( a b c d )
.
from
(
2
)
assert_equal
%w()
,
%w( a b c d )
.
from
(
10
)
assert_equal
%w( d e )
,
%w( a b c d e )
.
from
(
-
2
)
assert_equal
%w()
,
%w( a b c d e )
.
from
(
-
10
)
end
def
test_to
assert_equal
%w( a )
,
%w( a b c d )
.
to
(
0
)
assert_equal
%w( a b c )
,
%w( a b c d )
.
to
(
2
)
assert_equal
%w( a b c d )
,
%w( a b c d )
.
to
(
10
)
assert_equal
%w( a b c )
,
%w( a b c d )
.
to
(
-
2
)
assert_equal
%w()
,
%w( a b c )
.
to
(
-
10
)
end
def
test_second_through_tenth
array
=
(
1
..
42
).
to_a
assert_equal
array
[
1
],
array
.
second
assert_equal
array
[
2
],
array
.
third
assert_equal
array
[
3
],
array
.
fourth
assert_equal
array
[
4
],
array
.
fifth
assert_equal
array
[
41
],
array
.
forty_two
end
end
class
ArrayExtToParamTests
<
ActiveSupport
::
TestCase
class
ToParam
<
String
def
to_param
"
#{
self
}
1"
end
end
def
test_string_array
assert_equal
''
,
%w()
.
to_param
assert_equal
'hello/world'
,
%w(hello world)
.
to_param
assert_equal
'hello/10'
,
%w(hello 10)
.
to_param
end
def
test_number_array
assert_equal
'10/20'
,
[
10
,
20
].
to_param
end
def
test_to_param_array
assert_equal
'custom1/param1'
,
[
ToParam
.
new
(
'custom'
),
ToParam
.
new
(
'param'
)].
to_param
end
end
class
ArrayExtToSentenceTests
<
ActiveSupport
::
TestCase
class
ToSentenceTest
<
ActiveSupport
::
TestCase
def
test_plain_array_to_sentence
assert_equal
""
,
[].
to_sentence
assert_equal
"one"
,
[
'one'
].
to_sentence
...
...
@@ -64,21 +13,21 @@ def test_plain_array_to_sentence
end
def
test_to_sentence_with_words_connector
assert_equal
"one two, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:words_connector
=>
' '
)
assert_equal
"one & two, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:words_connector
=>
' & '
)
assert_equal
"onetwo, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:words_connector
=>
nil
)
assert_equal
"one two, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
words_connector:
' '
)
assert_equal
"one & two, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
words_connector:
' & '
)
assert_equal
"onetwo, and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
words_connector:
nil
)
end
def
test_to_sentence_with_last_word_connector
assert_equal
"one, two, and also three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:last_word_connector
=>
', and also '
)
assert_equal
"one, twothree"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:last_word_connector
=>
nil
)
assert_equal
"one, two three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:last_word_connector
=>
' '
)
assert_equal
"one, two and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
:last_word_connector
=>
' and '
)
assert_equal
"one, two, and also three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
last_word_connector:
', and also '
)
assert_equal
"one, twothree"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
last_word_connector:
nil
)
assert_equal
"one, two three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
last_word_connector:
' '
)
assert_equal
"one, two and three"
,
[
'one'
,
'two'
,
'three'
].
to_sentence
(
last_word_connector:
' and '
)
end
def
test_two_elements
assert_equal
"one and two"
,
[
'one'
,
'two'
].
to_sentence
assert_equal
"one two"
,
[
'one'
,
'two'
].
to_sentence
(
:two_words_connector
=>
' '
)
assert_equal
"one two"
,
[
'one'
,
'two'
].
to_sentence
(
two_words_connector:
' '
)
end
def
test_one_element
...
...
@@ -105,143 +54,28 @@ def test_with_blank_elements
end
end
class
ArrayExtToSTests
<
ActiveSupport
::
TestCase
def
test_to_s_db
collection
=
[
Class
.
new
{
def
id
()
1
end
}.
new
,
Class
.
new
{
def
id
()
2
end
}.
new
,
Class
.
new
{
def
id
()
3
end
}.
new
]
assert_equal
"null"
,
[].
to_s
(
:db
)
assert_equal
"1,2,3"
,
collection
.
to_s
(
:db
)
end
end
class
ArrayExtGroupingTests
<
ActiveSupport
::
TestCase
def
setup
Fixnum
.
send
:private
,
:/
# test we avoid Integer#/ (redefined by mathn)
end
def
teardown
Fixnum
.
send
:public
,
:/
end
def
test_in_groups_of_with_perfect_fit
groups
=
[]
(
'a'
..
'i'
).
to_a
.
in_groups_of
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g h i)
],
groups
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g h i)
],
(
'a'
..
'i'
).
to_a
.
in_groups_of
(
3
)
end
def
test_in_groups_of_with_padding
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
[
'g'
,
nil
,
nil
]],
groups
end
def
test_in_groups_of_pads_with_specified_values
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
,
'foo'
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
[
'g'
,
'foo'
,
'foo'
]],
groups
end
def
test_in_groups_of_without_padding
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
,
false
)
do
|
group
|
groups
<<
group
class
ToSTest
<
ActiveSupport
::
TestCase
class
TestDB
@@counter
=
0
def
id
@@counter
+=
1
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
[
'g'
]],
groups
end
def
test_in_groups_returned_array_size
array
=
(
1
..
7
).
to_a
1
.
upto
(
array
.
size
+
1
)
do
|
number
|
assert_equal
number
,
array
.
in_groups
(
number
).
size
end
end
def
test_in_groups_with_empty_array
assert_equal
[[],
[],
[]],
[].
in_groups
(
3
)
end
def
test_in_groups_with_block
array
=
(
1
..
9
).
to_a
groups
=
[]
array
.
in_groups
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
array
.
in_groups
(
3
),
groups
end
def
test_in_groups_with_perfect_fit
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
]],
(
1
..
9
).
to_a
.
in_groups
(
3
)
end
def
test_in_groups_with_padding
array
=
(
1
..
7
).
to_a
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
nil
],
[
6
,
7
,
nil
]],
array
.
in_groups
(
3
)
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
'foo'
],
[
6
,
7
,
'foo'
]],
array
.
in_groups
(
3
,
'foo'
)
end
def
test_in_groups_without_padding
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
],
[
6
,
7
]],
(
1
..
7
).
to_a
.
in_groups
(
3
,
false
)
end
end
class
ArraySplitTests
<
ActiveSupport
::
TestCase
def
test_split_with_empty_array
assert_equal
[[]],
[].
split
(
0
)
end
def
test_split_with_argument
a
=
[
1
,
2
,
3
,
4
,
5
]
assert_equal
[[
1
,
2
],
[
4
,
5
]],
a
.
split
(
3
)
assert_equal
[[
1
,
2
,
3
,
4
,
5
]],
a
.
split
(
0
)
assert_equal
[
1
,
2
,
3
,
4
,
5
],
a
end
def
test_split_with_block
a
=
(
1
..
10
).
to_a
assert_equal
[[
1
,
2
],
[
4
,
5
],
[
7
,
8
],
[
10
]],
a
.
split
{
|
i
|
i
%
3
==
0
}
assert_equal
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
],
a
end
def
test_to_s_db
collection
=
[
TestDB
.
new
,
TestDB
.
new
,
TestDB
.
new
]
def
test_split_with_edge_values
a
=
[
1
,
2
,
3
,
4
,
5
]
assert_equal
[[],
[
2
,
3
,
4
,
5
]],
a
.
split
(
1
)
assert_equal
[[
1
,
2
,
3
,
4
],
[]],
a
.
split
(
5
)
assert_equal
[[],
[
2
,
3
,
4
],
[]],
a
.
split
{
|
i
|
i
==
1
||
i
==
5
}
assert_equal
[
1
,
2
,
3
,
4
,
5
],
a
assert_equal
"null"
,
[].
to_s
(
:db
)
assert_equal
"1,2,3"
,
collection
.
to_s
(
:db
)
end
end
class
ArrayToXmlTests
<
ActiveSupport
::
TestCase
class
ToXmlTest
<
ActiveSupport
::
TestCase
def
test_to_xml_with_hash_elements
xml
=
[
{
:name
=>
"David"
,
:age
=>
26
,
:age_in_millis
=>
820497600000
},
{
:name
=>
"Jason"
,
:age
=>
31
,
:age_in_millis
=>
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
:skip_instruct
=>
true
,
:indent
=>
0
)
{
name:
"David"
,
age:
26
,
age_in_millis:
820497600000
},
{
name:
"Jason"
,
age:
31
,
age_in_millis:
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
skip_instruct:
true
,
indent:
0
)
assert_equal
'<objects type="array"><object>'
,
xml
.
first
(
30
)
assert
xml
.
include?
(
%(<age type="integer">26</age>)
),
xml
...
...
@@ -253,14 +87,14 @@ def test_to_xml_with_hash_elements
end
def
test_to_xml_with_non_hash_elements
xml
=
[
1
,
2
,
3
].
to_xml
(
:skip_instruct
=>
true
,
:indent
=>
0
)
xml
=
[
1
,
2
,
3
].
to_xml
(
skip_instruct:
true
,
indent:
0
)
assert_equal
'<fixnums type="array"><fixnum'
,
xml
.
first
(
29
)
assert
xml
.
include?
(
%(<fixnum type="integer">2</fixnum>)
),
xml
end
def
test_to_xml_with_non_hash_different_type_elements
xml
=
[
1
,
2.0
,
'3'
].
to_xml
(
:skip_instruct
=>
true
,
:indent
=>
0
)
xml
=
[
1
,
2.0
,
'3'
].
to_xml
(
skip_instruct:
true
,
indent:
0
)
assert_equal
'<objects type="array"><object'
,
xml
.
first
(
29
)
assert
xml
.
include?
(
%(<object type="integer">1</object>)
),
xml
...
...
@@ -270,16 +104,16 @@ def test_to_xml_with_non_hash_different_type_elements
def
test_to_xml_with_dedicated_name
xml
=
[
{
:name
=>
"David"
,
:age
=>
26
,
:age_in_millis
=>
820497600000
},
{
:name
=>
"Jason"
,
:age
=>
31
}
].
to_xml
(
:skip_instruct
=>
true
,
:indent
=>
0
,
:root
=>
"people"
)
{
name:
"David"
,
age:
26
,
age_in_millis:
820497600000
},
{
name:
"Jason"
,
age:
31
}
].
to_xml
(
skip_instruct:
true
,
indent:
0
,
root:
"people"
)
assert_equal
'<people type="array"><person>'
,
xml
.
first
(
29
)
end
def
test_to_xml_with_options
xml
=
[
{
:name
=>
"David"
,
:street_address
=>
"Paulina"
},
{
:name
=>
"Jason"
,
:street_address
=>
"Evergreen"
}
].
to_xml
(
:skip_instruct
=>
true
,
:skip_types
=>
true
,
:indent
=>
0
)
{
name:
"David"
,
street_address:
"Paulina"
},
{
name:
"Jason"
,
street_address:
"Evergreen"
}
].
to_xml
(
skip_instruct:
true
,
skip_types:
true
,
indent:
0
)
assert_equal
"<objects><object>"
,
xml
.
first
(
17
)
assert
xml
.
include?
(
%(<street-address>Paulina</street-address>)
)
...
...
@@ -290,8 +124,8 @@ def test_to_xml_with_options
def
test_to_xml_with_indent_set
xml
=
[
{
:name
=>
"David"
,
:street_address
=>
"Paulina"
},
{
:name
=>
"Jason"
,
:street_address
=>
"Evergreen"
}
].
to_xml
(
:skip_instruct
=>
true
,
:skip_types
=>
true
,
:indent
=>
4
)
{
name:
"David"
,
street_address:
"Paulina"
},
{
name:
"Jason"
,
street_address:
"Evergreen"
}
].
to_xml
(
skip_instruct:
true
,
skip_types:
true
,
indent:
4
)
assert_equal
"<objects>
\n
<object>"
,
xml
.
first
(
22
)
assert
xml
.
include?
(
%(\n <street-address>Paulina</street-address>)
)
...
...
@@ -302,8 +136,8 @@ def test_to_xml_with_indent_set
def
test_to_xml_with_dasherize_false
xml
=
[
{
:name
=>
"David"
,
:street_address
=>
"Paulina"
},
{
:name
=>
"Jason"
,
:street_address
=>
"Evergreen"
}
].
to_xml
(
:skip_instruct
=>
true
,
:skip_types
=>
true
,
:indent
=>
0
,
:dasherize
=>
false
)
{
name:
"David"
,
street_address:
"Paulina"
},
{
name:
"Jason"
,
street_address:
"Evergreen"
}
].
to_xml
(
skip_instruct:
true
,
skip_types:
true
,
indent:
0
,
dasherize:
false
)
assert_equal
"<objects><object>"
,
xml
.
first
(
17
)
assert
xml
.
include?
(
%(<street_address>Paulina</street_address>)
)
...
...
@@ -312,8 +146,8 @@ def test_to_xml_with_dasherize_false
def
test_to_xml_with_dasherize_true
xml
=
[
{
:name
=>
"David"
,
:street_address
=>
"Paulina"
},
{
:name
=>
"Jason"
,
:street_address
=>
"Evergreen"
}
].
to_xml
(
:skip_instruct
=>
true
,
:skip_types
=>
true
,
:indent
=>
0
,
:dasherize
=>
true
)
{
name:
"David"
,
street_address:
"Paulina"
},
{
name:
"Jason"
,
street_address:
"Evergreen"
}
].
to_xml
(
skip_instruct:
true
,
skip_types:
true
,
indent:
0
,
dasherize:
true
)
assert_equal
"<objects><object>"
,
xml
.
first
(
17
)
assert
xml
.
include?
(
%(<street-address>Paulina</street-address>)
)
...
...
@@ -322,9 +156,9 @@ def test_to_xml_with_dasherize_true
def
test_to_xml_with_instruct
xml
=
[
{
:name
=>
"David"
,
:age
=>
26
,
:age_in_millis
=>
820497600000
},
{
:name
=>
"Jason"
,
:age
=>
31
,
:age_in_millis
=>
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
:skip_instruct
=>
false
,
:indent
=>
0
)
{
name:
"David"
,
age:
26
,
age_in_millis:
820497600000
},
{
name:
"Jason"
,
age:
31
,
age_in_millis:
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
skip_instruct:
false
,
indent:
0
)
assert_match
(
/^<\?xml [^>]*/
,
xml
)
assert_equal
0
,
xml
.
rindex
(
/<\?xml /
)
...
...
@@ -332,9 +166,9 @@ def test_to_xml_with_instruct
def
test_to_xml_with_block
xml
=
[
{
:name
=>
"David"
,
:age
=>
26
,
:age_in_millis
=>
820497600000
},
{
:name
=>
"Jason"
,
:age
=>
31
,
:age_in_millis
=>
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
:skip_instruct
=>
true
,
:indent
=>
0
)
do
|
builder
|
{
name:
"David"
,
age:
26
,
age_in_millis:
820497600000
},
{
name:
"Jason"
,
age:
31
,
age_in_millis:
BigDecimal
.
new
(
'1.0'
)
}
].
to_xml
(
skip_instruct:
true
,
indent:
0
)
do
|
builder
|
builder
.
count
2
end
...
...
@@ -347,136 +181,31 @@ def test_to_xml_with_empty
end
def
test_to_xml_dups_options
options
=
{
:skip_instruct
=>
true
}
options
=
{
skip_instruct:
true
}
[].
to_xml
(
options
)
# :builder, etc, shouldn't be added to options
assert_equal
({
:skip_instruct
=>
true
},
options
)
end
end
class
ArrayExtractOptionsTests
<
ActiveSupport
::
TestCase
class
HashSubclass
<
Hash
end
class
ExtractableHashSubclass
<
Hash
def
extractable_options?
true
end
end
def
test_extract_options
assert_equal
({},
[].
extract_options!
)
assert_equal
({},
[
1
].
extract_options!
)
assert_equal
({
:a
=>
:b
},
[{
:a
=>
:b
}].
extract_options!
)
assert_equal
({
:a
=>
:b
},
[
1
,
{
:a
=>
:b
}].
extract_options!
)
end
def
test_extract_options_doesnt_extract_hash_subclasses
hash
=
HashSubclass
.
new
hash
[
:foo
]
=
1
array
=
[
hash
]
options
=
array
.
extract_options!
assert_equal
({},
options
)
assert_equal
[
hash
],
array
end
def
test_extract_options_extracts_extractable_subclass
hash
=
ExtractableHashSubclass
.
new
hash
[
:foo
]
=
1
array
=
[
hash
]
options
=
array
.
extract_options!
assert_equal
({
:foo
=>
1
},
options
)
assert_equal
[],
array
end
def
test_extract_options_extracts_hwia
hash
=
[{
:foo
=>
1
}.
with_indifferent_access
]
options
=
hash
.
extract_options!
assert_equal
1
,
options
[
:foo
]
assert_equal
({
skip_instruct:
true
},
options
)
end
end
class
ArrayWrapperTests
<
ActiveSupport
::
TestCase
class
FakeCollection
def
to_ary
[
"foo"
,
"bar"
]
end
end
class
Proxy
def
initialize
(
target
)
@target
=
target
end
def
method_missing
(
*
a
)
@target
.
send
(
*
a
)
end
end
class
DoubtfulToAry
def
to_ary
:not_an_array
end
end
class
NilToAry
def
to_ary
nil
class
ToParamTest
<
ActiveSupport
::
TestCase
class
ToParam
<
String
def
to_param
"
#{
self
}
1"
end
end
def
test_array
ary
=
%w(foo bar)
assert_same
ary
,
Array
.
wrap
(
ary
)
end
def
test_nil
assert_equal
[],
Array
.
wrap
(
nil
)
end
def
test_object
o
=
Object
.
new
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_string
assert_equal
[
"foo"
],
Array
.
wrap
(
"foo"
)
end
def
test_string_with_newline
assert_equal
[
"foo
\n
bar"
],
Array
.
wrap
(
"foo
\n
bar"
)
end
def
test_object_with_to_ary
assert_equal
[
"foo"
,
"bar"
],
Array
.
wrap
(
FakeCollection
.
new
)
end
def
test_proxy_object
p
=
Proxy
.
new
(
Object
.
new
)
assert_equal
[
p
],
Array
.
wrap
(
p
)
end
def
test_proxy_to_object_with_to_ary
p
=
Proxy
.
new
(
FakeCollection
.
new
)
assert_equal
[
p
],
Array
.
wrap
(
p
)
end
def
test_struct
o
=
Struct
.
new
(
:foo
).
new
(
123
)
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_wrap_returns_wrapped_if_to_ary_returns_nil
o
=
NilToAry
.
new
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_wrap_does_not_complain_if_to_ary_does_not_return_an_array
assert_equal
DoubtfulToAry
.
new
.
to_ary
,
Array
.
wrap
(
DoubtfulToAry
.
new
)
def
test_string_array
assert_equal
''
,
%w()
.
to_param
assert_equal
'hello/world'
,
%w(hello world)
.
to_param
assert_equal
'hello/10'
,
%w(hello 10)
.
to_param
end
end
class
ArrayPrependAppendTest
<
ActiveSupport
::
TestCase
def
test_append
assert_equal
[
1
,
2
],
[
1
].
append
(
2
)
def
test_number_array
assert_equal
'10/20'
,
[
10
,
20
].
to_param
end
def
test_
prepend
assert_equal
[
2
,
1
],
[
1
].
prepend
(
2
)
def
test_
to_param_array
assert_equal
'custom1/param1'
,
[
ToParam
.
new
(
'custom'
),
ToParam
.
new
(
'param'
)].
to_param
end
end
activesupport/test/core_ext/array/extract_options_test.rb
0 → 100644
浏览文件 @
84268970
require
'abstract_unit'
require
'active_support/core_ext/array'
require
'active_support/core_ext/hash'
class
ExtractOptionsTest
<
ActiveSupport
::
TestCase
class
HashSubclass
<
Hash
end
class
ExtractableHashSubclass
<
Hash
def
extractable_options?
true
end
end
def
test_extract_options
assert_equal
({},
[].
extract_options!
)
assert_equal
({},
[
1
].
extract_options!
)
assert_equal
({
a: :b
},
[{
a: :b
}].
extract_options!
)
assert_equal
({
a: :b
},
[
1
,
{
a: :b
}].
extract_options!
)
end
def
test_extract_options_doesnt_extract_hash_subclasses
hash
=
HashSubclass
.
new
hash
[
:foo
]
=
1
array
=
[
hash
]
options
=
array
.
extract_options!
assert_equal
({},
options
)
assert_equal
([
hash
],
array
)
end
def
test_extract_options_extracts_extractable_subclass
hash
=
ExtractableHashSubclass
.
new
hash
[
:foo
]
=
1
array
=
[
hash
]
options
=
array
.
extract_options!
assert_equal
({
foo:
1
},
options
)
assert_equal
([],
array
)
end
def
test_extract_options_extracts_hash_with_indifferent_access
array
=
[{
foo:
1
}.
with_indifferent_access
]
options
=
array
.
extract_options!
assert_equal
(
1
,
options
[
:foo
])
end
end
activesupport/test/core_ext/array/grouping_test.rb
0 → 100644
浏览文件 @
84268970
require
'abstract_unit'
require
'active_support/core_ext/array'
class
GroupingTest
<
ActiveSupport
::
TestCase
def
setup
Fixnum
.
send
:private
,
:/
# test we avoid Integer#/ (redefined by mathn)
end
def
teardown
Fixnum
.
send
:public
,
:/
end
def
test_in_groups_of_with_perfect_fit
groups
=
[]
(
'a'
..
'i'
).
to_a
.
in_groups_of
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g h i)
],
groups
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g h i)
],
(
'a'
..
'i'
).
to_a
.
in_groups_of
(
3
)
end
def
test_in_groups_of_with_padding
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
[
'g'
,
nil
,
nil
]],
groups
end
def
test_in_groups_of_pads_with_specified_values
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
,
'foo'
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g foo foo)
],
groups
end
def
test_in_groups_of_without_padding
groups
=
[]
(
'a'
..
'g'
).
to_a
.
in_groups_of
(
3
,
false
)
do
|
group
|
groups
<<
group
end
assert_equal
[
%w(a b c)
,
%w(d e f)
,
%w(g)
],
groups
end
def
test_in_groups_returned_array_size
array
=
(
1
..
7
).
to_a
1
.
upto
(
array
.
size
+
1
)
do
|
number
|
assert_equal
number
,
array
.
in_groups
(
number
).
size
end
end
def
test_in_groups_with_empty_array
assert_equal
[[],
[],
[]],
[].
in_groups
(
3
)
end
def
test_in_groups_with_block
array
=
(
1
..
9
).
to_a
groups
=
[]
array
.
in_groups
(
3
)
do
|
group
|
groups
<<
group
end
assert_equal
array
.
in_groups
(
3
),
groups
end
def
test_in_groups_with_perfect_fit
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
6
],
[
7
,
8
,
9
]],
(
1
..
9
).
to_a
.
in_groups
(
3
)
end
def
test_in_groups_with_padding
array
=
(
1
..
7
).
to_a
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
nil
],
[
6
,
7
,
nil
]],
array
.
in_groups
(
3
)
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
,
'foo'
],
[
6
,
7
,
'foo'
]],
array
.
in_groups
(
3
,
'foo'
)
end
def
test_in_groups_without_padding
assert_equal
[[
1
,
2
,
3
],
[
4
,
5
],
[
6
,
7
]],
(
1
..
7
).
to_a
.
in_groups
(
3
,
false
)
end
end
class
SplitTest
<
ActiveSupport
::
TestCase
def
test_split_with_empty_array
assert_equal
[[]],
[].
split
(
0
)
end
def
test_split_with_argument
a
=
[
1
,
2
,
3
,
4
,
5
]
assert_equal
[[
1
,
2
],
[
4
,
5
]],
a
.
split
(
3
)
assert_equal
[[
1
,
2
,
3
,
4
,
5
]],
a
.
split
(
0
)
assert_equal
[
1
,
2
,
3
,
4
,
5
],
a
end
def
test_split_with_block
a
=
(
1
..
10
).
to_a
assert_equal
[[
1
,
2
],
[
4
,
5
],
[
7
,
8
],
[
10
]],
a
.
split
{
|
i
|
i
%
3
==
0
}
assert_equal
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
],
a
end
def
test_split_with_edge_values
a
=
[
1
,
2
,
3
,
4
,
5
]
assert_equal
[[],
[
2
,
3
,
4
,
5
]],
a
.
split
(
1
)
assert_equal
[[
1
,
2
,
3
,
4
],
[]],
a
.
split
(
5
)
assert_equal
[[],
[
2
,
3
,
4
],
[]],
a
.
split
{
|
i
|
i
==
1
||
i
==
5
}
assert_equal
[
1
,
2
,
3
,
4
,
5
],
a
end
end
activesupport/test/core_ext/array/prepend_append_test.rb
0 → 100644
浏览文件 @
84268970
require
'abstract_unit'
require
'active_support/core_ext/array'
class
PrependAppendTest
<
ActiveSupport
::
TestCase
def
test_append
assert_equal
[
1
,
2
],
[
1
].
append
(
2
)
end
def
test_prepend
assert_equal
[
2
,
1
],
[
1
].
prepend
(
2
)
end
end
activesupport/test/core_ext/array/wrap_test.rb
0 → 100644
浏览文件 @
84268970
require
'abstract_unit'
require
'active_support/core_ext/array'
class
WrapTest
<
ActiveSupport
::
TestCase
class
FakeCollection
def
to_ary
[
"foo"
,
"bar"
]
end
end
class
Proxy
def
initialize
(
target
)
@target
=
target
end
def
method_missing
(
*
a
)
@target
.
send
(
*
a
)
end
end
class
DoubtfulToAry
def
to_ary
:not_an_array
end
end
class
NilToAry
def
to_ary
nil
end
end
def
test_array
ary
=
%w(foo bar)
assert_same
ary
,
Array
.
wrap
(
ary
)
end
def
test_nil
assert_equal
[],
Array
.
wrap
(
nil
)
end
def
test_object
o
=
Object
.
new
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_string
assert_equal
[
"foo"
],
Array
.
wrap
(
"foo"
)
end
def
test_string_with_newline
assert_equal
[
"foo
\n
bar"
],
Array
.
wrap
(
"foo
\n
bar"
)
end
def
test_object_with_to_ary
assert_equal
[
"foo"
,
"bar"
],
Array
.
wrap
(
FakeCollection
.
new
)
end
def
test_proxy_object
p
=
Proxy
.
new
(
Object
.
new
)
assert_equal
[
p
],
Array
.
wrap
(
p
)
end
def
test_proxy_to_object_with_to_ary
p
=
Proxy
.
new
(
FakeCollection
.
new
)
assert_equal
[
p
],
Array
.
wrap
(
p
)
end
def
test_struct
o
=
Struct
.
new
(
:foo
).
new
(
123
)
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_wrap_returns_wrapped_if_to_ary_returns_nil
o
=
NilToAry
.
new
assert_equal
[
o
],
Array
.
wrap
(
o
)
end
def
test_wrap_does_not_complain_if_to_ary_does_not_return_an_array
assert_equal
DoubtfulToAry
.
new
.
to_ary
,
Array
.
wrap
(
DoubtfulToAry
.
new
)
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录