use of net.minecraft.nbt.ByteArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method checkSameIntArray.
// ===================
// Integer Arrays
// ===================
private boolean checkSameIntArray(List<Integer> ints, @Nullable Class<? extends INBT> targetClass) {
IntArrayNBT nbt = new IntArrayNBT(ints);
Object sanitized = CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, targetClass, false);
if (ints.isEmpty()) {
if (targetClass == INBT.class) {
return sanitized instanceof CompoundNBT && ((CompoundNBT) sanitized).isEmpty();
}
// CollectionNBT
return sanitized instanceof ListNBT && ((ListNBT) sanitized).isEmpty();
} else if (ints.stream().allMatch(value -> value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE)) {
ByteArrayNBT expected = new ByteArrayNBT(ints.stream().map(Integer::byteValue).collect(Collectors.toList()));
return expected.equals(sanitized);
} else if (ints.stream().allMatch(value -> value >= Short.MIN_VALUE && value <= Short.MAX_VALUE)) {
ListNBT expected = ints.stream().map(i -> ShortNBT.valueOf(i.shortValue())).collect(Collectors.toCollection(ListNBT::new));
return expected.equals(sanitized);
}
return nbt.equals(sanitized);
}
use of net.minecraft.nbt.ByteArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperTest method testInvalidListCompoundByteArray.
@Test
@DisplayName("Test making sure we fail to create a list out of invalid elements (non empty compound + byte array)")
void testInvalidListCompoundByteArray() {
CompoundNBT nbt = new CompoundNBT();
nbt.putString("key", "value");
assertMismatchedList(nbt, new ByteArrayNBT(Collections.singletonList((byte) 0)));
}
use of net.minecraft.nbt.ByteArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperTest method testInvalidHintCollection.
@Test
@DisplayName("Test hint mismatch expected type using arrays as actual")
void testInvalidHintCollection() {
ByteArrayNBT nbt = new ByteArrayNBT(new byte[0]);
Object withHint = addInvalidHint(nbt, Constants.NBT.TAG_FLOAT);
Assertions.assertNotEquals(nbt, CCArgumentWrapperTestHelper.sanitize(nbt.getClass(), withHint));
}
use of net.minecraft.nbt.ByteArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method checkSameLongArray.
// ===================
// Long Arrays
// ===================
private boolean checkSameLongArray(List<Long> longs, @Nullable Class<? extends INBT> targetClass) {
LongArrayNBT nbt = new LongArrayNBT(longs);
Object sanitized = CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, targetClass, false);
if (longs.isEmpty()) {
if (targetClass == INBT.class) {
return sanitized instanceof CompoundNBT && ((CompoundNBT) sanitized).isEmpty();
}
// CollectionNBT
return sanitized instanceof ListNBT && ((ListNBT) sanitized).isEmpty();
} else if (longs.stream().allMatch(value -> value >= Byte.MIN_VALUE && value <= Byte.MAX_VALUE)) {
ByteArrayNBT expected = new ByteArrayNBT(longs.stream().map(Long::byteValue).collect(Collectors.toList()));
return expected.equals(sanitized);
} else if (longs.stream().allMatch(value -> value >= Short.MIN_VALUE && value <= Short.MAX_VALUE)) {
ListNBT expected = longs.stream().map(i -> ShortNBT.valueOf(i.shortValue())).collect(Collectors.toCollection(ListNBT::new));
return expected.equals(sanitized);
} else if (longs.stream().allMatch(value -> value >= Integer.MIN_VALUE && value <= Integer.MAX_VALUE)) {
IntArrayNBT expected = new IntArrayNBT(longs.stream().map(Long::intValue).collect(Collectors.toList()));
return expected.equals(sanitized);
}
return getExpected(longs).equals(sanitized);
}
use of net.minecraft.nbt.ByteArrayNBT in project Mekanism by mekanism.
the class CCArgumentWrapperPropertyTest method testListByteArrayPlusEmpty.
@Test
@DisplayName("Test serializing and deserializing lists of lists that would create the inner ones as byte arrays plus an empty list")
void testListByteArrayPlusEmpty() {
qt().forAll(lists().of(allBytes()).ofSizeBetween(1, 15)).check(bytes -> {
ListNBT nbt = fromArray(fromBytes(bytes), new ListNBT());
ListNBT expected = fromArray(new ByteArrayNBT(bytes), new ByteArrayNBT(new byte[0]));
return expected.equals(CCArgumentWrapperTestHelper.wrapAndSanitize(nbt, null, false));
});
}
Aggregations