package com.nicewuerfel.blockown; import static org.junit.Assert.assertTrue; import com.nicewuerfel.blockown.output.DebugOutput; import org.apache.commons.io.FileUtils; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; public class TestMessages { private static File testFolder; @BeforeClass public static void createTestFolder() throws IOException { testFolder = new File("MessageTest"); if (testFolder.exists()) { FileUtils.deleteDirectory(testFolder); } assertTrue(testFolder.mkdir()); Message.loadMessages(new DebugOutput(), new File(testFolder, "messages.yml")); } @Test public void testMessages() throws IllegalAccessException { Field[] declaredFields = Message.class.getDeclaredFields(); ArrayList<String> missing = new ArrayList<>(128); for (Field field : declaredFields) { if (Modifier.isStatic(field.getModifiers())) { if (!field.getName().equals("messages") && !field.getName().startsWith("COLOR") && !field.getName().startsWith("$")) { Message message = (Message) field.get(null); assertTrue(message != null); if (!verifyMessage(message)) { missing.add(message.getPath()); } } } } assertTrue("There are missing messages: " + System.lineSeparator() + asString(missing), missing.isEmpty()); } private String asString(List<String> list) { StringBuilder b = new StringBuilder(list.size() * 20); for (String s : list) { b.append(s).append(System.lineSeparator()); } return b.toString(); } private boolean verifyMessage(@Nonnull Message message) { String messageString = message.toString(); return messageString != null && !messageString.isEmpty(); } @AfterClass public static void cleanUp() throws IOException { FileUtils.deleteDirectory(testFolder); } }