diff --git a/libraries/stdlib/src/Preconditions.kt b/libraries/stdlib/src/Preconditions.kt index 061a095332c..c8507d0918a 100644 --- a/libraries/stdlib/src/Preconditions.kt +++ b/libraries/stdlib/src/Preconditions.kt @@ -21,7 +21,7 @@ inline fun assert(value:Boolean):Unit { * Throws an [[AssertionError]] with specified `message` if the `value` is false * and runtime assertions have been enabled on the JVM using the `-ea` JVM option. */ -inline fun assert(value:Boolean, message:T) { +inline fun assert(value:Boolean, message:Any) { if(Assertions._ENABLED) { if(!value) { throw AssertionError(message); @@ -39,10 +39,30 @@ inline fun require(value:Boolean):Unit { } /** -* Throws an [[IllegalArgumentException]] with specified `message` if the `value` is false. -*/ -inline fun require(value:Boolean, message:T) { + * Throws an [[IllegalArgumentException]] with specified `message` if the `value` is false. + */ +inline fun require(value:Boolean, message:Any):Unit { if(!value) { throw IllegalArgumentException(message.toString()); } } + +/** + * Throws an [[IllegalStateException]] if the `value` is false. + */ +inline fun check(value:Boolean):Unit { + if(!value) { + throw IllegalStateException(); + } +} + +/** + * Throws an [[IllegalStateException]] with specified `message` if the `value` is false. + */ +inline fun check(value:Boolean, message:Any):Unit { + if(!value) { + throw IllegalStateException(message.toString()); + } +} + + diff --git a/libraries/testlib/test/PreconditionsTest.kt b/libraries/testlib/test/PreconditionsTest.kt index 278108c8cbd..936c7dc8701 100644 --- a/libraries/testlib/test/PreconditionsTest.kt +++ b/libraries/testlib/test/PreconditionsTest.kt @@ -36,14 +36,66 @@ class PreconditionsTest() : TestCase() { } } -// // Not sure why the assert method is not being resolved. -// fun ignorePassingAssert() { -// assert(true) +// TODO: uncomment when KT-1540 is resolved. +// fun testPassingCheck() { +// check1(true) // } // -// fun ignoreFailingAssert() { -// failsWith { -// assert(false) +// fun testFailingCheck() { +// val error = fails { +// check1(false) +// } +// if(error is IllegalStateException) { +// assertNull(error.getMessage()) +// } else { +// fail("Invalid exception type: "+error) +// } +// } +// +// fun testPassingCheckWithMessage() { +// check2(true, "Hello") +// } +// +// fun testFailingCheckWithMessage() { +// val error = fails { +// check2(false, "Hello") +// } +// if(error is IllegalStateException) { +// assertEquals("Hello", error.getMessage()) +// } else { +// fail("Invalid exception type: "+error) +// } +// } + + +// TODO: uncomment when KT-1540 is resolved. +// fun testPassingAssert() { +// assert1(true) +// } +// +// fun testFailingAssert() { +// val error = fails { +// assert1(false) +// } +// if(error is IllegalStateException) { +// assertNull(error.getMessage()) +// } else { +// fail("Invalid exception type: "+error) +// } +// } +// +// fun testPassingAssertWithMessage() { +// assert2(true, "Hello") +// } +// +// fun testFailingAssertWithMessage() { +// val error = fails { +// assert2(false, "Hello") +// } +// if(error is IllegalStateException) { +// assertEquals("Hello", error.getMessage()) +// } else { +// fail("Invalid exception type: "+error) // } // } } \ No newline at end of file