opal 0.3.16 → 0.3.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. data/.gitignore +2 -0
  2. data/CHANGELOG.md +12 -0
  3. data/Gemfile +8 -7
  4. data/README.md +21 -13
  5. data/Rakefile +64 -78
  6. data/bin/opal +18 -29
  7. data/core/alpha.rb +2 -9
  8. data/core/array.rb +106 -50
  9. data/core/basic_object.rb +10 -8
  10. data/core/boolean.rb +2 -0
  11. data/core/class.rb +25 -13
  12. data/core/comparable.rb +6 -6
  13. data/core/enumerable.rb +90 -94
  14. data/core/enumerator.rb +3 -3
  15. data/core/hash.rb +86 -46
  16. data/core/kernel.rb +55 -39
  17. data/core/load_order +2 -5
  18. data/core/match_data.rb +1 -1
  19. data/core/module.rb +45 -20
  20. data/core/nil_class.rb +6 -2
  21. data/core/numeric.rb +20 -10
  22. data/core/proc.rb +2 -2
  23. data/core/range.rb +72 -13
  24. data/core/regexp.rb +5 -3
  25. data/core/runtime.js +228 -287
  26. data/core/string.rb +345 -37
  27. data/core/top_self.rb +1 -1
  28. data/lib/opal.rb +13 -91
  29. data/lib/opal/builder.rb +47 -120
  30. data/lib/opal/builder_task.rb +74 -0
  31. data/lib/opal/{parser/grammar.rb → grammar.rb} +1094 -1083
  32. data/lib/opal/{parser/grammar.y → grammar.y} +7 -0
  33. data/lib/opal/{parser/lexer.rb → lexer.rb} +32 -11
  34. data/lib/opal/{parser/parser.rb → parser.rb} +232 -238
  35. data/lib/opal/{parser/scope.rb → scope.rb} +72 -9
  36. data/lib/opal/version.rb +2 -3
  37. data/opal.gemspec +1 -2
  38. data/{core_spec → spec}/core/array/allocate_spec.rb +1 -3
  39. data/{core_spec → spec}/core/array/append_spec.rb +1 -4
  40. data/{core_spec → spec}/core/array/assoc_spec.rb +1 -4
  41. data/{core_spec → spec}/core/array/at_spec.rb +1 -3
  42. data/{core_spec → spec}/core/array/clear_spec.rb +1 -3
  43. data/spec/core/array/clone_spec.rb +15 -0
  44. data/{core_spec/core/array/shared/collect.rb → spec/core/array/collect_spec.rb} +1 -1
  45. data/{core_spec → spec}/core/array/compact_spec.rb +1 -3
  46. data/{core_spec → spec}/core/array/concat_spec.rb +1 -3
  47. data/{core_spec → spec}/core/array/constructor_spec.rb +9 -3
  48. data/{core_spec → spec}/core/array/count_spec.rb +1 -3
  49. data/{core_spec → spec}/core/array/delete_at_spec.rb +1 -4
  50. data/{core_spec → spec}/core/array/delete_if_spec.rb +1 -4
  51. data/{core_spec → spec}/core/array/delete_spec.rb +1 -4
  52. data/{core_spec → spec}/core/array/each_index_spec.rb +1 -4
  53. data/{core_spec → spec}/core/array/each_spec.rb +1 -4
  54. data/{core_spec → spec}/core/array/element_reference_spec.rb +74 -4
  55. data/{core_spec → spec}/core/array/empty_spec.rb +1 -4
  56. data/{core_spec/core/array/shared/eql.rb → spec/core/array/eql_spec.rb} +1 -1
  57. data/{core_spec → spec}/core/array/fetch_spec.rb +1 -4
  58. data/{core_spec → spec}/core/array/first_spec.rb +1 -3
  59. data/{core_spec → spec}/core/array/flatten_spec.rb +1 -3
  60. data/{core_spec → spec}/core/array/include_spec.rb +1 -3
  61. data/{core_spec → spec}/core/array/insert_spec.rb +1 -4
  62. data/{core_spec → spec}/core/array/last_spec.rb +1 -4
  63. data/{core_spec/core/array/shared/length.rb → spec/core/array/length_spec.rb} +1 -1
  64. data/spec/core/array/map_spec.rb +53 -0
  65. data/{core_spec → spec}/core/array/plus_spec.rb +1 -4
  66. data/{core_spec → spec}/core/array/pop_spec.rb +1 -4
  67. data/{core_spec → spec}/core/array/push_spec.rb +1 -4
  68. data/{core_spec → spec}/core/array/rassoc_spec.rb +1 -4
  69. data/{core_spec → spec}/core/array/reject_spec.rb +1 -4
  70. data/{core_spec/core/array/shared/replace.rb → spec/core/array/replace_spec.rb} +1 -1
  71. data/{core_spec → spec}/core/array/reverse_each_spec.rb +1 -4
  72. data/{core_spec → spec}/core/array/reverse_spec.rb +1 -4
  73. data/spec/core/array/size_spec.rb +6 -0
  74. data/spec/core/array/to_ary_spec.rb +6 -0
  75. data/spec/core/array/uniq_spec.rb +22 -0
  76. data/spec/core/array/zip_spec.rb +20 -0
  77. data/{core_spec → spec}/core/class/new_spec.rb +1 -4
  78. data/{core_spec → spec}/core/enumerable/all_spec.rb +1 -4
  79. data/{core_spec → spec}/core/enumerable/any_spec.rb +1 -4
  80. data/{core_spec/core/enumerable/shared/collect.rb → spec/core/enumerable/collect_spec.rb} +1 -1
  81. data/{core_spec → spec}/core/enumerable/count_spec.rb +2 -5
  82. data/{core_spec → spec}/core/enumerable/fixtures/classes.rb +1 -2
  83. data/{core_spec → spec}/core/false/and_spec.rb +1 -3
  84. data/{core_spec → spec}/core/false/inspect_spec.rb +1 -3
  85. data/{core_spec → spec}/core/false/or_spec.rb +1 -3
  86. data/{core_spec → spec}/core/false/to_s_spec.rb +1 -3
  87. data/{core_spec → spec}/core/false/xor_spec.rb +1 -3
  88. data/{core_spec → spec}/core/hash/allocate_spec.rb +1 -3
  89. data/spec/core/hash/assoc_spec.rb +25 -0
  90. data/{core_spec → spec}/core/hash/clear_spec.rb +1 -3
  91. data/{core_spec → spec}/core/hash/clone_spec.rb +1 -3
  92. data/{core_spec → spec}/core/hash/default_spec.rb +1 -3
  93. data/{core_spec → spec}/core/hash/delete_if_spec.rb +1 -3
  94. data/{core_spec → spec}/core/hash/element_reference_spec.rb +1 -3
  95. data/{core_spec → spec}/core/hash/element_set_spec.rb +1 -3
  96. data/spec/core/hash/merge_spec.rb +37 -0
  97. data/{core_spec → spec}/core/hash/new_spec.rb +1 -3
  98. data/{core_spec → spec}/core/matchdata/to_a_spec.rb +1 -3
  99. data/{core_spec → spec}/core/nil/and_spec.rb +1 -4
  100. data/{core_spec → spec}/core/nil/inspect_spec.rb +1 -4
  101. data/{core_spec → spec}/core/nil/nil_spec.rb +1 -4
  102. data/{core_spec → spec}/core/nil/or_spec.rb +1 -4
  103. data/{core_spec → spec}/core/nil/to_a_spec.rb +1 -4
  104. data/{core_spec → spec}/core/nil/to_f_spec.rb +1 -4
  105. data/{core_spec → spec}/core/nil/to_i_spec.rb +1 -4
  106. data/{core_spec → spec}/core/nil/to_s_spec.rb +1 -4
  107. data/{core_spec → spec}/core/nil/xor_spec.rb +1 -4
  108. data/{core_spec → spec}/core/numeric/equal_value_spec.rb +1 -3
  109. data/{core_spec → spec}/core/regexp/match_spec.rb +10 -3
  110. data/{core_spec → spec}/core/symbol/to_proc_spec.rb +1 -3
  111. data/{core_spec → spec}/core/true/and_spec.rb +1 -3
  112. data/{core_spec → spec}/core/true/inspect_spec.rb +1 -3
  113. data/{core_spec → spec}/core/true/or_spec.rb +1 -3
  114. data/{core_spec → spec}/core/true/to_s_spec.rb +1 -3
  115. data/{core_spec → spec}/core/true/xor_spec.rb +1 -3
  116. data/spec/index.html +11 -0
  117. data/{core_spec → spec}/language/alias_spec.rb +1 -3
  118. data/{core_spec → spec}/language/and_spec.rb +1 -4
  119. data/{core_spec → spec}/language/array_spec.rb +1 -4
  120. data/{core_spec → spec}/language/block_spec.rb +20 -3
  121. data/{core_spec → spec}/language/break_spec.rb +40 -3
  122. data/{core_spec → spec}/language/case_spec.rb +1 -4
  123. data/{core_spec → spec}/language/defined_spec.rb +9 -3
  124. data/{core_spec → spec}/language/ensure_spec.rb +38 -3
  125. data/{core_spec → spec}/language/hash_spec.rb +1 -3
  126. data/{core_spec → spec}/language/if_spec.rb +1 -4
  127. data/{core_spec → spec}/language/loop_spec.rb +1 -3
  128. data/spec/language/metaclass_spec.rb +13 -0
  129. data/{core_spec → spec}/language/next_spec.rb +47 -3
  130. data/{core_spec → spec}/language/or_spec.rb +1 -4
  131. data/{core_spec → spec}/language/predefined_spec.rb +1 -3
  132. data/{core_spec/language/regexp/interpolation_spec.rb → spec/language/regexp_spec.rb} +6 -3
  133. data/{core_spec → spec}/language/send_spec.rb +38 -4
  134. data/spec/language/singleton_class_spec.rb +31 -0
  135. data/spec/language/super_spec.rb +188 -0
  136. data/{core_spec → spec}/language/symbol_spec.rb +1 -3
  137. data/{core_spec → spec}/language/undef_spec.rb +1 -3
  138. data/{core_spec → spec}/language/unless_spec.rb +1 -4
  139. data/{core_spec → spec}/language/until_spec.rb +1 -3
  140. data/{core_spec → spec}/language/variables_spec.rb +1 -3
  141. data/{core_spec → spec}/language/while_spec.rb +1 -3
  142. data/{spec → test}/builder/build_source_spec.rb +0 -0
  143. data/{spec → test}/builder/fixtures/build_source/adam.rb +0 -0
  144. data/{spec → test}/builder/fixtures/build_source/bar/a.rb +0 -0
  145. data/{spec → test}/builder/fixtures/build_source/bar/wow/b.rb +0 -0
  146. data/{spec → test}/builder/fixtures/build_source/bar/wow/cow/c.rb +0 -0
  147. data/{spec → test}/builder/fixtures/build_source/beynon.rb +0 -0
  148. data/{spec → test}/builder/fixtures/build_source/charles.js +0 -0
  149. data/{spec → test}/builder/fixtures/build_source/foo/a.rb +0 -0
  150. data/{spec → test}/builder/fixtures/build_source/foo/b.rb +0 -0
  151. data/{spec → test}/builder/fixtures/build_source/foo/x.js +0 -0
  152. data/{spec → test}/builder/fixtures/build_source/foo/y.js +0 -0
  153. data/{spec → test}/grammar/alias_spec.rb +0 -0
  154. data/{spec → test}/grammar/and_spec.rb +0 -0
  155. data/{spec → test}/grammar/array_spec.rb +0 -0
  156. data/{spec → test}/grammar/attrasgn_spec.rb +0 -0
  157. data/{spec → test}/grammar/begin_spec.rb +0 -0
  158. data/{spec → test}/grammar/block_spec.rb +0 -0
  159. data/{spec → test}/grammar/break_spec.rb +0 -0
  160. data/{spec → test}/grammar/call_spec.rb +0 -0
  161. data/{spec → test}/grammar/class_spec.rb +0 -0
  162. data/{spec → test}/grammar/const_spec.rb +0 -0
  163. data/{spec → test}/grammar/cvar_spec.rb +0 -0
  164. data/{spec → test}/grammar/def_spec.rb +0 -0
  165. data/{spec → test}/grammar/false_spec.rb +0 -0
  166. data/{spec → test}/grammar/file_spec.rb +0 -0
  167. data/{spec → test}/grammar/gvar_spec.rb +0 -0
  168. data/{spec → test}/grammar/hash_spec.rb +0 -0
  169. data/{spec → test}/grammar/iasgn_spec.rb +0 -0
  170. data/{spec → test}/grammar/if_spec.rb +0 -0
  171. data/{spec → test}/grammar/iter_spec.rb +0 -0
  172. data/{spec → test}/grammar/ivar_spec.rb +0 -0
  173. data/{spec → test}/grammar/lasgn_spec.rb +0 -0
  174. data/{spec → test}/grammar/line_spec.rb +0 -0
  175. data/{spec → test}/grammar/lvar_spec.rb +0 -0
  176. data/{spec → test}/grammar/masgn_spec.rb +0 -0
  177. data/{spec → test}/grammar/module_spec.rb +0 -0
  178. data/{spec → test}/grammar/nil_spec.rb +0 -0
  179. data/{spec → test}/grammar/not_spec.rb +0 -0
  180. data/{spec → test}/grammar/op_asgn1_spec.rb +0 -0
  181. data/{spec → test}/grammar/op_asgn2_spec.rb +0 -0
  182. data/{spec → test}/grammar/or_spec.rb +0 -0
  183. data/{spec → test}/grammar/return_spec.rb +0 -0
  184. data/{spec → test}/grammar/sclass_spec.rb +0 -0
  185. data/{spec → test}/grammar/self_spec.rb +0 -0
  186. data/{spec → test}/grammar/str_spec.rb +0 -0
  187. data/{spec → test}/grammar/super_spec.rb +0 -0
  188. data/{spec → test}/grammar/true_spec.rb +0 -0
  189. data/{spec → test}/grammar/undef_spec.rb +0 -0
  190. data/{spec → test}/grammar/unless_spec.rb +0 -0
  191. data/{spec → test}/grammar/while_spec.rb +0 -0
  192. data/{spec → test}/grammar/xstr_spec.rb +0 -0
  193. data/{spec → test}/grammar/yield_spec.rb +0 -0
  194. data/{spec → test}/spec_helper.rb +0 -0
  195. metadata +330 -264
  196. data/core/debug.js +0 -59
  197. data/core/debug.rb +0 -35
  198. data/core/dir.rb +0 -90
  199. data/core/file.rb +0 -83
  200. data/core/gemlib.rb +0 -30
  201. data/core/io.rb +0 -44
  202. data/core_spec/README.md +0 -34
  203. data/core_spec/core/array/collect_spec.rb +0 -3
  204. data/core_spec/core/array/element_set_spec.rb +0 -7
  205. data/core_spec/core/array/eql_spec.rb +0 -3
  206. data/core_spec/core/array/equal_value_spec.rb +0 -3
  207. data/core_spec/core/array/fixtures/classes.rb +0 -8
  208. data/core_spec/core/array/length_spec.rb +0 -3
  209. data/core_spec/core/array/map_spec.rb +0 -3
  210. data/core_spec/core/array/replace_spec.rb +0 -3
  211. data/core_spec/core/enumerable/collect_spec.rb +0 -3
  212. data/core_spec/core/enumerable/detect_spec.rb +0 -3
  213. data/core_spec/core/enumerable/find_spec.rb +0 -3
  214. data/core_spec/core/enumerable/first_spec.rb +0 -3
  215. data/core_spec/core/enumerable/shared/entries.rb +0 -7
  216. data/core_spec/core/enumerable/shared/find.rb +0 -49
  217. data/core_spec/core/enumerable/shared/take.rb +0 -31
  218. data/core_spec/core/enumerable/to_a_spec.rb +0 -7
  219. data/core_spec/core/hash/assoc_spec.rb +0 -29
  220. data/core_spec/core/object/is_a_spec.rb +0 -2
  221. data/core_spec/core/object/shared/kind_of.rb +0 -0
  222. data/core_spec/core/regexp/shared/match.rb +0 -11
  223. data/core_spec/language/fixtures/block.rb +0 -19
  224. data/core_spec/language/fixtures/break.rb +0 -39
  225. data/core_spec/language/fixtures/defined.rb +0 -9
  226. data/core_spec/language/fixtures/ensure.rb +0 -37
  227. data/core_spec/language/fixtures/next.rb +0 -46
  228. data/core_spec/language/fixtures/send.rb +0 -36
  229. data/core_spec/language/fixtures/super.rb +0 -43
  230. data/core_spec/language/regexp_spec.rb +0 -7
  231. data/core_spec/language/string_spec.rb +0 -4
  232. data/core_spec/language/super_spec.rb +0 -18
  233. data/core_spec/language/versions/hash_1.9.rb +0 -20
  234. data/core_spec/opal/opal/defined_spec.rb +0 -15
  235. data/core_spec/opal/opal/function_spec.rb +0 -11
  236. data/core_spec/opal/opal/native_spec.rb +0 -16
  237. data/core_spec/opal/opal/null_spec.rb +0 -10
  238. data/core_spec/opal/opal/number_spec.rb +0 -11
  239. data/core_spec/opal/opal/object_spec.rb +0 -16
  240. data/core_spec/opal/opal/string_spec.rb +0 -11
  241. data/core_spec/opal/opal/typeof_spec.rb +0 -9
  242. data/core_spec/opal/opal/undefined_spec.rb +0 -10
  243. data/core_spec/opal/true/case_compare_spec.rb +0 -12
  244. data/core_spec/opal/true/class_spec.rb +0 -10
  245. data/core_spec/release_runner.html +0 -17
  246. data/core_spec/runner.html +0 -16
  247. data/core_spec/spec_helper.rb +0 -23
  248. data/lib/opal/context.rb +0 -269
  249. data/lib/opal/dependency_builder.rb +0 -133
  250. data/lib/opal/environment.rb +0 -87
  251. data/lib/opal/parser/sexp.rb +0 -17
