Skip to content
Novus Examples
kt1.3 KB

Kotlin — Order model (data classes, sealed types, when)

A realistic Kotlin snippet with data classes, an enum, a sealed result interface, extension functions, and when expressions — for testing highlighters, the Kotlin compiler, ktlint, and parsers.

Preview — first 42 lineskt
// An order model in Kotlin: data classes, an enum, a sealed result type,
// extension functions, and when expressions.

enum class Status { PENDING, SHIPPED, DELIVERED }

data class LineItem(val name: String, val qty: Int, val unitCents: Int) {
    val totalCents: Int get() = qty * unitCents
}

data class Order(val id: String, val status: Status, val items: List<LineItem>)

sealed interface Result<out T> {
    data class Ok<T>(val value: T) : Result<T>
    data class Err(val message: String) : Result<Nothing>
}

fun Order.totalCents(): Int = items.sumOf { it.totalCents }

fun Order.summary(): String = when (status) {
    Status.PENDING -> "Order $id is awaiting shipment"
    Status.SHIPPED -> "Order $id is on the way"
    Status.DELIVERED -> "Order $id was delivered"
}

fun checkout(order: Order): Result<Int> =
    if (order.items.isEmpty()) Result.Err("empty order")
    else Result.Ok(order.totalCents())

fun main() {
    val order = Order(
        id = "A-1001",
        status = Status.SHIPPED,
        items = listOf(LineItem("Notebook", 3, 450), LineItem("Pen", 10, 120)),
    )

    println(order.summary())
    when (val result = checkout(order)) {
        is Result.Ok -> println("total cents: ${result.value}")
        is Result.Err -> println("error: ${result.message}")
    }
}

Specifications

Language
Kotlin
Kind
realistic snippet
Lines
41
Encoding
UTF-8
Line Endings
LF

Testing contract

Expected to pass
Scenario
Compile the file, run it, then add a variant to the sealed hierarchy and compile again.
Expected result
It prints `Order A-1001 is on the way` then `total cents: 2550` (three Notebooks at 450 plus ten Pens at 120). Neither `when` has an `else` branch - one is exhaustive over the `Status` enum, the other over the sealed `Result` interface - so adding a case must turn each into a compile error; a checker that stays silent has not resolved the sealed hierarchy.

What is a .kt file?

Kotlin (.kt) is a plain-text source file for the Kotlin programming language — a statically typed, JVM language from JetBrains that interoperates with Java. It is the preferred language for modern Android development and features null safety, data classes, extension functions, and concise syntax.

How to use this file

Use an example .kt file to test syntax highlighters, the Kotlin compiler, linters and formatters (ktlint), and parser or language-detection tooling.

How to use this file for testing

“Kotlin — Order model (data classes, sealed types, when)” is a deterministic Novus Examples fixture for Syntax highlighting, Code parsing, Editor testing. Idiomatic hello-world programs and realistic snippets across sixteen languages, exercising comments, string escapes, interpolation, numeric literals, and language keywords — for testing syntax highlighters, editor themes, and tree-sitter grammars.

Documented properties for this file: Kotlin · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

This is a short, known-correct source file. Run it through your syntax highlighter, linter, formatter, tree-sitter grammar, or parser, and open it in the in-browser editor to tweak and re-download. Each snippet exercises comments, string escapes, literals, and language keywords.

Code examples

kotlinc order.kt -include-runtime -d app.jar && java -jar app.jar

Generated by generation/code_samples.py. Free for any use, no attribution required — license.