Adds tests for TypeValidationHelper
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good

This commit is contained in:
2023-01-28 09:13:02 +01:00
parent a79f2e273a
commit c84c2cf30e
4 changed files with 217 additions and 12 deletions

View File

@ -77,7 +77,7 @@ public class BlacksmithPlugin extends JavaPlugin {
public void reload() {
this.reloadConfig();
config.load();
translator.loadLanguages(this.getDataFolder(), this.getConfig().getString("language", "en"));
translator.loadLanguages(this.getDataFolder(), this.getConfig().getString("language", "en"), "en");
}
/**
@ -122,7 +122,7 @@ public class BlacksmithPlugin extends JavaPlugin {
translator = new Translator();
translator.registerMessageCategory(TranslatableTimeUnit.UNIT_SECOND);
translator.registerMessageCategory(BlacksmithTranslatableMessage.ITEM_TYPE_ENCHANTMENT);
translator.loadLanguages(this.getDataFolder(), fileConfiguration.getString("language", "en"));
translator.loadLanguages(this.getDataFolder(), fileConfiguration.getString("language", "en"), "en");
BlacksmithPlugin.stringFormatter = new StringFormatter(this.getDescription().getPrefix(), translator);
//Set up Vault integration

View File

@ -210,4 +210,5 @@ public enum BlacksmithTranslatableMessage implements TranslatableMessage {
public TranslatableMessage[] getAllMessages() {
return BlacksmithTranslatableMessage.values();
}
}

View File

@ -3,7 +3,9 @@ package net.knarcraft.blacksmith.util;
import net.knarcraft.blacksmith.BlacksmithPlugin;
import net.knarcraft.blacksmith.config.SettingValueType;
import net.knarcraft.blacksmith.formatting.BlacksmithTranslatableMessage;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import java.util.List;
@ -33,7 +35,8 @@ public final class TypeValidationHelper {
case PERCENTAGE -> isPercentage(value, sender);
case BOOLEAN -> true;
case STRING_LIST, REFORGE_ABLE_ITEMS -> isStringList(value, sender);
case MATERIAL, ENCHANTMENT -> false;
case MATERIAL -> isMaterial(value, sender);
case ENCHANTMENT -> isEnchantment(value, sender);
};
} catch (ClassCastException exception) {
//This error signifies that an object is not a string, and of the wrong class
@ -41,6 +44,40 @@ public final class TypeValidationHelper {
}
}
/**
* Checks whether the given value is a material
*
* @param value <p>The value to check</p>
* @param sender <p>The command sender to use for printing error messages</p>
* @return <p>True if the value is a material</p>
*/
private static boolean isMaterial(Object value, CommandSender sender) {
boolean isMaterial = value instanceof Material || (value instanceof String string &&
InputParsingHelper.matchMaterial(string) != null);
if (!isMaterial && sender != null) {
BlacksmithPlugin.getStringFormatter().displayErrorMessage(sender,
BlacksmithTranslatableMessage.ITEM_TYPE_MATERIAL);
}
return isMaterial;
}
/**
* Checks whether the given value is an enchantment
*
* @param value <p>The value to check</p>
* @param sender <p>The command sender to use for printing error messages</p>
* @return <p>True if the value is an enchantment</p>
*/
private static boolean isEnchantment(Object value, CommandSender sender) {
boolean isEnchantment = value instanceof Enchantment || (value instanceof String string &&
InputParsingHelper.matchEnchantment(string) != null);
if (!isEnchantment && sender != null) {
BlacksmithPlugin.getStringFormatter().displayErrorMessage(sender,
BlacksmithTranslatableMessage.ITEM_TYPE_ENCHANTMENT);
}
return isEnchantment;
}
/**
* Checks whether the given value is a string list
*
@ -65,16 +102,13 @@ public final class TypeValidationHelper {
* @return <p>True if the value is a percentage</p>
*/
private static boolean isPercentage(Object value, CommandSender sender) {
try {
int intValue = ConfigHelper.asInt(value);
return intValue >= 0 && intValue <= 100;
} catch (NumberFormatException | NullPointerException exception) {
if (sender != null) {
BlacksmithPlugin.getStringFormatter().displayErrorMessage(sender,
BlacksmithTranslatableMessage.INPUT_PERCENTAGE_REQUIRED);
}
return false;
boolean isPercentage = isPositiveInteger(value, null) && ConfigHelper.asInt(value) >= 0 &&
ConfigHelper.asInt(value) <= 100;
if (!isPercentage && sender != null) {
BlacksmithPlugin.getStringFormatter().displayErrorMessage(sender,
BlacksmithTranslatableMessage.INPUT_PERCENTAGE_REQUIRED);
}
return isPercentage;
}
/**