@@ -1,10 +1,7 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#empty?" do
5
2
  it "returns true if the array has no elements" do
6
3
  [].empty?.should == true
7
4
  [1].empty?.should == false
8
5
  [1, 2].empty?.should == false
9
6
  end
10
- end
7
+ end
@@ -16,4 +16,4 @@ describe "Array#==" do
16
16
  it "returns false if other is longer than self" do
17
17
  ([1, 2, 3, 4] == [1, 2, 3, 4, 5]).should be_false
18
18
  end
19
- end
19
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#fetch" do
5
2
  it "returns the element at the passed index" do
6
3
  [1, 2, 3].fetch(1).should == 2
@@ -23,4 +20,4 @@ describe "Array#fetch" do
23
20
  [1, 2, 3].fetch(-4, :not_found).should == :not_found
24
21
  [nil].fetch(0, :not_found).should == nil
25
22
  end
26
- end
23
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "Array#first" do
4
2
  it "returns the first element" do
5
3
  %w[a b c].first.should == 'a'
@@ -51,4 +49,4 @@ describe "Array#first" do
51
49
  a.first(3)
52
50
  a.should == [1, 2, 3]
53
51
  end
54
- end
52
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "Array#flatten" do
4
2
  it "returns a one-dimensional flattening recursively" do
