All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.specmatic.core.value.NumberValue.kt Maven / Gradle / Ivy

Go to download

Turn your contracts into executable specifications. Contract Driven Development - Collaboratively Design & Independently Deploy MicroServices & MicroFrontends.

There is a newer version: 2.0.37
Show newest version
package io.specmatic.core.value

import io.specmatic.core.ExampleDeclarations
import io.specmatic.core.pattern.ExactValuePattern
import io.specmatic.core.pattern.NumberPattern
import io.specmatic.core.pattern.Pattern

data class NumberValue(val number: Number) : Value, ScalarValue {
    override val httpContentType = "text/plain"

    override fun displayableValue(): String = toStringLiteral()
    override fun toStringLiteral() = number.toString()
    override fun displayableType(): String = "number"
    override fun exactMatchElseType(): Pattern = ExactValuePattern(this)
    override fun type(): Pattern = NumberPattern()

    override fun typeDeclarationWithKey(key: String, types: Map, exampleDeclarations: ExampleDeclarations): Pair =
            primitiveTypeDeclarationWithKey(key, types, exampleDeclarations, displayableType(), number.toString())

    override fun listOf(valueList: List): Value {
        return JSONArrayValue(valueList)
    }

    override fun typeDeclarationWithoutKey(exampleKey: String, types: Map, exampleDeclarations: ExampleDeclarations): Pair =
            primitiveTypeDeclarationWithoutKey(exampleKey, types, exampleDeclarations, displayableType(), number.toString())

    override val nativeValue: Number
        get() = number

    override fun toString() = number.toString()
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy