From bb8dc496922099c8c6f0f80e1b882931c829fd56 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Wed, 4 Jul 2012 09:19:03 +0100 Subject: [PATCH] added more iterator based tests to the JS compilation; exposes some issue with enums... --- .../test/semantics/StdLibTestToJSTest.java | 4 +-- .../src/org/jetbrains/k2js/config/Config.java | 4 +-- .../src/kotlin/support/AbstractIterator.kt | 2 +- .../stdlib/test/iterators/IteratorsJVMTest.kt | 28 +++++++++++++++++ .../stdlib/test/iterators/IteratorsTest.kt | 31 ++++--------------- 5 files changed, 39 insertions(+), 30 deletions(-) create mode 100644 libraries/stdlib/test/iterators/IteratorsJVMTest.kt diff --git a/js/js.tests/test/org/jetbrains/k2js/test/semantics/StdLibTestToJSTest.java b/js/js.tests/test/org/jetbrains/k2js/test/semantics/StdLibTestToJSTest.java index eca17858bfe..93b2ea70a58 100644 --- a/js/js.tests/test/org/jetbrains/k2js/test/semantics/StdLibTestToJSTest.java +++ b/js/js.tests/test/org/jetbrains/k2js/test/semantics/StdLibTestToJSTest.java @@ -27,8 +27,8 @@ public class StdLibTestToJSTest extends StdLibTestSupport { "dom/DomTest.kt", "js/MapTest.kt", "js/JsDomTest.kt", - //"iterators/FunctionIteratorTest.kt", - //"iterators/IteratorsTest.kt", + "iterators/FunctionIteratorTest.kt", + "iterators/IteratorsTest.kt", "GetOrElseTest.kt", "ListTest.kt", "SetTest.kt", diff --git a/js/js.translator/src/org/jetbrains/k2js/config/Config.java b/js/js.translator/src/org/jetbrains/k2js/config/Config.java index 583d7800149..db3ed5d4cc6 100644 --- a/js/js.translator/src/org/jetbrains/k2js/config/Config.java +++ b/js/js.translator/src/org/jetbrains/k2js/config/Config.java @@ -115,8 +115,8 @@ public abstract class Config { "/kotlin/JLangIterables.kt", "/kotlin/JLangIterablesLazy.kt", "/kotlin/JLangIterablesSpecial.kt", - // TODO "/generated/JUtilIteratorsFromJLangIterables.kt", - // TODO "/generated/JUtilIterablesFromJUtilCollections.kt", + "/generated/JUtilIteratorsFromJLangIterables.kt", + "/generated/JUtilIterablesFromJUtilCollections.kt", "/kotlin/support/AbstractIterator.kt", "/kotlin/Standard.kt", "/kotlin/Strings.kt", diff --git a/libraries/stdlib/src/kotlin/support/AbstractIterator.kt b/libraries/stdlib/src/kotlin/support/AbstractIterator.kt index 722a2faba02..436998cdd39 100644 --- a/libraries/stdlib/src/kotlin/support/AbstractIterator.kt +++ b/libraries/stdlib/src/kotlin/support/AbstractIterator.kt @@ -5,7 +5,7 @@ import java.util.NoSuchElementException // TODO should not need this - its here for the JS stuff import java.lang.UnsupportedOperationException -enum class State { +public enum class State { Ready NotReady Done diff --git a/libraries/stdlib/test/iterators/IteratorsJVMTest.kt b/libraries/stdlib/test/iterators/IteratorsJVMTest.kt new file mode 100644 index 00000000000..bfd7aba4acb --- /dev/null +++ b/libraries/stdlib/test/iterators/IteratorsJVMTest.kt @@ -0,0 +1,28 @@ +package iterators + +import kotlin.test.assertEquals +import org.junit.Test as test +import kotlin.test.failsWith + +class IteratorsJVMTest { + + + test fun flatMapAndTakeExtractTheTransformedElements() { + fun intToBinaryDigits() = { (i: Int) -> + val binary = Integer.toBinaryString(i).sure() + var index = 0 + iterate { if (index < binary.length()) binary.get(index++) else null } + } + + val expected = arrayList( + '0', // fibonacci(0) = 0 + '1', // fibonacci(1) = 1 + '1', // fibonacci(2) = 1 + '1', '0', // fibonacci(3) = 2 + '1', '1', // fibonacci(4) = 3 + '1', '0', '1' // fibonacci(5) = 5 + ) + + assertEquals(expected, fibonacci().flatMap(intToBinaryDigits()).take(10).toList()) + } +} diff --git a/libraries/stdlib/test/iterators/IteratorsTest.kt b/libraries/stdlib/test/iterators/IteratorsTest.kt index 312cdc97a57..eefe4c318cd 100644 --- a/libraries/stdlib/test/iterators/IteratorsTest.kt +++ b/libraries/stdlib/test/iterators/IteratorsTest.kt @@ -4,13 +4,13 @@ import kotlin.test.assertEquals import org.junit.Test as test import kotlin.test.failsWith -class IteratorsTest { +fun fibonacci(): java.util.Iterator { + // fibonacci terms + var index = 0; var a = 0; var b = 1 + return iterate { when (index++) { 0 -> a; 1 -> b; else -> { val result = a + b; a = b; b = result; result } } } +} - private fun fibonacci(): java.util.Iterator { - // fibonacci terms - var index = 0; var a = 0; var b = 1 - return iterate { when (index++) { 0 -> a; 1 -> b; else -> { val result = a + b; a = b; b = result; result } } } - } +class IteratorsTest { test fun filterAndTakeWhileExtractTheElementsWithinRange() { assertEquals(arrayList(144, 233, 377, 610, 987), fibonacci().filter { it > 100 }.takeWhile { it < 1000 }.toList()) @@ -29,25 +29,6 @@ class IteratorsTest { assertEquals(arrayList(0, 3, 3, 6, 9, 15), fibonacci().map { it * 3 }.takeWhile { (i: Int) -> i < 20 }.toList()) } - test fun flatMapAndTakeExtractTheTransformedElements() { - fun intToBinaryDigits() = { (i: Int) -> - val binary = Integer.toBinaryString(i).sure() - var index = 0 - iterate { if (index < binary.length()) binary.get(index++) else null } - } - - val expected = arrayList( - '0', // fibonacci(0) = 0 - '1', // fibonacci(1) = 1 - '1', // fibonacci(2) = 1 - '1', '0', // fibonacci(3) = 2 - '1', '1', // fibonacci(4) = 3 - '1', '0', '1' // fibonacci(5) = 5 - ) - - assertEquals(expected, fibonacci().flatMap(intToBinaryDigits()).take(10).toList()) - } - test fun joinConcatenatesTheFirstNElementsAboveAThreshold() { assertEquals("13, 21, 34, 55, 89, ...", fibonacci().filter { it > 10 }.makeString(separator = ", ", limit = 5)) }