5
3
  [[[1, [2, 3]], [2, 3, [4, [4, [5, 5]], [1, 2, 3]]], [4]], []].flatten.should == [1, 2, 3, 2, 3, 4, 4, 5, 5, 1, 2, 3, 4]
@@ -38,4 +36,4 @@ describe "Array#flatten!" do
38
36
  it "takes an optional argument that determines the level of recursion" do
39
37
  [1, 2, [3, [4, 5]]].flatten!(1).should == [1, 2, 3, [4, 5]]
40
38
  end
41
- end
39
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "Array#include?" do
4
2
  it "returns true if object is present, false otherwise" do
5
3
  [1, 2, "a", "b"].include?("c").should == false
@@ -17,4 +15,4 @@ describe "Array#include?" do
17
15
 
18
16
  [1, 2.0, 3].include?(2).should == true
19
17
  end
20
- end
18
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#insert" do
5
2
  it "returns self" do
6
3
  ary = []
@@ -56,4 +53,4 @@ describe "Array#insert" do
56
53
  [].insert(10).should == []
57
54
  [].insert(-2).should == []
58
55
  end
59
- end
56
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#last" do
5
2
  it "returns the last element" do
6
3
  [1, 1, 1, 1, 2].last.should == 2
@@ -54,4 +51,4 @@ describe "Array#last" do
54
51
  a.last(3)
