From b02afac3015d44fb958d5e49d69cdc45ee2afa03 Mon Sep 17 00:00:00 2001 From: Araozu Date: Mon, 28 Dec 2020 11:04:47 -0500 Subject: [PATCH] Agregar pruebas a los yaku --- src/tests/Yaku10Test.kt | 46 ++++++++++++++++++++++ src/tests/Yaku5Test.kt | 24 ++++++++++++ src/tests/Yaku7Test.kt | 84 +++++++++++++++++++++++++++++++++++++++++ src/tests/YakuTest.kt | 36 ++++++++++++++++++ 4 files changed, 190 insertions(+) create mode 100644 src/tests/Yaku10Test.kt create mode 100644 src/tests/Yaku5Test.kt create mode 100644 src/tests/Yaku7Test.kt create mode 100644 src/tests/YakuTest.kt diff --git a/src/tests/Yaku10Test.kt b/src/tests/Yaku10Test.kt new file mode 100644 index 0000000..5258d75 --- /dev/null +++ b/src/tests/Yaku10Test.kt @@ -0,0 +1,46 @@ +package dev.araozu.tests + +import dev.araozu.juego.* +import dev.araozu.juego.yaku.Yaku + +fun testYakuVerde(): Boolean { + val cartasMano = carr( + CartaDragonVerde(), + CartaDragonVerde(), + CartaRealezaJ(), + CartaRealezaJ(), + CartaRealezaK(), + CartaRealezaK(), + CartaRealezaK(), + CartaRealezaQ(), + CartaRealezaQ(), + CartaRealezaQ() + ) + val op = OportunidadRon.verificar( + valorCarta = c(CartaDragonVerde()), + cartasMano = cartasMano + ) + + return existeYaku(op, Yaku.Verde) +} + +fun testYakuDragonesFull(): Boolean { + val cartas = carr( + CartaDragonVerde(), + CartaDragonAzul(), + CartaDragonAzul(), + CartaDragonAzul(), + CartaDragonRojo(), + CartaDragonRojo(), + CartaDragonRojo(), + CartaDragonNegro(), + CartaDragonNegro(), + CartaDragonNegro() + ) + val op = OportunidadRon.verificar( + valorCarta = c(CartaDragonVerde()), + cartasMano = cartas + ) + + return existeYaku(op, Yaku.DragonesFull) +} diff --git a/src/tests/Yaku5Test.kt b/src/tests/Yaku5Test.kt new file mode 100644 index 0000000..6e72d0a --- /dev/null +++ b/src/tests/Yaku5Test.kt @@ -0,0 +1,24 @@ +package dev.araozu.tests + +import dev.araozu.juego.* +import dev.araozu.juego.yaku.Yaku + +fun testYakuEscaleraFull(): Boolean { + val cartas = arrayListOf( + 2, + 3, + 4, + 6, + 8, + 10, + 13, + 14, + 16, + 18 + ) + val op = OportunidadRon.verificar( + valorCarta = 20, + cartasMano = cartas + ) + return existeYaku(op, Yaku.EscaleraFull) +} diff --git a/src/tests/Yaku7Test.kt b/src/tests/Yaku7Test.kt new file mode 100644 index 0000000..463edb0 --- /dev/null +++ b/src/tests/Yaku7Test.kt @@ -0,0 +1,84 @@ +package dev.araozu.tests + +import dev.araozu.juego.* +import dev.araozu.juego.yaku.Yaku + +fun testYakuA10(): Boolean { + val cartasMano = arrayListOf( + 2, + 2, + 3, + 20, + 20, + 21, + 34, + 34, + 52, + 52 + ) + val op = OportunidadRon.verificar( + valorCarta = 35, + cartasMano = cartasMano + ) + return existeYaku(op, Yaku.A10) +} + +fun testYakuEscaleraPerfecta(): Boolean { + val cartas = arrayListOf( + 2, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 18 + ) + val op = OportunidadRon.verificar( + valorCarta = 20, + cartasMano = cartas + ) + return existeYaku(op, Yaku.EscaleraPerfecta) +} + +fun testYakuRealezaFull(): Boolean { + val cartas = arrayListOf( + 2, + 192, + 192, + 192, + 224, + 224, + 224, + 256, + 256, + 256 + ) + val op = OportunidadRon.verificar( + valorCarta = 2, + cartasMano = cartas + ) + return existeYaku(op, Yaku.RealezaFull) +} + +fun testYakuRealezaDragones(): Boolean { + val cartas = arrayListOf( + 256, + 64, + 64, + 64, + 128, + 128, + 128, + 192, + 192, + 192 + ) + val op = OportunidadRon.verificar( + valorCarta = 256, + cartasMano = cartas + ) + return existeYaku(op, Yaku.RealezaDragones) +} diff --git a/src/tests/YakuTest.kt b/src/tests/YakuTest.kt new file mode 100644 index 0000000..77e0b09 --- /dev/null +++ b/src/tests/YakuTest.kt @@ -0,0 +1,36 @@ +package dev.araozu.tests + +import dev.araozu.juego.* +import dev.araozu.juego.yaku.Yaku + +fun c(c: Carta): Int = c.valor +fun carr(vararg carr: Carta): ArrayList { + val cartas = arrayListOf() + cartas.addAll(carr.map(::c)) + return cartas +} + +fun existeYaku(op: OportunidadRon?, yaku: Yaku): Boolean { + if (op == null) return false + return null != op.yaku.find { it == yaku } +} + +fun impErr(res: Boolean, nombreYaku: String) { + if (!res) System.err.println("Error al ejecutar yaku $nombreYaku") +} + +fun main() { + // Yaku10 + impErr(testYakuVerde(), "Verde") + impErr(testYakuDragonesFull(), "Dragones Full") + + // Yaku7 + impErr(testYakuA10(), "A-10") + impErr(testYakuEscaleraPerfecta(), "Escalera Perfecta") + impErr(testYakuRealezaFull(), "Realeza Full") + impErr(testYakuRealezaDragones(), "Realeza y Dragones") + + // Yaku5 + impErr(testYakuEscaleraFull(), "Escalera Full") + +}