mirror of https://github.com/Minestom/Minestom.git
101 lines
2.9 KiB
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);
|
|
}
|
|
}
|