refactor DesktopType
This commit is contained in:
parent
4cc1ce756a
commit
2525e0f2bb
3 changed files with 59 additions and 6 deletions
|
@ -24,7 +24,7 @@ open class CliArgumentsParser(name: String) : CliTargetParser(name) {
|
||||||
val module = modules.first { it.parsed }
|
val module = modules.first { it.parsed }
|
||||||
|
|
||||||
return DesktopCliCommand(
|
return DesktopCliCommand(
|
||||||
DesktopType.returnIfExists(module.name.uppercase()),
|
DesktopType.valueOf(module.name.uppercase()),
|
||||||
TargetCliCommand(
|
TargetCliCommand(
|
||||||
target,
|
target,
|
||||||
passwordInteractive
|
passwordInteractive
|
||||||
|
|
|
@ -4,9 +4,8 @@ package org.domaindrivenarchitecture.provs.desktop.domain
|
||||||
/**
|
/**
|
||||||
* Provides desktop types. For each type a different set of software and packages is installed, see README.md.
|
* Provides desktop types. For each type a different set of software and packages is installed, see README.md.
|
||||||
*/
|
*/
|
||||||
open class DesktopType(val name: String) {
|
// Uses a regular class instead of an enum class in order to allow subclasses which can add new DesktopTypes
|
||||||
|
open class DesktopType protected constructor(val name: String) {
|
||||||
// A regular class is used rather than enum class in order to allow extending DesktopType by subclassing.
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
|
@ -17,7 +16,11 @@ open class DesktopType(val name: String) {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
protected val values = listOf(BASIC, OFFICE, IDE)
|
protected val values = listOf(BASIC, OFFICE, IDE)
|
||||||
|
|
||||||
fun returnIfExists(value: String, valueList: List<DesktopType> = values): DesktopType {
|
@JvmStatic
|
||||||
|
fun valueOf(value: String): DesktopType = valueOf(value, values)
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
protected fun valueOf(value: String, valueList: List<DesktopType>): DesktopType {
|
||||||
for (type in valueList) {
|
for (type in valueList) {
|
||||||
if (value.uppercase().equals(type.name)) {
|
if (value.uppercase().equals(type.name)) {
|
||||||
return type
|
return type
|
||||||
|
@ -31,4 +34,3 @@ open class DesktopType(val name: String) {
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.domaindrivenarchitecture.provs.desktop.domain
|
||||||
|
|
||||||
|
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopType.Companion.BASIC
|
||||||
|
import org.domaindrivenarchitecture.provs.desktop.domain.DesktopType.Companion.IDE
|
||||||
|
import org.domaindrivenarchitecture.provs.desktop.domain.SubDesktopType.Companion.SUBTYPE
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions.*
|
||||||
|
|
||||||
|
// tests subclassing of DesktopType
|
||||||
|
internal open class SubDesktopType protected constructor(name: String) : DesktopType(name) {
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
|
||||||
|
// defines a new DesktopType
|
||||||
|
val SUBTYPE = SubDesktopType("SUBTYPE")
|
||||||
|
|
||||||
|
private val values = DesktopType.values + SUBTYPE
|
||||||
|
|
||||||
|
fun valueOf(value: String): DesktopType {
|
||||||
|
return valueOf(value, values)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DesktopTypeTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun test_valueOf() {
|
||||||
|
assertEquals(BASIC, DesktopType.valueOf("basic"))
|
||||||
|
assertEquals(BASIC, DesktopType.valueOf("Basic"))
|
||||||
|
assertEquals(IDE, DesktopType.valueOf("IDE"))
|
||||||
|
|
||||||
|
val exception = assertThrows(RuntimeException::class.java) {
|
||||||
|
DesktopType.valueOf("subtype")
|
||||||
|
}
|
||||||
|
assertEquals("No DesktopType found for value: subtype", exception.message)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun test_valueOf_in_subclass() {
|
||||||
|
assertEquals(SUBTYPE, SubDesktopType.valueOf("subtype"))
|
||||||
|
assertEquals(BASIC, SubDesktopType.valueOf("basic"))
|
||||||
|
assertNotEquals(SUBTYPE, DesktopType.valueOf("basic"))
|
||||||
|
|
||||||
|
val exception = assertThrows(RuntimeException::class.java) {
|
||||||
|
DesktopType.valueOf("subtype2")
|
||||||
|
}
|
||||||
|
assertEquals("No DesktopType found for value: subtype2", exception.message)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue