
hope.kola.contract.assertj.Helper Maven / Gradle / Ivy
package hope.kola.contract.assertj;
import com.squareup.javapoet.ArrayTypeName;
import com.squareup.javapoet.ClassName;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.TypeName;
import hope.kola.contract.assertj.model.DynamicProperty;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.*;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import org.assertj.core.data.Offset;
public class Helper {
static final Map PRIMITIVE_SUPPORTS =
new HashMap<>() {
{
put(ClassName.get(Boolean.class), "newBoolean");
put(ClassName.get(Integer.class), "newInteger");
put(ClassName.get(Long.class), "newLong");
put(ClassName.get(Double.class), "newDouble");
put(ClassName.get(Float.class), "newFloat");
put(ClassName.get(LocalDate.class), "newLocalDate");
put(ClassName.get(LocalDateTime.class), "newLocalDateTime");
put(ClassName.get(LocalTime.class), "newLocalTime");
put(ClassName.get(BigDecimal.class), "newBigDecimal");
put(ClassName.get(BigInteger.class), "newBigInteger");
put(ClassName.get(String.class), "newString");
put(ClassName.get(Instant.class), "newInstant");
put(ClassName.get(Offset.class), "newOffset");
put(ClassName.get(Byte.class), "newByte");
put(ClassName.get(Month.class), "newMonth");
put(ClassName.get(Short.class), "newShort");
// Arrays:
put(ArrayTypeName.of(String.class), "newStringArray");
put(ArrayTypeName.of(Integer.class), "newIntegerArray");
put(ArrayTypeName.of(Long.class), "newLongArray");
put(ArrayTypeName.of(Double.class), "newDoubleArray");
put(ArrayTypeName.of(Float.class), "newFloatArray");
put(ArrayTypeName.of(Byte.class), "newByteArray");
}
};
public static DynamicProperty newOffset(final Offset offset) {
return DynamicProperty.newGeneric(offset, offsetBuilder(offset));
}
public static Consumer offsetBuilder(final Offset offset) {
return builder -> {
if (offset.strict) {
builder.add("$T.strictOffset($L)", Offset.class, offset.value);
} else {
builder.add("$T.offset($L)", Offset.class, offset.value);
}
};
}
public static String method(final TypeName typeName) {
return PRIMITIVE_SUPPORTS.get(typeName);
}
public static TypeName mapperName(final String name) {
switch (name) {
case "boolean", "bool" -> {
return ClassName.get(Boolean.class);
}
case "int" -> {
return ClassName.get(Integer.class);
}
case "long" -> {
return ClassName.get(Long.class);
}
case "double" -> {
return ClassName.get(Double.class);
}
case "float" -> {
return ClassName.get(Float.class);
}
case "short" -> {
return ClassName.get(Short.class);
}
case "char" -> {
return ClassName.get(char.class);
}
case "byte" -> {
return ClassName.get(Byte.class);
}
case "byte[]" -> {
return ClassName.get(Byte[].class);
}
case "java.lang.CharSequence" -> {
return ClassName.get(String.class);
}
case "java.lang.CharSequence[]" -> {
return ArrayTypeName.of(String.class);
}
}
if (name.endsWith("[]")) {
String _name = name.substring(0, name.length() - 2);
return ArrayTypeName.of(ClassName.bestGuess(_name));
}
return ClassName.bestGuess(name);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy