From e0a2f5f5991048317f5c045feca084a1413c45fd Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Wed, 18 Oct 2023 16:12:19 +0200 Subject: Add calculator precision option (#882) * Add calculator precision option * Fix loading of minecraft classes from some tests --- .../notenoughupdates/util/BootstrapHook.kt | 54 ++++++++++++++++++++++ .../notenoughupdates/util/CalculatorTest.kt | 2 +- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/test/kotlin/io/github/moulberry/notenoughupdates/util/BootstrapHook.kt (limited to 'src/test/kotlin/io') diff --git a/src/test/kotlin/io/github/moulberry/notenoughupdates/util/BootstrapHook.kt b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/BootstrapHook.kt new file mode 100644 index 00000000..cab10aaa --- /dev/null +++ b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/BootstrapHook.kt @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2023 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see . + */ + +package io.github.moulberry.notenoughupdates.util + +import net.minecraft.block.Block +import net.minecraft.block.BlockFire +import net.minecraft.init.Bootstrap +import net.minecraft.item.Item +import org.junit.jupiter.api.extension.BeforeAllCallback +import org.junit.jupiter.api.extension.Extension +import org.junit.jupiter.api.extension.ExtensionContext +import java.util.concurrent.locks.Lock +import java.util.concurrent.locks.ReentrantLock + +class BootstrapHook : BeforeAllCallback, Extension { + companion object { + private val LOCK: Lock = ReentrantLock() + private var bootstrapped = false + } + + override fun beforeAll(p0: ExtensionContext?) { + LOCK.lock() + try { + if (!bootstrapped) { + bootstrapped = true + + Bootstrap::class.java.getDeclaredField("alreadyRegistered").also { it.isAccessible = true } + .set(null, true) + Block.registerBlocks() + BlockFire.init() + Item.registerItems() + } + } finally { + LOCK.unlock() + } + } +} diff --git a/src/test/kotlin/io/github/moulberry/notenoughupdates/util/CalculatorTest.kt b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/CalculatorTest.kt index ce866eec..6c4b1e1c 100644 --- a/src/test/kotlin/io/github/moulberry/notenoughupdates/util/CalculatorTest.kt +++ b/src/test/kotlin/io/github/moulberry/notenoughupdates/util/CalculatorTest.kt @@ -41,7 +41,7 @@ internal class CalculatorTest { calculationShouldBe("(1)+1", 2) calculationShouldBe("-0", 0) calculationShouldBe("-10+2", -8) - calculationShouldBe("14k*23m/2.35+596123-9213", 137021863505.74) + calculationShouldBe("14k*23m/2.35+596123-9213", 137021863505.74467) calculationShouldBe("1+-10+2", -7) calculationShouldBe("2**--10", 2.0.pow(10)) } -- cgit