package me.desht.scrollingmenusign; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import me.desht.dhutils.LogUtils; import org.bukkit.ChatColor; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.MemoryConfiguration; import org.bukkit.entity.Player; import org.junit.Test; import java.util.Arrays; import java.util.List; import java.util.Map; public class SMSMenuTest { public SMSMenuTest() { LogUtils.init("SMSMenuTest"); } @Test public void testCreation() { SMSMenu menu = new SMSMenu("testmenu", "A Test Menu", (Player) null); menu.setAutosave(false); assertEquals("Name is 'testmenu'", "testmenu", menu.getName()); assertEquals("Title is 'A Test Menu'", "A Test Menu", menu.getTitle()); assertEquals("Owner is console", ScrollingMenuSign.CONSOLE_OWNER, menu.getOwner()); } @Test public void testDeserialization() { ConfigurationSection node = new MemoryConfiguration(); node.set("name", "testmenu"); node.set("title", "&1Title 1"); node.set("owner", ""); Map<String, Object> item1 = Maps.newHashMap(); item1.put("menu", "testmenu"); item1.put("label", "Label 1 2 3"); item1.put("command", "\\foo!"); item1.put("message", "a message for you"); item1.put("icon", "INK_SACK:WHITE"); item1.put("lore", Arrays.asList("line 1", "line 2")); item1.put("usesRemaining.limits.globalMax", 10); item1.put("usesRemaining.limits.globalRemaining", 8); node.set("items", Lists.newArrayList(item1)); boolean ok = true; try { SMSMenu menu = new SMSMenu(node); assertEquals("Name is correct", menu.getName(), "testmenu"); assertEquals("Title is correct", menu.getTitle(), ChatColor.DARK_BLUE + "Title 1"); assertEquals("Owner is console", menu.getOwnerId(), ScrollingMenuSign.CONSOLE_UUID); assertEquals("Item label is correct", menu.getItemAt(1).getLabel(), "Label 1 2 3"); } catch (SMSException e) { ok = false; } assertTrue("Menu created ok", ok); } @Test public void testAddRemoveItems() { SMSMenu menu = new SMSMenu("testmenu", "A Test Menu", (Player) null); menu.setAutosave(false); menu.addItem(new SMSMenuItem(menu, "Label 1", "a command", "")); menu.addItem(new SMSMenuItem(menu, "Label 2", "another command", "msg 2")); menu.addItem(new SMSMenuItem(menu, "Label 3", "third command", "")); assertEquals("Menu has three items", 3, menu.getItemCount()); assertEquals("Second label is 'Label 2'", "Label 2", menu.getItemAt(2).getLabel()); menu.insertItem(2, new SMSMenuItem(menu, "Inserted item", "", "msg 3")); assertEquals("Inserted at position", "msg 3", menu.getItemAt(2).getMessage()); menu.removeItem(1); assertEquals("Remove item", "Label 2", menu.getItemAt(2).getLabel()); menu.removeAllItems(); assertTrue("Menu is empty", menu.getItemCount() == 0); } @Test public void testSortMenu() { SMSMenu menu = new SMSMenu("testmenu", "A Test Menu", (Player) null); menu.setAutosave(false); menu.addItem(new SMSMenuItem(menu, "Zebra", "a command", "")); menu.addItem(new SMSMenuItem(menu, "Hotel", "another command", "msg 2")); menu.addItem(new SMSMenuItem(menu, "Charlie", "third command", "")); menu.addItem(new SMSMenuItem(menu, "Tango", "blah blah", "")); menu.sortItems(); assertEquals("Sort items", "third command", menu.getItemAt(1).getCommand()); assertEquals("Sort items", "", menu.getItemAt(4).getMessage()); } }