opal 1.2.0 → 1.3.0.alpha1
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.
- checksums.yaml +4 -4
- data/.eslintrc.await.js +6 -0
- data/.eslintrc.js +34 -0
- data/.github/workflows/build.yml +8 -0
- data/.rubocop.yml +9 -0
- data/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/Rakefile +1 -0
- data/UNRELEASED.md +64 -38
- data/docs/async.md +109 -0
- data/docs/roda-sprockets.md +0 -2
- data/exe/opal +2 -0
- data/exe/opal-repl +2 -2
- data/lib/opal/builder.rb +5 -1
- data/lib/opal/builder_processors.rb +7 -2
- data/lib/opal/cache/file_cache.rb +119 -0
- data/lib/opal/cache.rb +71 -0
- data/lib/opal/cli.rb +35 -1
- data/lib/opal/cli_options.rb +21 -0
- data/lib/opal/cli_runners/chrome.rb +21 -14
- data/lib/opal/cli_runners/chrome_cdp_interface.js +30285 -0
- data/lib/opal/cli_runners/{chrome.js → chrome_cdp_interface.rb} +27 -6
- data/lib/opal/cli_runners/compiler.rb +2 -1
- data/lib/opal/cli_runners/gjs.rb +27 -0
- data/lib/opal/cli_runners/mini_racer.rb +36 -0
- data/lib/opal/cli_runners/source-map-support-browser.js +276 -91
- data/lib/opal/cli_runners/source-map-support-node.js +276 -91
- data/lib/opal/cli_runners/source-map-support.js +60 -18
- data/lib/opal/cli_runners.rb +2 -0
- data/lib/opal/compiler.rb +99 -10
- data/lib/opal/fragment.rb +77 -14
- data/lib/opal/nodes/args/extract_kwrestarg.rb +6 -4
- data/lib/opal/nodes/args/extract_restarg.rb +10 -12
- data/lib/opal/nodes/args.rb +28 -0
- data/lib/opal/nodes/base.rb +29 -5
- data/lib/opal/nodes/call.rb +123 -2
- data/lib/opal/nodes/case.rb +7 -1
- data/lib/opal/nodes/class.rb +12 -2
- data/lib/opal/nodes/def.rb +3 -23
- data/lib/opal/nodes/definitions.rb +21 -4
- data/lib/opal/nodes/helpers.rb +2 -2
- data/lib/opal/nodes/if.rb +39 -9
- data/lib/opal/nodes/iter.rb +15 -3
- data/lib/opal/nodes/lambda.rb +3 -1
- data/lib/opal/nodes/literal.rb +13 -7
- data/lib/opal/nodes/logic.rb +2 -2
- data/lib/opal/nodes/module.rb +12 -2
- data/lib/opal/nodes/rescue.rb +59 -34
- data/lib/opal/nodes/scope.rb +88 -6
- data/lib/opal/nodes/super.rb +52 -25
- data/lib/opal/nodes/top.rb +13 -7
- data/lib/opal/nodes/while.rb +7 -1
- data/lib/opal/parser/patch.rb +2 -1
- data/lib/opal/repl.rb +137 -49
- data/lib/opal/rewriters/binary_operator_assignment.rb +10 -10
- data/lib/opal/rewriters/block_to_iter.rb +3 -3
- data/lib/opal/rewriters/for_rewriter.rb +7 -7
- data/lib/opal/rewriters/js_reserved_words.rb +5 -3
- data/lib/opal/source_map/file.rb +7 -4
- data/lib/opal/source_map/map.rb +17 -3
- data/lib/opal/version.rb +1 -1
- data/opal/corelib/array.rb +2 -2
- data/opal/corelib/binding.rb +46 -0
- data/opal/corelib/boolean.rb +54 -4
- data/opal/corelib/class.rb +2 -0
- data/opal/corelib/constants.rb +2 -2
- data/opal/corelib/error.rb +98 -12
- data/opal/corelib/io.rb +250 -38
- data/opal/corelib/kernel/format.rb +5 -2
- data/opal/corelib/kernel.rb +44 -23
- data/opal/corelib/main.rb +5 -0
- data/opal/corelib/method.rb +1 -0
- data/opal/corelib/module.rb +28 -0
- data/opal/corelib/number.rb +12 -1
- data/opal/corelib/random/seedrandom.js.rb +2 -2
- data/opal/corelib/regexp.rb +47 -3
- data/opal/corelib/runtime.js +152 -12
- data/opal/corelib/string/encoding.rb +17 -17
- data/opal/corelib/string.rb +2 -0
- data/opal/corelib/struct.rb +10 -3
- data/opal/corelib/trace_point.rb +57 -0
- data/opal/opal/full.rb +2 -0
- data/package.json +3 -2
- data/spec/filters/bugs/array.rb +0 -1
- data/spec/filters/bugs/basicobject.rb +0 -1
- data/spec/filters/bugs/binding.rb +27 -0
- data/spec/filters/bugs/enumerator.rb +132 -0
- data/spec/filters/bugs/exception.rb +70 -93
- data/spec/filters/bugs/float.rb +0 -1
- data/spec/filters/bugs/kernel.rb +3 -9
- data/spec/filters/bugs/language.rb +15 -58
- data/spec/filters/bugs/main.rb +16 -0
- data/spec/filters/bugs/matrix.rb +39 -0
- data/spec/filters/bugs/method.rb +0 -2
- data/spec/filters/bugs/module.rb +36 -79
- data/spec/filters/bugs/proc.rb +0 -1
- data/spec/filters/bugs/regexp.rb +0 -16
- data/spec/filters/bugs/trace_point.rb +12 -0
- data/spec/filters/bugs/warnings.rb +0 -4
- data/spec/filters/unsupported/freeze.rb +2 -0
- data/spec/filters/unsupported/privacy.rb +4 -0
- data/spec/lib/compiler_spec.rb +7 -1
- data/spec/lib/repl_spec.rb +4 -2
- data/spec/lib/source_map/file_spec.rb +1 -1
- data/spec/mspec-opal/formatters.rb +18 -4
- data/spec/mspec-opal/runner.rb +2 -2
- data/spec/opal/core/boolean_spec.rb +44 -0
- data/spec/opal/core/hash_spec.rb +8 -0
- data/spec/opal/core/number/to_s_spec.rb +11 -0
- data/spec/opal/stdlib/json/ext_spec.rb +3 -3
- data/spec/opal/stdlib/logger/logger_spec.rb +10 -1
- data/spec/ruby_specs +18 -0
- data/stdlib/await.rb +83 -0
- data/stdlib/base64.rb +4 -4
- data/stdlib/bigdecimal/bignumber.js.rb +4 -2
- data/stdlib/bigdecimal.rb +1 -0
- data/stdlib/gjs/io.rb +33 -0
- data/stdlib/gjs/kernel.rb +5 -0
- data/stdlib/gjs.rb +2 -0
- data/stdlib/js.rb +4 -0
- data/stdlib/json.rb +3 -3
- data/stdlib/logger.rb +1 -1
- data/stdlib/nashorn/file.rb +2 -0
- data/stdlib/nodejs/env.rb +7 -0
- data/stdlib/nodejs/file.rb +6 -41
- data/stdlib/nodejs/io.rb +21 -5
- data/stdlib/nodejs/js-yaml-3-6-1.js +2 -2
- data/stdlib/opal/miniracer.rb +6 -0
- data/stdlib/opal/platform.rb +4 -0
- data/stdlib/opal/repl_js.rb +5 -0
- data/stdlib/opal/replutils.rb +271 -0
- data/stdlib/opal-parser.rb +24 -11
- data/stdlib/opal-platform.rb +8 -0
- data/stdlib/promise/v2.rb +16 -4
- data/stdlib/promise.rb +14 -0
- data/stdlib/stringio.rb +13 -110
- data/stdlib/thread.rb +29 -0
- data/tasks/building.rake +10 -4
- data/tasks/linting-parse-eslint-results.js +39 -0
- data/tasks/linting.rake +38 -28
- data/tasks/performance/asciidoctor_test.rb.erb +6 -0
- data/tasks/performance/optimization_status.rb +77 -0
- data/tasks/performance.rake +149 -0
- data/tasks/testing.rake +9 -1
- data/test/nodejs/test_await.rb +169 -0
- data/test/opal/promisev2/test_error.rb +9 -3
- data/test/opal/unsupported_and_bugs.rb +5 -0
- data/vendored-minitest/minitest/benchmark.rb +9 -7
- data/vendored-minitest/minitest/test.rb +14 -12
- data/vendored-minitest/minitest.rb +19 -16
- data/yarn.lock +686 -117
- metadata +60 -23
- data/.jshintrc +0 -41
- data/spec/filters/unsupported/refinements.rb +0 -8
- data/vendored-minitest/minitest/hell.rb +0 -11
- data/vendored-minitest/minitest/parallel.rb +0 -65
- data/vendored-minitest/minitest/pride.rb +0 -4
- data/vendored-minitest/minitest/pride_plugin.rb +0 -142
- data/vendored-minitest/minitest/unit.rb +0 -45
|
@@ -109,13 +109,13 @@ Encoding.register 'UTF-8', aliases: ['CP65001'], ascii: true do
|
|
|
109
109
|
def each_byte(string, &block)
|
|
110
110
|
%x{
|
|
111
111
|
// Taken from: https://github.com/feross/buffer/blob/f52dffd9df0445b93c0c9065c2f8f0f46b2c729a/index.js#L1954-L2032
|
|
112
|
-
var units = Infinity
|
|
113
|
-
var codePoint
|
|
114
|
-
var length = string.length
|
|
115
|
-
var leadSurrogate = null
|
|
112
|
+
var units = Infinity;
|
|
113
|
+
var codePoint;
|
|
114
|
+
var length = string.length;
|
|
115
|
+
var leadSurrogate = null;
|
|
116
116
|
|
|
117
117
|
for (var i = 0; i < length; ++i) {
|
|
118
|
-
codePoint = string.charCodeAt(i)
|
|
118
|
+
codePoint = string.charCodeAt(i);
|
|
119
119
|
|
|
120
120
|
// is surrogate component
|
|
121
121
|
if (codePoint > 0xD7FF && codePoint < 0xE000) {
|
|
@@ -129,7 +129,7 @@ Encoding.register 'UTF-8', aliases: ['CP65001'], ascii: true do
|
|
|
129
129
|
#{yield `0xBF`};
|
|
130
130
|
#{yield `0xBD`};
|
|
131
131
|
}
|
|
132
|
-
continue
|
|
132
|
+
continue;
|
|
133
133
|
} else if (i + 1 === length) {
|
|
134
134
|
// unpaired lead
|
|
135
135
|
if ((units -= 3) > -1) {
|
|
@@ -137,13 +137,13 @@ Encoding.register 'UTF-8', aliases: ['CP65001'], ascii: true do
|
|
|
137
137
|
#{yield `0xBF`};
|
|
138
138
|
#{yield `0xBD`};
|
|
139
139
|
}
|
|
140
|
-
continue
|
|
140
|
+
continue;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
// valid lead
|
|
144
|
-
leadSurrogate = codePoint
|
|
144
|
+
leadSurrogate = codePoint;
|
|
145
145
|
|
|
146
|
-
continue
|
|
146
|
+
continue;
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
// 2 leads in a row
|
|
@@ -153,12 +153,12 @@ Encoding.register 'UTF-8', aliases: ['CP65001'], ascii: true do
|
|
|
153
153
|
#{yield `0xBF`};
|
|
154
154
|
#{yield `0xBD`};
|
|
155
155
|
}
|
|
156
|
-
leadSurrogate = codePoint
|
|
157
|
-
continue
|
|
156
|
+
leadSurrogate = codePoint;
|
|
157
|
+
continue;
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
// valid surrogate pair
|
|
161
|
-
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
|
|
161
|
+
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
|
|
162
162
|
} else if (leadSurrogate) {
|
|
163
163
|
// valid bmp char, but last char was a lead
|
|
164
164
|
if ((units -= 3) > -1) {
|
|
@@ -168,23 +168,23 @@ Encoding.register 'UTF-8', aliases: ['CP65001'], ascii: true do
|
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
leadSurrogate = null
|
|
171
|
+
leadSurrogate = null;
|
|
172
172
|
|
|
173
173
|
// encode utf8
|
|
174
174
|
if (codePoint < 0x80) {
|
|
175
|
-
if ((units -= 1) < 0) break
|
|
175
|
+
if ((units -= 1) < 0) break;
|
|
176
176
|
#{yield `codePoint`};
|
|
177
177
|
} else if (codePoint < 0x800) {
|
|
178
|
-
if ((units -= 2) < 0) break
|
|
178
|
+
if ((units -= 2) < 0) break;
|
|
179
179
|
#{yield `codePoint >> 0x6 | 0xC0`};
|
|
180
180
|
#{yield `codePoint & 0x3F | 0x80`};
|
|
181
181
|
} else if (codePoint < 0x10000) {
|
|
182
|
-
if ((units -= 3) < 0) break
|
|
182
|
+
if ((units -= 3) < 0) break;
|
|
183
183
|
#{yield `codePoint >> 0xC | 0xE0`};
|
|
184
184
|
#{yield `codePoint >> 0x6 & 0x3F | 0x80`};
|
|
185
185
|
#{yield `codePoint & 0x3F | 0x80`};
|
|
186
186
|
} else if (codePoint < 0x110000) {
|
|
187
|
-
if ((units -= 4) < 0) break
|
|
187
|
+
if ((units -= 4) < 0) break;
|
|
188
188
|
#{yield `codePoint >> 0x12 | 0xF0`};
|
|
189
189
|
#{yield `codePoint >> 0xC & 0x3F | 0x80`};
|
|
190
190
|
#{yield `codePoint >> 0x6 & 0x3F | 0x80`};
|
data/opal/corelib/string.rb
CHANGED
|
@@ -628,6 +628,7 @@ class String < `String`
|
|
|
628
628
|
|
|
629
629
|
def inspect
|
|
630
630
|
%x{
|
|
631
|
+
/* eslint-disable no-misleading-character-class */
|
|
631
632
|
var escapable = /[\\\"\x00-\x1f\u007F-\u009F\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
|
|
632
633
|
meta = {
|
|
633
634
|
'\u0007': '\\a',
|
|
@@ -651,6 +652,7 @@ class String < `String`
|
|
|
651
652
|
}
|
|
652
653
|
});
|
|
653
654
|
return '"' + escaped.replace(/\#[\$\@\{]/g, '\\$&') + '"';
|
|
655
|
+
/* eslint-enable no-misleading-character-class */
|
|
654
656
|
}
|
|
655
657
|
end
|
|
656
658
|
|
data/opal/corelib/struct.rb
CHANGED
|
@@ -5,11 +5,18 @@ class Struct
|
|
|
5
5
|
|
|
6
6
|
def self.new(const_name, *args, keyword_init: false, &block)
|
|
7
7
|
if const_name
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
if const_name.class == String && const_name[0].upcase != const_name[0]
|
|
9
|
+
# Fast track so that we skip needlessly going thru exceptions
|
|
10
|
+
# in most cases.
|
|
11
11
|
args.unshift(const_name)
|
|
12
12
|
const_name = nil
|
|
13
|
+
else
|
|
14
|
+
begin
|
|
15
|
+
const_name = Opal.const_name!(const_name)
|
|
16
|
+
rescue TypeError, NameError
|
|
17
|
+
args.unshift(const_name)
|
|
18
|
+
const_name = nil
|
|
19
|
+
end
|
|
13
20
|
end
|
|
14
21
|
end
|
|
15
22
|
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
class TracePoint
|
|
2
|
+
# partial implementation of TracePoint
|
|
3
|
+
# for the moment only supports the :class event
|
|
4
|
+
def self.trace(event, &block)
|
|
5
|
+
new(event, &block).enable
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
attr_reader :event
|
|
9
|
+
|
|
10
|
+
def initialize(event, &block)
|
|
11
|
+
raise 'Only the :class event is supported' unless event == :class
|
|
12
|
+
@event = event
|
|
13
|
+
@block = block
|
|
14
|
+
@trace_object = nil
|
|
15
|
+
@trace_evt = "trace_#{@event}"
|
|
16
|
+
@tracers_for_evt = "tracers_for_#{@event}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def enable(*args, &enable_block)
|
|
20
|
+
previous_state = enabled?
|
|
21
|
+
%x{
|
|
22
|
+
Opal[#{@tracers_for_evt}].push(self);
|
|
23
|
+
Opal[#{@trace_evt}] = true;
|
|
24
|
+
}
|
|
25
|
+
if block_given?
|
|
26
|
+
yield
|
|
27
|
+
disable
|
|
28
|
+
end
|
|
29
|
+
previous_state
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def enabled?
|
|
33
|
+
`Opal[#{@trace_evt}] && Opal[#{@tracers_for_evt}].includes(self)`
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def disable
|
|
37
|
+
%x{
|
|
38
|
+
var idx = Opal[#{@tracers_for_evt}].indexOf(self)
|
|
39
|
+
|
|
40
|
+
if (idx > -1) {
|
|
41
|
+
Opal[#{@tracers_for_evt}].splice(idx, 1);
|
|
42
|
+
|
|
43
|
+
if (Opal[#{@tracers_for_evt}].length === 0) {
|
|
44
|
+
Opal[#{@trace_evt}] = false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return true;
|
|
48
|
+
} else {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self
|
|
55
|
+
@trace_object
|
|
56
|
+
end
|
|
57
|
+
end
|
data/opal/opal/full.rb
CHANGED
data/package.json
CHANGED
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"benchmark": "^2.1.4",
|
|
6
6
|
"browserify": "^17.0.0",
|
|
7
|
-
"jshint": "^2.11.0-rc1",
|
|
8
7
|
"source-map-support": "0.5.19",
|
|
9
8
|
"uglify-js": "^3.7.2"
|
|
10
9
|
},
|
|
11
|
-
"devDependencies": {
|
|
10
|
+
"devDependencies": {
|
|
11
|
+
"eslint": "^7.32.0"
|
|
12
|
+
},
|
|
12
13
|
"repository": {
|
|
13
14
|
"type": "git",
|
|
14
15
|
"url": "git+https://github.com/opal/opal.git"
|
data/spec/filters/bugs/array.rb
CHANGED
|
@@ -31,7 +31,6 @@ opal_filter "Array" do
|
|
|
31
31
|
fails "Array#flatten performs respond_to? and method_missing-aware checks when coercing elements to array"
|
|
32
32
|
fails "Array#flatten with a non-Array object in the Array calls #method_missing if defined"
|
|
33
33
|
fails "Array#inspect does not call #to_str on the object returned from #to_s when it is not a String" # Exception: Cannot convert object to primitive value
|
|
34
|
-
fails "Array#join raises a NoMethodError if an element does not respond to #to_str, #to_ary, or #to_s"
|
|
35
34
|
fails "Array#partition returns in the left array values for which the block evaluates to true"
|
|
36
35
|
fails "Array#rassoc calls elem == obj on the second element of each contained array"
|
|
37
36
|
fails "Array#rassoc does not check the last element in each contained but specifically the second" # Expected [1, "foobar", #<MockObject:0x4ef6e>] to equal [2, #<MockObject:0x4ef6e>, 1]
|
|
@@ -6,7 +6,6 @@ opal_filter "BasicObject" do
|
|
|
6
6
|
fails "BasicObject#instance_eval evaluates string with given filename and linenumber"
|
|
7
7
|
fails "BasicObject#instance_eval evaluates string with given filename and negative linenumber" # Expected ["RuntimeError"] to equal ["b_file", "-98"]
|
|
8
8
|
fails "BasicObject#instance_eval has access to the caller's local variables" # Expected nil to equal "value"
|
|
9
|
-
fails "BasicObject#instance_exec binds the block's binding self to the receiver"
|
|
10
9
|
fails "BasicObject#instance_exec raises a LocalJumpError unless given a block"
|
|
11
10
|
fails "BasicObject#method_missing for an instance sets the receiver of the raised NoMethodError"
|
|
12
11
|
fails "BasicObject#singleton_method_added when singleton_method_added is undefined calls #method_missing" # Expected [] == [["singleton_method_added", "foo"], ["singleton_method_added", "bar"], ["singleton_method_added", "baz"]] to be truthy but was false
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# NOTE: run bin/format-filters after changing this file
|
|
2
|
+
opal_filter "Binding" do
|
|
3
|
+
fails "Binding#clone is a shallow copy of the Binding object" # NoMethodError: undefined method `a' for #<BindingSpecs::Demo:0x1c7b0>
|
|
4
|
+
fails "Binding#clone returns a copy of the Binding object" # NoMethodError: undefined method `a' for #<BindingSpecs::Demo:0x1c958>
|
|
5
|
+
fails "Binding#dup is a shallow copy of the Binding object" # NoMethodError: undefined method `a' for #<BindingSpecs::Demo:0x67b30>
|
|
6
|
+
fails "Binding#dup returns a copy of the Binding object" # NoMethodError: undefined method `a' for #<BindingSpecs::Demo:0x67cd8>
|
|
7
|
+
fails "Binding#eval behaves like Kernel.eval(..., self)" # NoMethodError: undefined method `a' for #<BindingSpecs::Demo:0x8e1d4>
|
|
8
|
+
fails "Binding#eval does not leak variables to cloned bindings" # Expected [] == ["x"] to be truthy but was false
|
|
9
|
+
fails "Binding#eval reflects refinements activated in the binding scope" # NameError: uninitialized constant BindingSpecs::Refined
|
|
10
|
+
fails "Binding#eval starts with a __LINE__ from the third argument if passed" # Expected 1 == 88 to be truthy but was false
|
|
11
|
+
fails "Binding#eval starts with line 1 if the Binding is created with #send" # RuntimeError: Opal doesn't support dynamic calls to binding
|
|
12
|
+
fails "Binding#eval with __method__ returns the method where the Binding was created" # Expected nil == "get_binding_and_method" to be truthy but was false
|
|
13
|
+
fails "Binding#eval with __method__ returns the method where the Binding was created, ignoring #send" # Expected nil == "get_binding_with_send_and_method" to be truthy but was false
|
|
14
|
+
fails "Binding#irb creates an IRB session with the binding in scope" # NoMethodError: undefined method `popen' for IO
|
|
15
|
+
fails "Binding#local_variable_defined? allows usage of an object responding to #to_str as the variable name" # Expected false == true to be truthy but was false
|
|
16
|
+
fails "Binding#local_variable_defined? returns true when a local variable is defined using Binding#local_variable_set" # Expected false == true to be truthy but was false
|
|
17
|
+
fails "Binding#local_variable_defined? returns true when a local variable is defined using eval()" # Expected false == true to be truthy but was false
|
|
18
|
+
fails "Binding#local_variable_get gets a local variable defined using eval()" # Exception: number is not defined
|
|
19
|
+
fails "Binding#local_variable_set adds nonexistent variables to the binding's eval scope" # NoMethodError: undefined method `local_variables' for #<BindingSpecs::Demo:0x77602>
|
|
20
|
+
fails "Binding#local_variable_set raises a NameError on global access" # Expected NameError but no exception was raised ("" was returned)
|
|
21
|
+
fails "Binding#local_variable_set raises a NameError on special variable access" # Expected NameError but got: Exception (Unexpected token '~')
|
|
22
|
+
fails "Binding#local_variable_set sets a local variable using an object responding to #to_str as the variable name" # Exception: Invalid or unexpected token
|
|
23
|
+
fails "Binding#local_variables includes local variables defined after calling binding.local_variables" # Expected [] == ["a", "b"] to be truthy but was false
|
|
24
|
+
fails "Binding#local_variables includes local variables of inherited scopes and eval'ed context" # Expected ["c"] == ["c", "a", "b", "p"] to be truthy but was false
|
|
25
|
+
fails "Binding#local_variables includes new variables defined in the binding" # Expected ["b"] == ["a", "b"] to be truthy but was false
|
|
26
|
+
fails "Proc#curry produces Procs that raise ArgumentError for #binding" # Expected ArguentError but no exception was raised (#<Binding:0x1ade4> was returned)
|
|
27
|
+
end
|
|
@@ -45,4 +45,136 @@ opal_filter "Enumerator" do
|
|
|
45
45
|
fails "Enumerator.produce terminates iteration when block raises StopIteration exception" # NoMethodError: undefined method `produce' for Enumerator
|
|
46
46
|
fails "Enumerator.produce when initial value skipped starts enumerable from result of first block call" # NoMethodError: undefined method `produce' for Enumerator
|
|
47
47
|
fails "Enumerator.produce when initial value skipped uses nil instead" # NoMethodError: undefined method `produce' for Enumerator
|
|
48
|
+
fails "Enumerator::Generator#each returns the block returned value" # Expected #<Enumerator::Generator:0x74c7e> to be identical to "block_returned"
|
|
49
|
+
fails "Enumerator::Generator#initialize returns self when given a block" # Expected #<Proc:0x1b2ee> to be identical to #<Enumerator::Generator:0x1b2e2>
|
|
50
|
+
fails "Enumerator::Lazy defines lazy versions of a whitelist of Enumerator methods" # Expected ["initialize", "force", "lazy", "collect", "collect_concat", "drop", "drop_while", "enum_for", "filter", "find_all", "flat_map", "grep", "map", "select", "reject", "take", "take_while", "to_enum", "inspect"] to include "chunk"
|
|
51
|
+
fails "Enumerator::Lazy#chunk calls the block with gathered values when yield with multiple arguments" # NoMethodError: undefined method `force' for #<Enumerator: #<Enumerator::Generator:0x5dcd4>:each>
|
|
52
|
+
fails "Enumerator::Lazy#chunk on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected 0 == 2 to be truthy but was false
|
|
53
|
+
fails "Enumerator::Lazy#chunk returns a new instance of Enumerator::Lazy" # Expected #<Enumerator: #<Enumerator::Generator:0x5dcbc>:each> (Enumerator) to be an instance of Enumerator::Lazy
|
|
54
|
+
fails "Enumerator::Lazy#chunk returns an Enumerator if called without a block" # NoMethodError: undefined method `force' for #<Enumerator: #<Enumerator::Generator:0x5dc8a>:each>
|
|
55
|
+
fails "Enumerator::Lazy#chunk when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Exception: Object.defineProperty called on non-object
|
|
56
|
+
fails "Enumerator::Lazy#chunk works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
57
|
+
fails "Enumerator::Lazy#chunk_while should return a lazy enumerator" # Expected #<Enumerator: #<Enumerator::Generator:0x5174c>:each> (Enumerator) to be kind of Enumerator::Lazy
|
|
58
|
+
fails "Enumerator::Lazy#chunk_while works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
59
|
+
fails "Enumerator::Lazy#collect on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [2, 3, 4] to be truthy but was false
|
|
60
|
+
fails "Enumerator::Lazy#collect when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [1, 2, 3] to be truthy but was false
|
|
61
|
+
fails "Enumerator::Lazy#collect works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
62
|
+
fails "Enumerator::Lazy#collect_concat on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first flattens elements when the given block returned an array or responding to .each and .force" # Expected [] == ["0", "1", "0", "2", "0", "3"] to be truthy but was false
|
|
63
|
+
fails "Enumerator::Lazy#collect_concat on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == ["0", "10", "20", "30", "40", "50"] to be truthy but was false
|
|
64
|
+
fails "Enumerator::Lazy#collect_concat when the returned lazy enumerator is evaluated by Enumerable#first flattens elements when the given block returned an array or responding to .each and .force" # Expected [] == ["0", "1", "0", "2", "0", "3"] to be truthy but was false
|
|
65
|
+
fails "Enumerator::Lazy#collect_concat when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == ["0", "10", "20", "30", "40", "50"] to be truthy but was false
|
|
66
|
+
fails "Enumerator::Lazy#collect_concat works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
67
|
+
fails "Enumerator::Lazy#drop on a nested Lazy sets difference of given count with old size to new size" # Expected 20 == 30 to be truthy but was false
|
|
68
|
+
fails "Enumerator::Lazy#drop on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [4, 5] to be truthy but was false
|
|
69
|
+
fails "Enumerator::Lazy#drop sets difference of given count with old size to new size" # Expected 20 == 80 to be truthy but was false
|
|
70
|
+
fails "Enumerator::Lazy#drop when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [2, 3] to be truthy but was false
|
|
71
|
+
fails "Enumerator::Lazy#drop works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
72
|
+
fails "Enumerator::Lazy#drop_while on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [6, 7] to be truthy but was false
|
|
73
|
+
fails "Enumerator::Lazy#drop_while when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [5, 6] to be truthy but was false
|
|
74
|
+
fails "Enumerator::Lazy#drop_while works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
75
|
+
fails "Enumerator::Lazy#eager does not enumerate an enumerator" # NoMethodError: undefined method `eager' for #<Enumerator::Lazy: [1, 2, 3]>
|
|
76
|
+
fails "Enumerator::Lazy#eager returns a non-lazy Enumerator converted from the lazy enumerator" # NoMethodError: undefined method `eager' for #<Enumerator::Lazy: [1, 2, 3]>
|
|
77
|
+
fails "Enumerator::Lazy#enum_for generates a lazy enumerator from the given name" # Expected [] == [[0, 10], [1, 11], [2, 12]] to be truthy but was false
|
|
78
|
+
fails "Enumerator::Lazy#enum_for passes given arguments to wrapped method" # Expected [] == [0, 6, 20, 42] to be truthy but was false
|
|
79
|
+
fails "Enumerator::Lazy#enum_for works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
80
|
+
fails "Enumerator::Lazy#filter calls the block with a gathered array when yield with multiple arguments" # NoMethodError: undefined method `force' for [[], 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]]
|
|
81
|
+
fails "Enumerator::Lazy#filter on a nested Lazy sets #size to nil" # Expected 0 == nil to be truthy but was false
|
|
82
|
+
fails "Enumerator::Lazy#filter on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [6, 8, 10] to be truthy but was false
|
|
83
|
+
fails "Enumerator::Lazy#filter raises an ArgumentError when not given a block" # Expected ArgumentError but no exception was raised (#<Enumerator::Lazy: nil> was returned)
|
|
84
|
+
fails "Enumerator::Lazy#filter returns a new instance of Enumerator::Lazy" # Expected [] (Array) to be an instance of Enumerator::Lazy
|
|
85
|
+
fails "Enumerator::Lazy#filter sets #size to nil" # Expected 0 == nil to be truthy but was false
|
|
86
|
+
fails "Enumerator::Lazy#filter when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [0, 2, 4] to be truthy but was false
|
|
87
|
+
fails "Enumerator::Lazy#filter works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
88
|
+
fails "Enumerator::Lazy#filter_map does not map false results" # Expected [] == [1, 3, 5, 7] to be truthy but was false
|
|
89
|
+
fails "Enumerator::Lazy#filter_map maps only truthy results" # Expected [] == [1, 3, 5, 7] to be truthy but was false
|
|
90
|
+
fails "Enumerator::Lazy#find_all calls the block with a gathered array when yield with multiple arguments" # Expected [nil, 0, 0, 0, 0, nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] == [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] to be truthy but was false
|
|
91
|
+
fails "Enumerator::Lazy#find_all on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [6, 8, 10] to be truthy but was false
|
|
92
|
+
fails "Enumerator::Lazy#find_all when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [0, 2, 4] to be truthy but was false
|
|
93
|
+
fails "Enumerator::Lazy#find_all works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
94
|
+
fails "Enumerator::Lazy#flat_map on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first flattens elements when the given block returned an array or responding to .each and .force" # Expected [] == ["0", "1", "0", "2", "0", "3"] to be truthy but was false
|
|
95
|
+
fails "Enumerator::Lazy#flat_map on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == ["0", "10", "20", "30", "40", "50"] to be truthy but was false
|
|
96
|
+
fails "Enumerator::Lazy#flat_map when the returned lazy enumerator is evaluated by Enumerable#first flattens elements when the given block returned an array or responding to .each and .force" # Expected [] == ["0", "1", "0", "2", "0", "3"] to be truthy but was false
|
|
97
|
+
fails "Enumerator::Lazy#flat_map when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == ["0", "10", "20", "30", "40", "50"] to be truthy but was false
|
|
98
|
+
fails "Enumerator::Lazy#flat_map works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
99
|
+
fails "Enumerator::Lazy#force on a nested Lazy calls all block and returns an Array" # Expected [] == [1, 2] to be truthy but was false
|
|
100
|
+
fails "Enumerator::Lazy#force passes given arguments to receiver.each" # Expected [[], 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "arg1", ["arg2", "arg3"], [], [0], [0, 1], [0, 1, 2]] == [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "arg1", ["arg2", "arg3"], [], [0], [0, 1], [0, 1, 2]] to be truthy but was false
|
|
101
|
+
fails "Enumerator::Lazy#force works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
102
|
+
fails "Enumerator::Lazy#grep calls the block with a gathered array when yield with multiple arguments" # Expected [[], [], 0, 0, [0, 1], [...], [0, 1, 2], [...], [0, 1, 2], [...], nil, nil, "default_arg", "default_arg", [], [], [], [], [0], [...], [0, 1], [...], [0, 1, 2], [...]] == [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] to be truthy but was false
|
|
103
|
+
fails "Enumerator::Lazy#grep on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when given a block" # Exception: Object.defineProperty called on non-object
|
|
104
|
+
fails "Enumerator::Lazy#grep on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when not given a block" # Expected [] == [0, 1, 2] to be truthy but was false
|
|
105
|
+
fails "Enumerator::Lazy#grep when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when given a block" # Expected [] == [1, 2, 3] to be truthy but was false
|
|
106
|
+
fails "Enumerator::Lazy#grep when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when not given a block" # Expected [] == [0, 1, 2] to be truthy but was false
|
|
107
|
+
fails "Enumerator::Lazy#grep works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
108
|
+
fails "Enumerator::Lazy#grep_v calls the block with a gathered array when yield with multiple arguments" # NoMethodError: undefined method `force' for [[nil, 0, nil, "default_arg"], [nil, 0, nil, "default_arg"], [nil, 0, nil, "default_arg"], [nil, 0, nil, "default_arg"]]
|
|
109
|
+
fails "Enumerator::Lazy#grep_v on a nested Lazy sets #size to nil" # Expected 0 == nil to be truthy but was false
|
|
110
|
+
fails "Enumerator::Lazy#grep_v on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when given a block" # Exception: Object.defineProperty called on non-object
|
|
111
|
+
fails "Enumerator::Lazy#grep_v on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when not given a block" # Expected [] == [0, 1, 2] to be truthy but was false
|
|
112
|
+
fails "Enumerator::Lazy#grep_v returns a new instance of Enumerator::Lazy" # Expected [] (Array) to be an instance of Enumerator::Lazy
|
|
113
|
+
fails "Enumerator::Lazy#grep_v sets #size to nil" # Expected 0 == nil to be truthy but was false
|
|
114
|
+
fails "Enumerator::Lazy#grep_v sets $~ in the block" # NoMethodError: undefined method `force' for [nil]
|
|
115
|
+
fails "Enumerator::Lazy#grep_v sets $~ in the next block with each" # Expected #<MatchData>(#pretty_inspect raised #<NoMethodError: undefined method `named_captures' for /e/>) == nil to be truthy but was false
|
|
116
|
+
fails "Enumerator::Lazy#grep_v sets $~ in the next block with map" # Expected #<MatchData>(#pretty_inspect raised #<NoMethodError: undefined method `named_captures' for /e/>) == nil to be truthy but was false
|
|
117
|
+
fails "Enumerator::Lazy#grep_v when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when given a block" # Expected [] == [1, 2, 3] to be truthy but was false
|
|
118
|
+
fails "Enumerator::Lazy#grep_v when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times when not given a block" # Expected [] == [0, 1, 2] to be truthy but was false
|
|
119
|
+
fails "Enumerator::Lazy#grep_v works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
120
|
+
fails "Enumerator::Lazy#initialize returns self" # Expected nil to be identical to #<Enumerator::Lazy: #<Object:0x4d524>>
|
|
121
|
+
fails "Enumerator::Lazy#initialize sets #size to nil if given size is nil" # NoMethodError: undefined method `size' for nil
|
|
122
|
+
fails "Enumerator::Lazy#initialize sets #size to nil if not given a size" # NoMethodError: undefined method `size' for nil
|
|
123
|
+
fails "Enumerator::Lazy#initialize sets given size to own size if the given size is Float::INFINITY" # Expected 4 to be identical to Infinity
|
|
124
|
+
fails "Enumerator::Lazy#initialize sets given size to own size if the given size is a Proc" # NoMethodError: undefined method `size' for nil
|
|
125
|
+
fails "Enumerator::Lazy#initialize sets given size to own size if the given size is an Integer" # Expected 4 == 100 to be truthy but was false
|
|
126
|
+
fails "Enumerator::Lazy#initialize when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # NoMethodError: undefined method `first' for nil
|
|
127
|
+
fails "Enumerator::Lazy#map on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [2, 3, 4] to be truthy but was false
|
|
128
|
+
fails "Enumerator::Lazy#map when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [1, 2, 3] to be truthy but was false
|
|
129
|
+
fails "Enumerator::Lazy#map works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
130
|
+
fails "Enumerator::Lazy#reject calls the block with a gathered array when yield with multiple arguments" # Expected [nil, 0, 0, 0, 0, nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] == [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] to be truthy but was false
|
|
131
|
+
fails "Enumerator::Lazy#reject lets exceptions raised in the block go through" # Expected RuntimeError (foo) but no exception was raised (#<Enumerator::Generator:0x44bec> was returned)
|
|
132
|
+
fails "Enumerator::Lazy#reject on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [5, 7, 9] to be truthy but was false
|
|
133
|
+
fails "Enumerator::Lazy#reject when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [1, 3, 5] to be truthy but was false
|
|
134
|
+
fails "Enumerator::Lazy#reject works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
135
|
+
fails "Enumerator::Lazy#select calls the block with a gathered array when yield with multiple arguments" # Expected [nil, 0, 0, 0, 0, nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] == [nil, 0, [0, 1], [0, 1, 2], [0, 1, 2], nil, "default_arg", [], [], [0], [0, 1], [0, 1, 2]] to be truthy but was false
|
|
136
|
+
fails "Enumerator::Lazy#select doesn't over-evaluate when peeked" # NoMethodError: undefined method `peek' for #<Enumerator::Lazy: #<Enumerator::Lazy: ["Text1", "Text2", "Text3"]>>
|
|
137
|
+
fails "Enumerator::Lazy#select doesn't pre-evaluate the next element" # NoMethodError: undefined method `next' for #<Enumerator::Lazy: #<Enumerator::Lazy: ["Text1", "Text2", "Text3"]>>
|
|
138
|
+
fails "Enumerator::Lazy#select doesn't re-evaluate after peek" # NoMethodError: undefined method `peek' for #<Enumerator::Lazy: #<Enumerator::Lazy: ["Text1", "Text2", "Text3"]>>
|
|
139
|
+
fails "Enumerator::Lazy#select on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [6, 8, 10] to be truthy but was false
|
|
140
|
+
fails "Enumerator::Lazy#select when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [0, 2, 4] to be truthy but was false
|
|
141
|
+
fails "Enumerator::Lazy#select works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
142
|
+
fails "Enumerator::Lazy#slice_after should return a lazy enumerator" # Expected #<Enumerator: #<Enumerator::Generator:0x53eae>:each> (Enumerator) to be kind of Enumerator::Lazy
|
|
143
|
+
fails "Enumerator::Lazy#slice_after works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
144
|
+
fails "Enumerator::Lazy#slice_before should return a lazy enumerator" # Expected #<Enumerator: #<Enumerator::Generator:0x72c3a>:each> (Enumerator) to be kind of Enumerator::Lazy
|
|
145
|
+
fails "Enumerator::Lazy#slice_before works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
146
|
+
fails "Enumerator::Lazy#slice_when should return a lazy enumerator" # Expected #<Enumerator: #<Enumerator::Generator:0x50bb6>:each> (Enumerator) to be kind of Enumerator::Lazy
|
|
147
|
+
fails "Enumerator::Lazy#slice_when works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
148
|
+
fails "Enumerator::Lazy#take on a nested Lazy when the returned lazy enumerator is evaluated by .force stops after specified times" # Expected [] == [1, 2] to be truthy but was false
|
|
149
|
+
fails "Enumerator::Lazy#take on a nested Lazy when the returned lazy enumerator is evaluated by .force stops without iterations if the given argument is 0" # Expected ["before_yield"] == [] to be truthy but was false
|
|
150
|
+
fails "Enumerator::Lazy#take sets given count to size if the old size is Infinity" # Expected Infinity == 20 to be truthy but was false
|
|
151
|
+
fails "Enumerator::Lazy#take when the returned lazy enumerator is evaluated by .force stops after specified times" # Expected [] == [0, 1] to be truthy but was false
|
|
152
|
+
fails "Enumerator::Lazy#take when the returned lazy enumerator is evaluated by .force stops without iterations if the given argument is 0" # Expected ["before_yield"] == [] to be truthy but was false
|
|
153
|
+
fails "Enumerator::Lazy#take_while on a nested Lazy when the returned lazy enumerator is evaluated by .force stops after specified times" # Expected [] == [0] to be truthy but was false
|
|
154
|
+
fails "Enumerator::Lazy#take_while when the returned lazy enumerator is evaluated by .force stops after specified times" # Expected [] == [0, 1, 2] to be truthy but was false
|
|
155
|
+
fails "Enumerator::Lazy#to_enum generates a lazy enumerator from the given name" # Expected [] == [[0, 10], [1, 11], [2, 12]] to be truthy but was false
|
|
156
|
+
fails "Enumerator::Lazy#to_enum passes given arguments to wrapped method" # Expected [] == [0, 6, 20, 42] to be truthy but was false
|
|
157
|
+
fails "Enumerator::Lazy#to_enum works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
158
|
+
fails "Enumerator::Lazy#uniq when yielded with an argument return same value after rewind" # NoMethodError: undefined method `force' for [0, 1]
|
|
159
|
+
fails "Enumerator::Lazy#uniq when yielded with an argument returns a lazy enumerator" # Expected [0, 1] (Array) to be an instance of Enumerator::Lazy
|
|
160
|
+
fails "Enumerator::Lazy#uniq when yielded with an argument sets the size to nil" # Expected 2 == nil to be truthy but was false
|
|
161
|
+
fails "Enumerator::Lazy#uniq when yielded with multiple arguments return same value after rewind" # NoMethodError: undefined method `force' for [[0, "foo"], [2, "bar"]]
|
|
162
|
+
fails "Enumerator::Lazy#uniq when yielded with multiple arguments returns all yield arguments as an array" # NoMethodError: undefined method `force' for [[0, "foo"], [2, "bar"]]
|
|
163
|
+
fails "Enumerator::Lazy#uniq without block return same value after rewind" # NoMethodError: undefined method `force' for [0, 1]
|
|
164
|
+
fails "Enumerator::Lazy#uniq without block returns a lazy enumerator" # Expected [0, 1] (Array) to be an instance of Enumerator::Lazy
|
|
165
|
+
fails "Enumerator::Lazy#uniq without block sets the size to nil" # Expected 2 == nil to be truthy but was false
|
|
166
|
+
fails "Enumerator::Lazy#uniq works with an infinite enumerable" # TypeError: can't iterate from Float
|
|
167
|
+
fails "Enumerator::Lazy#zip calls the block with a gathered array when yield with multiple arguments" # NoMethodError: undefined method `force' for [[[], []], [0, 0], [[0, 1], [0, 1]], [[0, 1, 2], [0, 1, 2]], [[0, 1, 2], [0, 1, 2]], [nil, nil], ["default_arg", "default_arg"], [[], []], [[], []], [[0], [0]], [[0, 1], [0, 1]], [[0, 1, 2], [0, 1, 2]]]
|
|
168
|
+
fails "Enumerator::Lazy#zip keeps size" # Expected 0 == 100 to be truthy but was false
|
|
169
|
+
fails "Enumerator::Lazy#zip on a nested Lazy keeps size" # Expected 0 == 100 to be truthy but was false
|
|
170
|
+
fails "Enumerator::Lazy#zip on a nested Lazy when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [[1, 4, 8], [2, 5, nil]] to be truthy but was false
|
|
171
|
+
fails "Enumerator::Lazy#zip raises a TypeError if arguments contain non-list object" # Expected TypeError but got: NoMethodError (undefined method `each' for #<Object:0x5898c>)
|
|
172
|
+
fails "Enumerator::Lazy#zip returns a Lazy when no arguments given" # Expected [[[]], [0], [[0, 1]], [[0, 1, 2]], [[0, 1, 2]], [nil], ["default_arg"], [[]], [[]], [[0]], [[0, 1]], [[0, 1, 2]]] (Array) to be an instance of Enumerator::Lazy
|
|
173
|
+
fails "Enumerator::Lazy#zip returns a new instance of Enumerator::Lazy" # Expected [[[], nil], [0, nil], [[0, 1], nil], [[0, 1, 2], nil], [[0, 1, 2], nil], [nil, nil], ["default_arg", nil], [[], nil], [[], nil], [[0], nil], [[0, 1], nil], [[0, 1, 2], nil]] (Array) to be an instance of Enumerator::Lazy
|
|
174
|
+
fails "Enumerator::Lazy#zip when the returned lazy enumerator is evaluated by Enumerable#first stops after specified times" # Expected [] == [[0, 4, 8], [1, 5, nil]] to be truthy but was false
|
|
175
|
+
fails "Enumerator::Lazy#zip works with an infinite enumerable and an array" # TypeError: can't iterate from Float
|
|
176
|
+
fails "Enumerator::Lazy#zip works with two infinite enumerables" # TypeError: can't iterate from Float
|
|
177
|
+
fails "Enumerator::Yielder#<< when multiple arguments passed raises an ArgumentError" # Expected ArgumentError (/wrong number of arguments/) but no exception was raised (#<Enumerator::Yielder:0x4b442> was returned)
|
|
178
|
+
fails "Enumerator::Yielder#initialize returns self when given a block" # Expected #<Proc:0x3d4f8> to be identical to #<Enumerator::Yielder:0x3d4ec>
|
|
179
|
+
fails "Enumerator::Yielder#to_proc returns a Proc object that takes an argument and yields it to the block" # Expected Enumerator::Yielder == Proc to be truthy but was false
|
|
48
180
|
end
|