Compile common stdlib tests against common stdlib

Declare platform-specific test utilities as expect.
This commit is contained in:
Ilya Gorbunov
2017-12-22 15:34:26 +03:00
parent c030a047aa
commit ecd42f14b3
7 changed files with 84 additions and 13 deletions
+4 -1
View File
@@ -14,11 +14,14 @@
* limitations under the License.
*/
package kotlin.test
package test
import kotlin.test.*
public fun assertTypeEquals(expected: Any?, actual: Any?) {
assertEquals(expected?.let { it::class.js }, actual?.let { it::class.js })
}
@Suppress("NOTHING_TO_INLINE")
internal inline fun String.removeLeadingPlusOnJava6(): String = this
internal fun doubleTotalOrderEquals(a: Double?, b: Double?) = a == b || (a != a && b != b)
+18 -1
View File
@@ -4,7 +4,8 @@ apply plugin: 'kotlin-platform-common'
configurePublishing(project)
ext.commonSrcDir = "${buildDir}/common-sources"
def commonSrcDir = "${buildDir}/common-sources"
def commonTestSrcDir = "${buildDir}/common-test-sources"
sourceSets {
main {
@@ -13,9 +14,21 @@ sourceSets {
srcDir commonSrcDir
}
}
test {
kotlin {
srcDir commonTestSrcDir
srcDir 'test'
}
}
}
dependencies {
testCompile project(":kotlin-test:kotlin-test-common")
testCompile project(":kotlin-test:kotlin-test-annotations-common")
}
createPreprocessorTask(project, "Main", "${projectDir}/../src/kotlin", commonSrcDir)
createPreprocessorTask(project, "Test", "${projectDir}/../test", commonTestSrcDir)
compileKotlinCommon {
dependsOn preprocessSourcesMain
@@ -34,6 +47,10 @@ compileKotlinCommon {
}
*/
compileTestKotlinCommon {
dependsOn preprocessSourcesTest
}
kotlin.experimental.coroutines 'enable'
jar {
@@ -0,0 +1,23 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package test.collections.js
// TODO: These have actuals only in JVM tests, and in JS they are in stdlib
public expect fun <V> stringMapOf(vararg pairs: Pair<String, V>): HashMap<String, V>
public expect fun <V> linkedStringMapOf(vararg pairs: Pair<String, V>): LinkedHashMap<String, V>
public expect fun stringSetOf(vararg elements: String): HashSet<String>
public expect fun linkedStringSetOf(vararg elements: String): LinkedHashSet<String>
+25
View File
@@ -0,0 +1,25 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package test
public expect fun assertTypeEquals(expected: Any?, actual: Any?)
internal expect fun String.removeLeadingPlusOnJava6(): String
internal expect fun doubleTotalOrderEquals(a: Double?, b: Double?): Boolean
// TODO
internal expect class NumberFormatException : Throwable
+12 -1
View File
@@ -21,4 +21,15 @@ import kotlin.test.assertEquals
@JvmVersion
public fun assertTypeEquals(expected: Any?, actual: Any?) {
assertEquals(expected?.javaClass, actual?.javaClass)
}
}
@kotlin.jvm.JvmVersion
private val isJava6 = System.getProperty("java.version").startsWith("1.6.")
@kotlin.jvm.JvmVersion
internal fun String.removeLeadingPlusOnJava6(): String =
if (isJava6) removePrefix("+") else this
@kotlin.jvm.JvmVersion
internal fun doubleTotalOrderEquals(a: Any?, b: Any?) = a == b
+1
View File
@@ -1,3 +1,4 @@
@file:Suppress("NAMED_ARGUMENTS_NOT_ALLOWED") // for common tests
package test.text
import kotlin.text.*
@@ -1,5 +1,6 @@
package test.text
import test.*
import kotlin.test.*
class StringNumberConversionTest {
@@ -334,13 +335,3 @@ private class ConversionWithRadixContext<T: Any>(val convertOrFail: (String, Int
assertNull(convertOrNull(input, radix), message = "On input \"$input\" with radix $radix")
}
}
@kotlin.jvm.JvmVersion
private val isJava6 = System.getProperty("java.version").startsWith("1.6.")
@kotlin.jvm.JvmVersion
private fun String.removeLeadingPlusOnJava6(): String =
if (isJava6) removePrefix("+") else this
@kotlin.jvm.JvmVersion
private fun doubleTotalOrderEquals(a: Any?, b: Any?) = a == b