summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 21:12:02 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 21:12:02 +0000
commit77e50caaf2ef81cd91075cf836fed0e75718ffb4 (patch)
tree53b7b411290b63192fc9e924a3b6b65cdf67e9d0 /debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
parentAdding upstream version 1.8.3. (diff)
downloaddnsdist-77e50caaf2ef81cd91075cf836fed0e75718ffb4.tar.xz
dnsdist-77e50caaf2ef81cd91075cf836fed0e75718ffb4.zip
Adding debian version 1.8.3-2.debian/1.8.3-2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb53
1 files changed, 53 insertions, 0 deletions
diff --git a/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb b/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
new file mode 100644
index 0000000..940d070
--- /dev/null
+++ b/debian/vendor-h2o/deps/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb
@@ -0,0 +1,53 @@
+assert("Enumerator::Lazy") do
+ a = [1, 2]
+ assert_equal Enumerator::Lazy, a.lazy.class
+end
+
+assert("Enumerator::Lazy laziness") do
+ a = Object.new
+ def a.each
+ return to_enum :each unless block_given?
+ self.b << 10
+ yield 1
+ self.b << 20
+ yield 2
+ self.b << 30
+ yield 3
+ self.b << 40
+ yield 4
+ self.b << 50
+ yield 5
+ end
+ def a.b(b=nil)
+ @b = b if b
+ @b
+ end
+
+ a.b([])
+ assert_equal [1,2], a.each.lazy.take(2).force
+ assert_equal [10,20], a.b
+
+ a.b([])
+ assert_equal [2,4], a.each.lazy.select{|x|x%2==0}.take(2).force
+ assert_equal [10,20,30,40], a.b
+
+ a.b([])
+ assert_equal [1], a.each.lazy.take_while{|x|x<2}.take(1).force
+ assert_equal [10], a.b
+
+ a.b([])
+ assert_equal [1], a.each.lazy.take_while{|x|x<2}.take(4).force
+ assert_equal [10,20], a.b
+end
+
+assert("Enumrator::Lazy#to_enum") do
+ lazy_enum = (0..Float::INFINITY).lazy.to_enum(:each_slice, 2)
+ assert_kind_of Enumerator::Lazy, lazy_enum
+ assert_equal [0*1, 2*3, 4*5, 6*7], lazy_enum.map { |a| a.first * a.last }.first(4)
+end
+
+assert("Enumerator::Lazy#zip with cycle") do
+ e1 = [1, 2, 3].cycle
+ e2 = [:a, :b].cycle
+ assert_equal [[1,:a],[2,:b],[3,:a]], e1.lazy.zip(e2).first(3)
+end