Package org.erlide.ui.editors.erl.scanner

Source Code of org.erlide.ui.editors.erl.scanner.ErlangCharRuleTest

package org.erlide.ui.editors.erl.scanner;

import static org.junit.Assert.assertEquals;

import org.eclipse.jface.text.rules.ICharacterScanner;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.Token;
import org.junit.Test;

public class ErlangCharRuleTest {
    public class StringCharacterScanner implements ICharacterScanner {
        private final String content;
        private int index;

        public StringCharacterScanner(final String content) {
            this.content = content;
            index = 0;
        }

        public String getCurrentContent() {
            return content.substring(index);
        }

        public String getScannedContent() {
            return content.substring(0, index);
        }

        @Override
        public char[][] getLegalLineDelimiters() {
            return null;
        }

        @Override
        public int getColumn() {
            return 0;
        }

        @Override
        public int read() {
            if (index > content.length() - 1) {
                return -1;
            }
            return content.charAt(index++);
        }

        @Override
        public void unread() {
            index--;
        }

    }

    private final IToken token = new Token("test");
    StringCharacterScanner scanner;

    @Test
    public void noChar() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("aa");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(Token.UNDEFINED, tk);
        assertEquals("aa", scanner.getCurrentContent());
        assertEquals("", scanner.getScannedContent());
    }

    @Test
    public void simpleChar() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals(" ", scanner.getCurrentContent());
        assertEquals("$z", scanner.getScannedContent());
    }

    @Test
    public void simpleChar_1() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$z");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$z", scanner.getScannedContent());
    }

    @Test
    public void escapedChar() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\b");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$\\b", scanner.getScannedContent());
    }

    @Test
    public void octal_1() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\123z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("z ", scanner.getCurrentContent());
        assertEquals("$\\123", scanner.getScannedContent());
    }

    @Test
    public void octal_2() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\1z23z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("z23z ", scanner.getCurrentContent());
        assertEquals("$\\1", scanner.getScannedContent());
    }

    @Test
    public void octal_3() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\12");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$\\12", scanner.getScannedContent());
    }

    @Test
    public void hex_1() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x123z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("3z ", scanner.getCurrentContent());
        assertEquals("$\\x12", scanner.getScannedContent());
    }

    @Test
    public void hex_2() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x{cFE1}23z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("23z ", scanner.getCurrentContent());
        assertEquals("$\\x{cFE1}", scanner.getScannedContent());
    }

    @Test
    public void hex_3() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x{cFzE1}23z ");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("{cFzE1}23z ", scanner.getCurrentContent());
        assertEquals("$\\x", scanner.getScannedContent());
    }

    @Test
    public void hex_4() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x{cF}");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$\\x{cF}", scanner.getScannedContent());
    }

    @Test
    public void hex_5() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x12");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$\\x12", scanner.getScannedContent());
    }

    @Test
    public void hex_6() {
        final ErlangCharRule rule = new ErlangCharRule(token);
        scanner = new StringCharacterScanner("$\\x1");
        final IToken tk = rule.evaluate(scanner);
        assertEquals(token, tk);
        assertEquals("", scanner.getCurrentContent());
        assertEquals("$\\x1", scanner.getScannedContent());
    }

}
TOP

Related Classes of org.erlide.ui.editors.erl.scanner.ErlangCharRuleTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.