diff options
Diffstat (limited to 'src/test')
3 files changed, 75 insertions, 1 deletions
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 <https://www.gnu.org/licenses/>. + */ + +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)) } diff --git a/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension b/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension new file mode 100644 index 00000000..6cc832b4 --- /dev/null +++ b/src/test/resources/META-INF/services/org.junit.jupiter.api.extension.Extension @@ -0,0 +1,20 @@ +# +# 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 <https://www.gnu.org/licenses/>. +# + +io.github.moulberry.notenoughupdates.util.BootstrapHook |