Skip to content

Commit

Permalink
Update PrintWidth to use correct parameters, add tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
itsmattking committed Jul 28, 2024
1 parent 7f60a6e commit 796b764
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 10 deletions.
9 changes: 0 additions & 9 deletions src/main/kotlin/info/mking/k2zpl/builder/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import info.mking.k2zpl.command.LabelShift
import info.mking.k2zpl.command.MediaDarkness
import info.mking.k2zpl.command.PrintQuantity
import info.mking.k2zpl.command.PrintRate
import info.mking.k2zpl.command.PrintWidth
import info.mking.k2zpl.command.StartFormat
import info.mking.k2zpl.command.ZplCommand
import info.mking.k2zpl.command.options.ZplFieldOrientation
Expand All @@ -26,14 +25,6 @@ import info.mking.k2zpl.command.options.ZplPrintSpeed
import info.mking.k2zpl.command.options.ZplTextAlignment
import info.mking.k2zpl.command.options.ZplYesNo

/**
* Sets the print width of the label.
* @param width The width of the label.
*/
fun ZplBuilder.printWidth(width: Int) {
command(PrintWidth(width = width))
}

/**
* Sets the label home position.
* @param x The x-coordinate of the label home.
Expand Down
14 changes: 13 additions & 1 deletion src/main/kotlin/info/mking/k2zpl/command/PrintWidth.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
package info.mking.k2zpl.command

import info.mking.k2zpl.builder.ZplBuilder
import info.mking.k2zpl.builder.command

internal data class PrintWidth(val width: Int) : ZplCommand {
init {
require(width in 1..32000) { "Width must be between 1 and 32000" }
require(width in 2 .. 32000) { "Width must be greater than 2. Value is also capped at width of the actual label." }
}

override val command: CharSequence = "^PW"
override val parameters: LinkedHashMap<CharSequence, Any?> = linkedMapOf("w" to width)
}


/**
* Sets the print width of the label.
* @param width The width of the label.
*/
fun ZplBuilder.printWidth(width: Int) {
command(PrintWidth(width = width))
}
44 changes: 44 additions & 0 deletions src/test/kotlin/info/mking/k2zpl/command/PrintWidthTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package info.mking.k2zpl.command

import info.mking.k2zpl.k2zpl
import info.mking.k2zpl.testBuildString
import io.kotest.assertions.throwables.shouldThrow
import io.kotest.core.spec.IsolationMode
import io.kotest.core.spec.style.DescribeSpec
import io.kotest.data.forAll
import io.kotest.data.headers
import io.kotest.data.row
import io.kotest.data.table
import io.kotest.matchers.shouldBe

class PrintWidthTest : DescribeSpec({
isolationMode = IsolationMode.InstancePerLeaf

val printWidth = PrintWidth(
width = 640
)

describe("PrintWidth") {
it("outputs correct command") {
printWidth.testBuildString() shouldBe "^PW640"
}
it("requires valid parameters") {
table(headers("width"),
row(0),
row(32001)
).forAll {
shouldThrow<IllegalArgumentException> {
printWidth.copy(width = it)
}
}
}
}
describe("printWidth extension function") {
it("outputs the correct command") {
val result = k2zpl {
printWidth(640)
}
result shouldBe "^PW640\n"
}
}
})

0 comments on commit 796b764

Please sign in to comment.