55
52
  a.should == [1, 2, 3]
56
53
  end
57
- end
54
+ end
@@ -3,4 +3,4 @@ describe "Array#length" do
3
3
  [].length.should == 0
4
4
  [1, 2, 3].length.should == 3
5
5
  end
6
- end
6
+ end
@@ -0,0 +1,53 @@
1
+ describe "Array#map" do
2
+ it "returns a copy of array with each element replaced by the value returned by block" do
3
+ a = ['a', 'b', 'c', 'd']
4
+ b = a.map { |i| i + '!' }
5
+ b.should == ['a!', 'b!', 'c!', 'd!']
6
+ b.object_id.should_not == a.object_id
7
+ end
8
+
9
+ it "does not change self" do
10
+ a = ['a', 'b', 'c', 'd']
11
+ b = a.map { |i| i + '!' }
12
+ a.should == ['a', 'b', 'c', 'd']
13
+ end
14
+
15
+ it "returns the evaluated value of block if it broke in the block" do
16
+ a = ['a', 'b', 'c', 'd']
17
+ b = a.map {|i|
18
+ if i == 'c'
19
+ break 0
20
+ else
21
+ i + '!'
22
+ end
23
+ }
24
+ b.should == 0
25
+ end
26
+ end
27
+
28
+ describe "Array#map!" do
29
+ it "replaces each element with the value returned by block" do
30
+ a = [7, 9, 3, 5]
31
+ a.map! { |i| i - 1 }.should equal(a)
32
+ a.should == [6, 8, 2, 4]
33
+ end
34
+
35
+ it "returns self" do
36
+ a = [1, 2, 3, 4, 5]
37
+ b = a.map! {|i| i+1 }
38
+ a.object_id.should == b.object_id
39
+ end
40
+
41
+ it "returns the evaluated value of block but its contents is partially modified, if it broke in the block" do
42
+ a = ['a', 'b', 'c', 'd']
43
+ b = a.map! {|i|
44
+ if i == 'c'
45
+ break 0
46
+ else
47
+ i + '!'
48
+ end
49
+ }
50
+ b.should == 0
51
+ a.should == ['a!', 'b!', 'c', 'd']
52
+ end
53
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#+" do
5
2
  it "concatenates two arrays" do
6
3
  ([ 1, 2, 3 ] + [ 3, 4, 5 ] ).should == [1, 2, 3, 3, 4, 5]
@@ -13,4 +10,4 @@ describe "Array#+" do
13
10
  ary = [1, 2, 3]
14
11
  (ary + ary).should == [1, 2, 3, 1, 2, 3]
15
12
  end
16
- end
13
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#pop" do
5
2
  it "removes and returns the last element of the array" do
6
3
  a = ["a", 1, nil, true]
@@ -76,4 +73,4 @@ describe "Array#pop" do
76
73
  lambda { [1, 2, 3].pop(-1) }.should raise_error(ArgumentError)
77
74
  end
78
75
  end
79
- end
76
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#push" do
5
2
  it "appends the arguments to the array" do
6
3
  a = [ "a", "b", "c" ]
@@ -16,4 +13,4 @@ describe "Array#push" do
16
13
  a.push("foo")
17
14
  a.should == ["b", "c", "foo"]
18
15
  end
19
- end
16
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#rassoc" do
5
2
  it "returns the first contained array whose second element it == object" do
6
3
  ary = [[1, "a", 0.5], [2, "b"], [3, "b"], [4, "c"], [], [5], [6, "d"]]
@@ -9,4 +6,4 @@ describe "Array#rassoc" do
9
6
  ary.rassoc("d").should == [6, "d"]
