void object(@Enum(value = {"asc", "desc", "sort", "random"}) String s1); void primitive(@Enum(value = {"0", "1", "2", "3"}) int i1);
/** * Validate {@code candidate} checking if its value is present in the array supplied. */ @Override public void validate(Metadata<Enum> metadata, Object candidate) throws AssertionError { throwExceptionOnEmptyArray(metadata); boolean valid = false; String[] values = metadata.getAnnotation().value(); for (String value : values) { if (candidate == null) break; if (value.equals(candidate.toString())) { valid = true; break; } } String input = String.valueOf(candidate); if (input.isEmpty()) input = "empty"; String errorMessage = input + " not matches with any of specified values: " + Arrays.toString(values); if (!valid) throw new AssertionError(errorMessage); }
/** * Return as legal value a random one from the array supplied, or if legal value was set then return that. */ @Override public Object legal(Metadata<Enum> metadata) { throwExceptionOnEmptyArray(metadata); Enum enumAnnotation = metadata.getAnnotation(); String defaultLegal = enumAnnotation.legal(); if (!defaultLegal.isEmpty()) { return safetyCast.with(defaultLegal, metadata.getType()); } int length = enumAnnotation.value().length; int randomIndex = new Random().nextInt(length); String result = enumAnnotation.value()[randomIndex]; return safetyCast.with(result, metadata.getType()); }
/** * Return empty if type is string, otherwise return 0. */ @Override public Object illegal(Metadata<Enum> metadata) { throwExceptionOnEmptyArray(metadata); String defaultOptional = metadata.getAnnotation().illegal(); Type type = metadata.getType(); if (!defaultOptional.isEmpty()) { return safetyCast.with(defaultOptional, metadata.getType()); } else if (type.equals(String.class)) { return safetyCast.with("", type); } else { return safetyCast.with(0, type); } }
void primitive(@Enum(value = {"0", "1", "2", "3"}) int i1); }
private void throwExceptionOnEmptyArray(Metadata<Enum> metadata) { if (metadata.getAnnotation().value().length == 0) { String errorMessage = Messages.emptyEnumArray(metadata.getMockingClass(), metadata.getMethod()); throw new RuntimeException(errorMessage); } }
void checkDefaults(@Enum(value = {"desc"}, legal = "desc", illegal = "illegal") String s1);
void emptyArray(@Enum(value = {}) String s1);
@DTO(MockModel.class) Model modelWithEnum(@Enum(value = {"asc", "desc"}, legal = "asc") String s1); }