package chatty.gui.components.menus;
import chatty.util.commands.CustomCommand;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author tduva
*/
public class CommandMenuItemsTest {
@Test
public void testParse() {
assertEquals(CommandMenuItems.parse(null), new ArrayList<>());
assertEquals(CommandMenuItems.parse(""), new ArrayList<>());
String input1 = ""
+ "Test=/Hello\n"
+ "Test{0}=/Hello\n"
+ "Test{0}[k]=/Hello\n"
+ "Test[k]=/Hello\n"
+ "Test [k]=/Hello\n"
+ "/Test /Test{0} /Test{0}[k] /Test[k]\n"
+ "/Hello_World\n"
+ "@Menu Name\n"
+ "@Menu Name{0}\n"
+ "@Menu Name{0}[k]\n"
+ ".-\n"
+ "-\n"
+ "-{0}\n"
+ "-{1}\n"
+ ".-{0}\n"
+ "1m 1m[ctrl+t] 1m[ctrl+t|ct] 1m{0}\n"
+ "./Test //Test\n"
+ "\n"
+ ". Test = /Test $1- \n"
+ "60s 1m 60\n"
+ "Uptime=Stream Uptime: $(streamuptime)";
List<CommandMenuItem> expected1 = new LinkedList<>();
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, 0, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, 0, "k"));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, "k"));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, "k"));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, -1, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, 0, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, 0, "k"));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, -1, "k"));
expected1.add(new CommandMenuItem("Hello World", CustomCommand.parse("/Hello_World $1-"), null, -1, null));
expected1.add(new CommandMenuItem("Menu Name", null, null, -1, null));
expected1.add(new CommandMenuItem("Menu Name", null, null, 0, null));
expected1.add(new CommandMenuItem("Menu Name", null, null, 0, "k"));
expected1.add(new CommandMenuItem(null, null, "Menu Name", -1, null));
expected1.add(new CommandMenuItem(null, null, null, -1, null));
expected1.add(new CommandMenuItem(null, null, null, 0, null));
expected1.add(new CommandMenuItem(null, null, null, 1, null));
expected1.add(new CommandMenuItem(null, null, "Menu Name", 0, null));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, "ctrl+t"));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, "ctrl+t|ct"));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, 0, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), "Menu Name", -1, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), CommandMenuItems.CUSTOM_COMMANDS_SUBMENU, -1, null));
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), "Menu Name", -1, null));
expected1.add(new CommandMenuItem("60s", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null));
expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null));
expected1.add(new CommandMenuItem("Uptime", CustomCommand.parse("Stream Uptime: $(streamuptime)"), null, -1, null));
assertEquals(CommandMenuItems.parse(input1), expected1);
}
}