10
7
  ary.rassoc("z").should == nil
11
8
  end
12
- end
9
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#reject" do
5
2
  it "returns a new array without elements for which block is true" do
6
3
  ary = [1, 2, 3, 4, 5]
@@ -51,4 +48,4 @@ describe "Array#reject!" do
51
48
  a.reject! { true }
52
49
  a.reject! { true }.should == nil
53
50
  end
54
- end
51
+ end
@@ -28,4 +28,4 @@ describe "Array#replace" do
28
28
  ary.should == [:a, :b, :c, :d]
29
29
  other.should == [:a, :b, :c]
30
30
  end
31
- end
31
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#reverse_each" do
5
2
  before :each do
6
3
  ScratchPad.record []
@@ -15,4 +12,4 @@ describe "Array#reverse_each" do
15
12
  a = [:a, :b, :c]
16
13
  a.reverse_each { |x| }.should equal(a)
17
14
  end
18
- end
15
+ end
@@ -1,9 +1,6 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Array#reverse" do
5
2
  it "returns a new array with the elements in reverse order" do
6
3
  [].reverse.should == []
7
4
  [1, 3, 5, 2].reverse.should == [2, 5, 3, 1]
8
5
  end
9
- end
6
+ end
@@ -0,0 +1,6 @@
1
+ describe "Array#size" do
2
+ it "returns the number of elements" do
3
+ [].size.should == 0
4
+ [1, 2, 3].size.should == 3
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ describe "Array#to_ary" do
2
+ it "returns self" do
3
+ a = [1, 2, 3]
4
+ a.should equal(a.to_ary)
5
+ end
6
+ end
@@ -0,0 +1,22 @@
1
+ describe "Array#uniq" do
2
+ it "returns an array with no duplicates" do
3
+ ["a", "a", "b", "b", "c"].uniq.should == ["a", "b", "c"]
4
+ end
5
+
6
+ it "uses eql? semantics" do
7
+ [1.0, 1].should == [1.0, 1]
8
+ end
9
+ end
10
+
11
+ describe "Array#uniq!" do
12
+ it "modifies the array in place" do
13
+ a = [ "a", "a", "b", "b", "c" ]
14
+ a.uniq!
15
+ a.should == ["a", "b", "c"]
16
+ end
17
+
18
+ it "returns self" do
19
+ a = [ "a", "a", "b", "b", "c" ]
20
+ a.should equal(a.uniq!)
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ describe "Array#zip" do
2
+ it "returns an array of arrays containing corresponding elements of each array" do
3
+ [1, 2, 3, 4].zip(["a", "b", "c", "d", "e"]).should ==
4
+ [[1, "a"], [2, "b"], [3, "c"], [4, "d"]]
5
+ end
6
+
7
+ it "fills in missing values with nil" do
8
+ [1, 2, 3, 4, 5].zip(["a", "b", "c", "d"]).should ==
9
+ [[1, "a"], [2, "b"], [3, "c"], [4, "d"], [5, nil]]
10
+ end
11
+
12
+ it "calls block if supplied" do
13
+ values = []
14
+ [1, 2, 3, 4].zip(["a", "b", "c", "d", "e"]) { |value|
15
+ values << value
16
+ }.should == nil
17
+
18
+ values.should == [[1, "a"], [2, "b"], [3, "c"], [4, "d"]]
19
+ end
20
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "Class.new with a block given" do
4
2
  it "uses the given block as the class' body" do
