/* * Copyright (C) 2012 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.crsh.lang.impl.script; import junit.framework.TestCase; public class TokenTestCase extends TestCase { public void testEmpty() { new TestTokenizer("").assertCommand("").assertEOF(); new TestTokenizer(" ").assertCommand(" ").assertEOF(); } public void testCommand() { new TestTokenizer("a").assertCommand("a").assertEOF(); new TestTokenizer("' '").assertCommand("' '").assertEOF(); new TestTokenizer("\" \"").assertCommand("\" \"").assertEOF(); new TestTokenizer("'\"'").assertCommand("'\"'").assertEOF(); new TestTokenizer("\"'\"").assertCommand("\"'\"").assertEOF(); new TestTokenizer(" ' ' ").assertCommand(" ' ' ").assertEOF(); // Test escape special char in simple quote new TestTokenizer("'+'").assertCommand("'+'").assertEOF(); new TestTokenizer("'|'").assertCommand("'|'").assertEOF(); // Test escape special char in double quote new TestTokenizer("\"+\"").assertCommand("\"+\"").assertEOF(); new TestTokenizer("\"|\"").assertCommand("\"|\"").assertEOF(); // Non terminated quotes new TestTokenizer("\"").assertCommand("\"").assertEOF(); new TestTokenizer("'").assertCommand("'").assertEOF(); // new TestTokenizer("a b").assertCommand("a b").assertEOF(); } public void testPipe() { new TestTokenizer("|").assertCommand("").assertCommand("").assertEOF(); } public void testComposite() { TestTokenizer tokenizer = new TestTokenizer("a | b c"); tokenizer.assertCommand("a "); tokenizer.assertCommand(" b c"); tokenizer.assertEOF(); } private static class TestTokenizer { /** . */ private Token current; private TestTokenizer(CharSequence s) throws NullPointerException { current = Token.parse(s); } public void assertEOF() { assertEquals(null, current); } public TestTokenizer assertCommand(String line) { assertEquals(line, current.value); current = current.next; return this; } } }