String.toBoolean() should be String?.toBoolean() #KT-14119

This commit is contained in:
Abduqodiri Qurbonzoda
2020-02-27 21:08:31 +03:00
parent b8b1dd753c
commit d5c851980c
8 changed files with 38 additions and 16 deletions
+12 -2
View File
@@ -5,6 +5,8 @@
package kotlin.text
import kotlin.internal.LowPriorityInOverloadResolution
expect class Regex {
constructor(pattern: String)
constructor(pattern: String, option: RegexOption)
@@ -282,9 +284,17 @@ public expect val String.Companion.CASE_INSENSITIVE_ORDER: Comparator<String>
/**
* Returns `true` if the contents of this string is equal to the word "true", ignoring case, and `false` otherwise.
* Returns `true` if the content of this string is equal to the word "true", ignoring case, and `false` otherwise.
*/
expect fun String.toBoolean(): Boolean
@LowPriorityInOverloadResolution
@kotlin.internal.InlineOnly
public inline fun String.toBoolean(): Boolean = this.toBoolean()
/**
* Returns `true` if this string is not `null` and its content is equal to the word "true", ignoring case, and `false` otherwise.
*/
@SinceKotlin("1.4")
public expect fun String?.toBoolean(): Boolean
/**
* Parses the string as a signed [Byte] number and returns the result.
@@ -5,14 +5,12 @@
package kotlin.jdk7.test
import test.platformNull
import java.io.*
import java.util.*
import kotlin.test.*
class UseAutoCloseableResourceTest {
@Suppress("HasPlatformType", "UNCHECKED_CAST") fun <T> platformNull() = Collections.singletonList(null as T).first()
class Resource(val faultyClose: Boolean = false) : AutoCloseable {
var isClosed = false
@@ -5,14 +5,12 @@
package kotlin.jdk7.test
import test.platformNull
import java.io.*
import java.util.*
import kotlin.test.*
class UseCloseableResourceTest {
@Suppress("HasPlatformType", "UNCHECKED_CAST") fun <T> platformNull() = Collections.singletonList(null as T).first()
class Resource(val faultyClose: Boolean = false) : Closeable {
var isClosed = false
@@ -7,9 +7,10 @@ package kotlin.text
/**
* Returns `true` if the contents of this string is equal to the word "true", ignoring case, and `false` otherwise.
* Returns `true` if this string is not `null` and its content is equal to the word "true", ignoring case, and `false` otherwise.
*/
public actual fun String.toBoolean(): Boolean = toLowerCase() == "true"
@SinceKotlin("1.4")
public actual fun String?.toBoolean(): Boolean = this != null && this.toLowerCase() == "true"
/**
* Parses the string as a signed [Byte] number and returns the result.
@@ -46,10 +46,12 @@ public actual inline fun Int.toString(radix: Int): String = java.lang.Integer.to
public actual inline fun Long.toString(radix: Int): String = java.lang.Long.toString(this, checkRadix(radix))
/**
* Returns `true` if the contents of this string is equal to the word "true", ignoring case, and `false` otherwise.
* Returns `true` if this string is not `null` and its content is equal to the word "true", ignoring case, and `false` otherwise.
*/
@JvmName("toBooleanNullable")
@SinceKotlin("1.4")
@kotlin.internal.InlineOnly
public actual inline fun String.toBoolean(): Boolean = java.lang.Boolean.parseBoolean(this)
public actual inline fun String?.toBoolean(): Boolean = java.lang.Boolean.parseBoolean(this)
/**
* Parses the string as a signed [Byte] number and returns the result.
@@ -5,8 +5,8 @@
package test.io
import test.platformNull
import java.io.*
import java.util.*
import kotlin.test.*
class UseCloseableResourceTest {
@@ -23,9 +23,6 @@ class UseCloseableResourceTest {
assertEquals("World", secondLine)
}
@Suppress("HasPlatformType", "UNCHECKED_CAST") fun <T> platformNull() = Collections.singletonList(null as T).first()
class Resource(val faultyClose: Boolean = false) : Closeable {
var isClosed = false
@@ -104,4 +104,19 @@ class StringJVMTest {
assertEquals("dzdzdz", "DZdzdz".decapitalize(Locale.US))
assertEquals("dzdzdz", "Dzdzdz".decapitalize(Locale.US))
}
@Test
fun stringToBoolean() {
assertFalse(platformNull<String>().toBoolean())
}
@Test
fun stringEquals() {
assertFalse(platformNull<String>().equals("sample", ignoreCase = false))
assertFalse(platformNull<String>().equals("sample", ignoreCase = true))
assertFalse("sample".equals(platformNull<String>(), ignoreCase = false))
assertFalse("sample".equals(platformNull(), ignoreCase = true))
assertTrue(platformNull<String>().equals(platformNull(), ignoreCase = true))
assertTrue(platformNull<String>().equals(platformNull<String>(), ignoreCase = false))
}
}
@@ -15,6 +15,7 @@ class StringNumberConversionTest {
assertEquals(true, "True".toBoolean())
assertEquals(false, "false".toBoolean())
assertEquals(false, "not so true".toBoolean())
assertEquals(false, (null as String?).toBoolean())
}
@Test fun toByte() {