5
3
  klass = Class.new do
@@ -15,5 +13,4 @@ describe "Class.new with a block given" do
15
13
  klass.message.should == "text"
16
14
  klass.new.hello.should == "hello again"
17
15
  end
18
- end
19
-
16
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Enumerable#all?" do
5
2
 
6
3
  before :each do
@@ -99,4 +96,4 @@ describe "Enumerable#all?" do
99
96
  }.should raise_error(RuntimeError)
100
97
  end
101
98
  #end
102
- end
99
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Enumerable#any?" do
5
2
  before :each do
6
3
  @enum = EnumerableSpecs::Numerous.new
@@ -112,4 +109,4 @@ describe "Enumerable#any?" do
112
109
  }.should raise_error(RuntimeError)
113
110
  end
114
111
  #end
115
- end
112
+ end
@@ -9,4 +9,4 @@ describe "Enumerable#collect" do
9
9
  numerous.collect { |i| i % 2 }.should == [0, 1, 1, 0, 1, 0]
10
10
  numerous.collect { |i| i }.should == entries
11
11
  end
12
- end
12
+ end
@@ -1,6 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
- require File.expand_path('../fixtures/classes', __FILE__)
3
-
4
1
  describe "Enumerable#count" do
5
2
  before :each do
6
3
  @elements = [1, 2, 4, 2]
