Minestom/src/test/java/net/minestom/server/tag/TagAtomicTest.java

101 lines
2.9 KiB
Java

package net.minestom.server.tag;
import org.junit.jupiter.api.Test;
import static net.minestom.server.api.TestUtils.assertEqualsSNBT;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
public class TagAtomicTest {
@Test
public void update() {
var tag = Tag.Integer("coin");
var handler = TagHandler.newHandler();
handler.updateTag(tag, integer -> {
assertNull(integer);
return 5;
});
assertEquals(5, handler.getTag(tag));
handler.updateTag(tag, integer -> {
assertEquals(5, integer);
return 10;
});
assertEquals(10, handler.getTag(tag));
}
@Test
public void updateDefault() {
var tag = Tag.Integer("coin").defaultValue(25);
var handler = TagHandler.newHandler();
handler.updateTag(tag, integer -> {
assertEquals(25, integer);
return 5;
});
assertEquals(5, handler.getTag(tag));
handler.updateTag(tag, integer -> {
assertEquals(5, integer);
return 10;
});
assertEquals(10, handler.getTag(tag));
}
@Test
public void updateRemoval() {
var tag = Tag.Integer("coin");
var handler = TagHandler.newHandler();
handler.setTag(tag, 5);
handler.updateTag(tag, integer -> {
assertEquals(5, integer);
return null;
});
assertNull(handler.getTag(tag));
assertEqualsSNBT("{}", handler.asCompound());
}
@Test
public void updateRemovalPath() {
var tag = Tag.Integer("coin").path("path");
var handler = TagHandler.newHandler();
handler.setTag(tag, 5);
handler.updateTag(tag, integer -> {
assertEquals(5, integer);
return null;
});
assertNull(handler.getTag(tag));
assertEqualsSNBT("{}", handler.asCompound());
}
@Test
public void updateAndGet() {
var tag = Tag.Integer("coin");
var handler = TagHandler.newHandler();
var result = handler.updateAndGetTag(tag, integer -> {
assertNull(integer);
return 5;
});
assertEquals(5, result);
result = handler.updateAndGetTag(tag, integer -> {
assertEquals(5, integer);
return 10;
});
assertEquals(10, result);
}
@Test
public void getAndUpdate() {
var tag = Tag.Integer("coin");
var handler = TagHandler.newHandler();
var result = handler.getAndUpdateTag(tag, integer -> {
assertNull(integer);
return 5;
});
assertNull(result);
result = handler.getAndUpdateTag(tag, integer -> {
assertEquals(5, integer);
return 10;
});
assertEquals(5, result);
}
}