hate that

This commit is contained in:
2026-04-03 21:57:09 +03:00
parent 58b7256a04
commit cee5f7cbdd
11 changed files with 47 additions and 39 deletions
+3 -3
View File
@@ -16,7 +16,7 @@ repositories {
dependencies { dependencies {
implementation(kotlin("stdlib")) implementation(kotlin("stdlib"))
implementation("io.github.microutils:kotlin-logging-jvm:3.0.5") implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")
implementation("ch.qos.logback:logback-classic:1.5.7") implementation("ch.qos.logback:logback-classic:1.5.13")
implementation("org.jline:jline:3.27.1") implementation("org.jline:jline:3.27.1")
testImplementation(kotlin("test")) testImplementation(kotlin("test"))
@@ -28,7 +28,8 @@ dependencies {
application { application {
mainClass.set("MainKt") mainClass.set("MainKt")
applicationDefaultJvmArgs = listOf( applicationDefaultJvmArgs = listOf(
"--enable-native-access=ALL-UNNAMED" "--enable-native-access=ALL-UNNAMED",
"-Dslf4j.internal.verbosity=WARN"
) )
} }
@@ -53,7 +54,6 @@ tasks.named("build") {
dependsOn("shadowJar") dependsOn("shadowJar")
} }
// да, я ленивый
tasks.withType<JavaExec> { tasks.withType<JavaExec> {
jvmArgs("--enable-native-access=ALL-UNNAMED") jvmArgs("--enable-native-access=ALL-UNNAMED")
} }
+1 -3
View File
@@ -1,3 +1 @@
2026-04-02 14:56:32.354 [main] INFO collection.CollectionManager - [COMMANDS] {GET_INFO} Получение информации о коллекции 2026-04-03 21:46:09.332 [main] INFO collection.CollectionManager - [COMMANDS] {LOAD_FROM_FILE} Загрузка коллекции из файла
2026-04-02 14:56:35.956 [main] INFO collection.CollectionManager - [COMMANDS] {IS_EMPTY} Проверка наличия элементов в коллекции
2026-04-02 14:56:35.958 [main] INFO collection.CollectionManager - [COMMANDS] {GET_ALL} Возвращена коллекция
+3
View File
@@ -0,0 +1,3 @@
2026-04-02 14:56:32.354 [main] INFO collection.CollectionManager - [COMMANDS] {GET_INFO} Получение информации о коллекции
2026-04-02 14:56:35.956 [main] INFO collection.CollectionManager - [COMMANDS] {IS_EMPTY} Проверка наличия элементов в коллекции
2026-04-02 14:56:35.958 [main] INFO collection.CollectionManager - [COMMANDS] {GET_ALL} Возвращена коллекция
+1
View File
@@ -0,0 +1 @@
2026-04-03 21:16:19.329 [main] INFO collection.CollectionManager - [COMMANDS] {LOAD_FROM_FILE} Загрузка коллекции из файла
+1
View File
@@ -0,0 +1 @@
2026-04-03 21:41:41.050 [main] INFO collection.CollectionManager - [COMMANDS] {LOAD_FROM_FILE} Загрузка коллекции из файла
+2
View File
@@ -0,0 +1,2 @@
2026-04-03 21:45:16.884 [main] INFO collection.CollectionManager - [COMMANDS] {LOAD_FROM_FILE} Загрузка коллекции из файла
2026-04-03 21:45:32.665 [main] INFO collection.CollectionManager - [COMMANDS] {LOAD_FROM_FILE} Загрузка коллекции из файла
+2
View File
@@ -12,6 +12,8 @@ import runner.CommandInvoker
* *
*/ */
fun main(args: Array<String>) { fun main(args: Array<String>) {
System.setProperty("slf4j.internal.verbosity", "WARN")
// Проверяем аргументы // Проверяем аргументы
var filePath = "data.csv" var filePath = "data.csv"
+1 -1
View File
@@ -12,6 +12,6 @@ class ExitCommand(
override val description = "завершить программу" override val description = "завершить программу"
override fun execute(args: List<String>) { override fun execute(args: List<String>) {
inputManager.print("До свидания!") null
} }
} }
-2
View File
@@ -40,12 +40,10 @@ class IOManager() {
/** /**
* Читает строку с промптом ☭. * Читает строку с промптом ☭.
* Возвращает null при Ctrl+D (EOF) или Ctrl+C.
*/ */
fun readLine(prompt: String): String? { fun readLine(prompt: String): String? {
while (inputQueue.isNotEmpty()) { while (inputQueue.isNotEmpty()) {
if (inputQueue.size == 1) kotlin.io.print(prompt) if (inputQueue.size == 1) kotlin.io.print(prompt)
// при выполнении скрипта три раза выводится
val topInDeque = inputQueue.peek() val topInDeque = inputQueue.peek()
if (topInDeque.hasNextLine()) { if (topInDeque.hasNextLine()) {
+1 -1
View File
@@ -1,4 +1,4 @@
<configuration> <configuration debug="false" statusListenerClass="ch.qos.logback.core.status.NopStatusListener">
<appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/all.log</file> <file>logs/all.log</file>
+32 -29
View File
@@ -5,52 +5,55 @@ import input.HumanBeingBuilder
import input.IOManager import input.IOManager
import io.mockk.* import io.mockk.*
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
class AddIfCommandsTest { class AddIfCommandsTest {
private lateinit var manager: CollectionManager private lateinit var manager: CollectionManager
private lateinit var inputManager: IOManager private val inputManager = mockk<IOManager>(relaxed = true)
@BeforeEach @BeforeEach
fun setUp() { fun setUp() {
manager = CollectionManager() manager = CollectionManager()
inputManager = mockk() }
@AfterEach
fun tearDown() {
unmockkConstructor(HumanBeingBuilder::class)
} }
/** /**
* Тест 5: add_if_max добавляет элемент, если он больше максимального. * Тест 5: add_if_max добавляет элемент, если он больше максимального.
*/ */
// @Test @Test
// fun `add_if_max should add element greater than current max`() { fun `add_if_max should add element greater than current max`() {
// manager.add(TestData.human("Alice")) // min элемент manager.add(TestData.human("Alice")) // min элемент
// val bigHuman = TestData.human("Zorro") // 'Z' > 'A' по compareTo val bigHuman = TestData.human("Zorro") // 'Z' > 'A' по compareTo
//
// // Мокируем HumanBeingBuilder через InputManager // Мокируем HumanBeingBuilder через InputManager
// mockkConstructor(HumanBeingBuilder::class) mockkConstructor(HumanBeingBuilder::class)
// every { anyConstructed<HumanBeingBuilder>().build() } returns bigHuman every { anyConstructed<HumanBeingBuilder>().build() } returns bigHuman
//
// AddIfMaxCommand(manager, inputManager).execute(emptyList()) AddIfMaxCommand(manager, inputManager).execute(emptyList())
//
// assertEquals(2, manager.size()) assertEquals(2, manager.size())
// unmockkConstructor(HumanBeingBuilder::class) }
// }
/** /**
* Тест 6: add_if_min НЕ добавляет элемент, если он больше минимального. * Тест 6: add_if_min НЕ добавляет элемент, если он больше минимального.
*/ */
// @Test @Test
// fun `add_if_min should NOT add element greater than current min`() { fun `add_if_min should NOT add element greater than current min`() {
// manager.add(TestData.human("Alice")) manager.add(TestData.human("Alice"))
// val bigHuman = TestData.human("Zorro") val bigHuman = TestData.human("Zorro")
//
// mockkConstructor(HumanBeingBuilder::class) mockkConstructor(HumanBeingBuilder::class)
// every { anyConstructed<HumanBeingBuilder>().build() } returns bigHuman every { anyConstructed<HumanBeingBuilder>().build() } returns bigHuman
//
// AddIfMinCommand(manager, inputManager).execute(emptyList()) AddIfMinCommand(manager, inputManager).execute(emptyList())
//
// assertEquals(1, manager.size()) // не добавлен assertEquals(1, manager.size()) // не добавлен
// unmockkConstructor(HumanBeingBuilder::class) }
// }
} }