Package org.bndtools.utils.parse.properties

Source Code of org.bndtools.utils.parse.properties.TestPropertiesLineReader

package org.bndtools.utils.parse.properties;

import static org.bndtools.utils.parse.properties.LineType.*;
import junit.framework.TestCase;

import org.eclipse.jface.text.Region;

public class TestPropertiesLineReader extends TestCase {

    public static void testEmpty() throws Exception {
        String input = "\n" + "  \n" + "\t  ";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(blank, reader.next());
        assertEquals(new Region(0, 0), reader.region());

        assertEquals(blank, reader.next());
        assertEquals(new Region(1, 2), reader.region());

        assertEquals(blank, reader.next());
        assertEquals(new Region(4, 3), reader.region());

        assertEquals(eof, reader.next());
    }

    public static void testRegionAfterEOF() throws Exception {
        PropertiesLineReader reader = new PropertiesLineReader("");
        assertEquals(blank, reader.next());
        assertEquals(new Region(0, 0), reader.region());
        assertEquals(eof, reader.next());
        try {
            reader.region();
            fail("Should throw IllegalStateException");
        } catch (IllegalStateException e) {
            // expected
        }
    }

    public static void testComment() throws Exception {
        String input = "# comment";
        PropertiesLineReader reader = new PropertiesLineReader(input);
        assertEquals(comment, reader.next());
        assertEquals(new Region(0, 9), reader.region());
        assertEquals(eof, reader.next());
    }

    public static void testCommentLines() throws Exception {
        String input = "# comment1\n" + "# comment2\n" + "   # comment3\n" + "! comment4\n" + "   ! comment5";
        PropertiesLineReader reader = new PropertiesLineReader(input);
        assertEquals(comment, reader.next());
        assertEquals(new Region(0, 10), reader.region());

        assertEquals(comment, reader.next());
        assertEquals(new Region(11, 10), reader.region());

        assertEquals(comment, reader.next());
        assertEquals(new Region(22, 13), reader.region());

        assertEquals(comment, reader.next());
        assertEquals(new Region(36, 10), reader.region());

        assertEquals(comment, reader.next());
        assertEquals(new Region(47, 13), reader.region());

        assertEquals(eof, reader.next());
    }

    public static void testCommentsDontContinue() throws Exception {
        // first comment ends with backslash but this shouldn't continue the
        // line
        String input = "# comment\\\n# comment";

        PropertiesLineReader reader = new PropertiesLineReader(input);
        assertEquals(comment, reader.next());
        assertEquals(new Region(0, 10), reader.region());

        assertEquals(comment, reader.next());
        assertEquals(new Region(11, 9), reader.region());

        assertEquals(eof, reader.next());
    }

    public static void testEntryLines() throws Exception {
        String input = "foo=bar\n" + "foo2:bar2\n" + "   foo3:bar3";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 7), reader.region());
        assertEquals("foo", reader.key());

        assertEquals(entry, reader.next());
        assertEquals(new Region(8, 9), reader.region());
        assertEquals("foo2", reader.key());

        assertEquals(entry, reader.next());
        assertEquals(new Region(18, 12), reader.region());
        assertEquals("foo3", reader.key());
    }

    public static void testContinuedLine() throws Exception {
        String input = "foo=bar,\\\n" + "  baz";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 15), reader.region());
        assertEquals("foo", reader.key());
    }

    public static void testTrailingWhitespaceAfterKey() throws Exception {
        String input = "   hello  :world";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 16), reader.region());
        assertEquals("hello", reader.key());
    }

    public static void testEscapedCharsInKey() throws Exception {
        String input = "hel\\ \\ lo: world\n" + "hell\\=o\\:world=foo";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 16), reader.region());
        assertEquals("hel  lo", reader.key());

        assertEquals(entry, reader.next());
        assertEquals(new Region(17, 18), reader.region());
        assertEquals("hell=o:world", reader.key());
    }

    public static void testEmptyValue() throws Exception {
        String input = "cheeses";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 7), reader.region());
        assertEquals("cheeses", reader.key());
    }

    public static void testCarriageReturnAndLineFeed() throws Exception {
        String input = "line1=foo\r\n" + "line2=foo,\\\r\n" + "  bar";
        PropertiesLineReader reader = new PropertiesLineReader(input);

        assertEquals(entry, reader.next());
        assertEquals(new Region(0, 9), reader.region());
        assertEquals("line1", reader.key());

        assertEquals(entry, reader.next());
        assertEquals(new Region(11, 18), reader.region());
        assertEquals("line2", reader.key());
    }
}
TOP

Related Classes of org.bndtools.utils.parse.properties.TestPropertiesLineReader

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.