From 00db00c2aaf067c3214558e4060fe8b32b9ad8f6 Mon Sep 17 00:00:00 2001 From: Victor Date: Tue, 24 Sep 2019 23:08:57 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B8=D1=82=D0=B5=D1=80=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=20=D0=B2=20std::range=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B2=D0=BD=D1=8B=D1=85=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=BC=D0=B5=D0=B6=D1=83=D1=82=D0=BA=D0=BE=D0=B2.?= =?UTF-8?q?=20Fix=20#3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/annimon/ownlang/modules/std/std_range.java | 4 ++-- src/test/resources/modules/std/range.own | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/annimon/ownlang/modules/std/std_range.java b/src/main/java/com/annimon/ownlang/modules/std/std_range.java index 19e8c9c..fdad682 100644 --- a/src/main/java/com/annimon/ownlang/modules/std/std_range.java +++ b/src/main/java/com/annimon/ownlang/modules/std/std_range.java @@ -134,7 +134,7 @@ public final class std_range implements Function { @Override public boolean hasNext() { - return value < toInt; + return (stepInt > 0) ? (value < toInt) : (value > toInt); } @Override @@ -154,7 +154,7 @@ public final class std_range implements Function { @Override public boolean hasNext() { - return value < to; + return (step > 0) ? (value < to) : (value > to); } @Override diff --git a/src/test/resources/modules/std/range.own b/src/test/resources/modules/std/range.own index ae616db..85a60ed 100644 --- a/src/test/resources/modules/std/range.own +++ b/src/test/resources/modules/std/range.own @@ -28,6 +28,18 @@ def testRangeParamsReversed() { assertEquals(5, x[5]) } +def testRangeIterator() { + x = range(0, 9, 2) + arr = reduce(x, [], def(acc, e) = acc += e) + assertEquals([0, 2, 4, 6, 8], arr) +} + +def testRangeReversedIterator() { + x = range(20, 9, -2) + arr = reduce(x, [], def(acc, e) = acc += e) + assertEquals([20, 18, 16, 14, 12, 10], arr) +} + def testRangeLength() { assertEquals(10, length(range(0, 10, 1))) assertEquals(5, length(range(0, 10, 2)))