mirror of
https://github.com/sharkdp/bat.git
synced 2025-09-22 05:02:30 +01:00
test: Kotlin syntax test file
This commit is contained in:
committed by
David Peter
parent
3af7a6b082
commit
3aabed44ce
85
tests/syntax-tests/source/Kotlin/test.kt
Normal file
85
tests/syntax-tests/source/Kotlin/test.kt
Normal file
@@ -0,0 +1,85 @@
|
||||
import kotlin.math.*
|
||||
|
||||
data class Example(
|
||||
val name: String,
|
||||
val numbers: List<Int?>
|
||||
)
|
||||
|
||||
fun interface JokeInterface {
|
||||
fun isFunny(): Boolean
|
||||
}
|
||||
|
||||
abstract class AbstractJoke : JokeInterface {
|
||||
override fun isFunny() = false
|
||||
abstract fun content(): String
|
||||
}
|
||||
|
||||
class Joke : AbstractJoke() {
|
||||
override fun isFunny(): Boolean {
|
||||
return true
|
||||
}
|
||||
override fun content(): String = "content of joke here, haha"
|
||||
}
|
||||
|
||||
class DelegatedJoke(val joke: Joke) : JokeInterface by joke {
|
||||
val number: Long = 123L
|
||||
|
||||
companion object {
|
||||
const val someConstant = "some constant text"
|
||||
}
|
||||
}
|
||||
|
||||
object SomeSingleton
|
||||
|
||||
sealed class Shape {
|
||||
abstract fun area(): Double
|
||||
}
|
||||
|
||||
data class Square(val sideLength: Double) : Shape() {
|
||||
override fun area(): Double = sideLength.pow(2)
|
||||
}
|
||||
|
||||
object Point : Shape() {
|
||||
override fun area() = .0
|
||||
}
|
||||
|
||||
class Circle(val radius: Double) : Shape() {
|
||||
override fun area(): Double {
|
||||
return PI * radius * radius
|
||||
}
|
||||
}
|
||||
|
||||
fun String.extensionMethod() = "test"
|
||||
|
||||
fun main() {
|
||||
val name = """
|
||||
multiline
|
||||
string
|
||||
|
||||
some numbers: 123123 42
|
||||
""".trimIndent()
|
||||
val example = Example(name = name, numbers = listOf(512, 42, null, -1))
|
||||
|
||||
example.numbers
|
||||
.filterNotNull()
|
||||
.forEach { println(it) }
|
||||
|
||||
setOf(Joke(), DelegatedJoke(Joke()).joke)
|
||||
.filter(JokeInterface::isFunny)
|
||||
.map(AbstractJoke::content)
|
||||
.forEachIndexed { index: Int, joke ->
|
||||
println("I heard a funny joke(#${index + 1}): $joke")
|
||||
}
|
||||
|
||||
listOf(Square(12.3), Point, Circle(5.2))
|
||||
.associateWith(Shape::area)
|
||||
.toList()
|
||||
.sortedBy { it.second }
|
||||
.forEach {
|
||||
println("${it.first}: ${it.second}")
|
||||
}
|
||||
|
||||
println("some string".extensionMethod())
|
||||
|
||||
require(SomeSingleton::class.simpleName == "SomeSingletonName") { "something does not seem right..." }
|
||||
}
|
Reference in New Issue
Block a user