Skip to content

Commit

Permalink
Update MediaMode handling to use correct values, replace with ZplYesN…
Browse files Browse the repository at this point in the history
…o, add tests
  • Loading branch information
itsmattking committed Jul 28, 2024
1 parent 96a77f9 commit 7f60a6e
Show file tree
Hide file tree
Showing 5 changed files with 73 additions and 26 deletions.
13 changes: 0 additions & 13 deletions src/main/kotlin/info/mking/k2zpl/builder/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,13 @@ import info.mking.k2zpl.command.LabelHome
import info.mking.k2zpl.command.LabelLength
import info.mking.k2zpl.command.LabelShift
import info.mking.k2zpl.command.MediaDarkness
import info.mking.k2zpl.command.MediaMode
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
import info.mking.k2zpl.command.options.ZplFont
import info.mking.k2zpl.command.options.ZplMediaMode
import info.mking.k2zpl.command.options.ZplPreprintedLabelHandling
import info.mking.k2zpl.command.options.ZplPrintSpeed
import info.mking.k2zpl.command.options.ZplTextAlignment
import info.mking.k2zpl.command.options.ZplYesNo
Expand Down Expand Up @@ -210,16 +207,6 @@ fun ZplBuilder.endFormat() {
command(EndFormat)
}

/**
* Sets Media Mode
*/
fun ZplBuilder.mediaMode(
zplMediaMode: ZplMediaMode,
labelHandling: ZplPreprintedLabelHandling = ZplPreprintedLabelHandling.NORMAL
) {
command(MediaMode(zplMediaMode, labelHandling))
}

/**
* Shortcut for addCommand
*/
Expand Down
27 changes: 23 additions & 4 deletions src/main/kotlin/info/mking/k2zpl/command/MediaMode.kt
Original file line number Diff line number Diff line change
@@ -1,12 +1,31 @@
package info.mking.k2zpl.command

import info.mking.k2zpl.builder.ZplBuilder
import info.mking.k2zpl.builder.command
import info.mking.k2zpl.builder.toZplYesNo
import info.mking.k2zpl.command.options.ZplMediaMode
import info.mking.k2zpl.command.options.ZplPreprintedLabelHandling
import info.mking.k2zpl.command.options.ZplYesNo

internal data class MediaMode(val mediaMode: ZplMediaMode, val preprintedLabelHandling: ZplPreprintedLabelHandling) :
ZplCommand {
internal data class MediaMode(
val mediaMode: ZplMediaMode,
val prePeelSelect: ZplYesNo
) : ZplCommand {
override val command: CharSequence = "^MM"
override val parameters: LinkedHashMap<CharSequence, Any?> =
linkedMapOf("mode" to mediaMode.value, "preprinted" to preprintedLabelHandling.value)
linkedMapOf("m" to mediaMode.value, "p" to prePeelSelect)
}

/**
* Sets Media Mode
*/
fun ZplBuilder.mediaMode(
mediaMode: ZplMediaMode,
prePeel: Boolean = false
) {
command(
MediaMode(
mediaMode = mediaMode,
prePeelSelect = prePeel.toZplYesNo()
)
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,9 @@ enum class ZplMediaMode(val value: Char) {
REWIND('R'),
APPLICATOR('A'),
CUTTER('C'),
DELAYED_CUT('D')
DELAYED_CUT('D');

override fun toString(): String {
return value.toString()
}
}

This file was deleted.

45 changes: 45 additions & 0 deletions src/test/kotlin/info/mking/k2zpl/command/MediaModeTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package info.mking.k2zpl.command

import info.mking.k2zpl.command.options.ZplMediaMode
import info.mking.k2zpl.command.options.ZplYesNo
import info.mking.k2zpl.k2zpl
import info.mking.k2zpl.testBuildString
import io.kotest.core.spec.IsolationMode
import io.kotest.core.spec.style.DescribeSpec
import io.kotest.matchers.shouldBe

class MediaModeTest : DescribeSpec({
isolationMode = IsolationMode.InstancePerLeaf

val mediaMode = MediaMode(mediaMode = ZplMediaMode.CUTTER, prePeelSelect = ZplYesNo.NO)

describe("MediaMode") {
it("outputs correct command") {
mediaMode.testBuildString() shouldBe "^MMC,N"
}
it("uses mediaMode parameter properly") {
ZplMediaMode.entries.forEach {
mediaMode.copy(mediaMode = it).testBuildString() shouldBe "^MM${it.value},N"
}
}
it("uses prePeelSelect parameter properly") {
ZplYesNo.entries.forEach {
mediaMode.copy(prePeelSelect = it).testBuildString() shouldBe "^MMC,${it}"
}
}
}
describe("mediaMode extension function") {
it("outputs correct command") {
val result = k2zpl {
mediaMode(mediaMode = ZplMediaMode.DELAYED_CUT, prePeel = true)
}
result shouldBe "^MMD,Y\n"
}
it("uses default values") {
val result = k2zpl {
mediaMode(mediaMode = ZplMediaMode.REWIND)
}
result shouldBe "^MMR,N\n"
}
}
})

0 comments on commit 7f60a6e

Please sign in to comment.