import junit.framework.TestCase;
/*
 * Created on Jan 10, 2006
 */

public class TokenTest extends TestCase {

    /*
     * Test method for 'Token.Token(Type, String)' constructor
     */
    public void testToken() {
        Token t;
        
        t = new Token(Type.NAME, "hello");
        assertEquals(Type.NAME, t.type);
        assertEquals("hello", t.value);
        
        t = new Token(Type.NUMBER, "123");
        assertEquals(Type.NUMBER, t.type);
        assertEquals("123", t.value);

        t = new Token(Type.SYMBOL, "!");
        assertEquals(Type.SYMBOL, t.type);
        assertEquals("!", t.value);

        t = new Token(Type.EOL, "");
        assertEquals(Type.EOL, t.type);
        assertEquals("", t.value);
        
        try {
            t = new Token(null, "");
            fail();
            t = new Token(Type.NAME, null);
            fail();
        }
        catch (IllegalArgumentException e) {
        }
    }

    /*
     * Test method for 'Token.toString()'
     */
    public void testToString() {
        Token t;

//        t = new Token(Type.NAME, "hello");
//        assertEquals("NAME:hello", t + "");
//        
//        t = new Token(Type.NUMBER, "123");
//        assertEquals("NUMBER:123", t + "");
//        
//        t = new Token(Type.SYMBOL, "!");
//        assertEquals("SYMBOL:!", t.toString());
//        
//        t = new Token(Type.EOL, "");
//        assertEquals("EOL:", t.toString());
        
        t = new Token(Type.NAME, "hello");
        assertEquals("NAME[hello]", t + "");
        
        t = new Token(Type.NUMBER, "123");
        assertEquals("NUMBER[123]", t + "");
        
        t = new Token(Type.SYMBOL, "!");
        assertEquals("SYMBOL[!]", t.toString());
        
        t = new Token(Type.EOL, "");
        assertEquals("EOL[\\n]", t.toString());
        
        t = new Token(Type.END_OF_INPUT, "");
        assertEquals("END_OF_INPUT", t.toString());
    }
}
