2022-05-07 16:26:39 +02:00
|
|
|
package net.minestom.server.tag;
|
|
|
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
2022-06-25 10:36:50 +02:00
|
|
|
import static net.minestom.server.api.TestUtils.assertEqualsSNBT;
|
2022-05-07 16:26:39 +02:00
|
|
|
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));
|
|
|
|
}
|
|
|
|
|
2022-06-25 10:36:50 +02:00
|
|
|
@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());
|
|
|
|
}
|
|
|
|
|
2022-05-07 16:26:39 +02:00
|
|
|
@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);
|
|
|
|
}
|
|
|
|
}
|