Files
ForgeMultipart/src/test/java/codechicken/multipart/EdgePartCharacterizationTest.java
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

58 lines
1.7 KiB
Java
Raw Normal View History

2026-08-14 21:28:51 +02:00
package codechicken.multipart;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
class EdgePartCharacterizationTest {
@Test
void edgePartsDoNotConductRedstoneByDefault() {
assertFalse(new ForwardingPart().conductsRedstone());
}
/** The bridge holds the trait default rather than dispatching, so an override does not change what it returns. */
@Test
void deprecatedBridgeReturnsTheTraitDefaultEvenWhenOverridden() {
assertFalse(TEdgePart$class.conductsRedstone(new ForwardingPart()));
assertTrue(new ConductingPart().conductsRedstone());
assertFalse(TEdgePart$class.conductsRedstone(new ConductingPart()));
}
@Test
void edgePartIsASlottedPart() {
ForwardingPart part = new ForwardingPart();
assertTrue(part instanceof TSlottedPart);
assertEquals(1 << 15, part.getSlotMask());
}
/** Mirrors the forwarder Scala emits for a class mixing in the trait without overriding it. */
private static class ForwardingPart extends TMultiPart implements TEdgePart {
@Override
public String getType() {
return "test:edge";
}
@Override
public int getSlotMask() {
return 1 << 15;
}
@Override
public boolean conductsRedstone() {
return TEdgePart$class.conductsRedstone(this);
}
}
private static final class ConductingPart extends ForwardingPart {
@Override
public boolean conductsRedstone() {
return true;
}
}
}