@@ -24,6 +21,6 @@ describe "Enumerable#count" do
24
21
  end
25
22
 
26
23
  it "ignores the block when given an argument" do
27
- #@numerous.count(4){|x| x%2==0 }.should == 1
24
+ @numerous.count(4){|x| x%2==0 }.should == 1
28
25
  end
29
- end
26
+ end
@@ -1,5 +1,4 @@
1
1
  module EnumerableSpecs
2
-
3
2
  class Numerous
4
3
  include Enumerable
5
4
  def initialize(*list)
@@ -23,4 +22,4 @@ module EnumerableSpecs
23
22
  raise "from each"
24
23
  end
25
24
  end
26
- end
25
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "FalseClass#&" do
4
2
  it "returns false" do
5
3
  (false & true).should == false
@@ -8,4 +6,4 @@ describe "FalseClass#&" do
8
6
  (false & "").should == false
9
7
  (false & mock('x')).should == false
10
8
  end
11
- end
9
+ end
@@ -1,7 +1,5 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "FalseClass#inspect" do
4
2
  it "returns the string 'false'" do
5
3
  false.inspect.should == "false"
6
4
  end
7
- end
5
+ end
@@ -1,5 +1,3 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "FalseClass#|" do
4
2
  it "returns false if other is nil or false, otherwise true" do
5
3
  (false | false).should == false
@@ -8,4 +6,4 @@ describe "FalseClass#|" do
8
6
  (false | "").should == true
9
7
  (false | mock('x')).should == true
10
8
  end
11
- end
9
+ end
@@ -1,7 +1,5 @@
1
- require File.expand_path('../../../spec_helper', __FILE__)
2
-
3
1
  describe "FalseClass#to_s" do
4
2
  it "returns the string 'false'" do
5
3
  false.to_s.should == "false"
6
4
  end
7
- end
5
+ end