Package org.erlide.util

Source Code of org.erlide.util.TermParserTest

package org.erlide.util;

import java.io.IOException;

import org.erlide.util.erlang.OtpErlang;
import org.erlide.util.erlang.OtpFormatPlaceholder;
import org.erlide.util.erlang.OtpPatternVariable;
import org.erlide.util.erlang.TermParser;
import org.erlide.util.erlang.TermParserException;
import org.junit.Assert;
import org.junit.Test;

import com.ericsson.otp.erlang.OtpErlangAtom;
import com.ericsson.otp.erlang.OtpErlangList;
import com.ericsson.otp.erlang.OtpErlangLong;
import com.ericsson.otp.erlang.OtpErlangMap;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangString;
import com.ericsson.otp.erlang.OtpOutputStream;

public class TermParserTest {

    private final TermParser termParser = OtpErlang.getTermParser();

    @Test
    public void int_1() throws TermParserException {
        final OtpErlangLong r = (OtpErlangLong) termParser.parse("34");
        Assert.assertEquals(r.longValue(), 34);
    }

    @Test
    public void int_2() throws TermParserException {
        final OtpErlangLong r = (OtpErlangLong) termParser.parse("-34");
        Assert.assertEquals(r.longValue(), -34);
    }

    @Test
    public void atom_1() throws TermParserException {
        final OtpErlangAtom r = (OtpErlangAtom) termParser.parse("hello");
        Assert.assertEquals(r.atomValue(), "hello");
    }

    @Test
    public void atom_2() throws TermParserException {
        final OtpErlangAtom r = (OtpErlangAtom) termParser.parse("hello   ");
        Assert.assertEquals(r.atomValue(), "hello");
    }

    @Test
    public void atom_3() throws TermParserException {
        final OtpErlangAtom r = (OtpErlangAtom) termParser.parse("   hello");
        Assert.assertEquals(r.atomValue(), "hello");
    }

    @Test
    public void number_1() throws TermParserException {
        final OtpErlangLong r = (OtpErlangLong) termParser.parse("321");
        Assert.assertEquals(r.longValue(), 321);
    }

    @Test
    public void var_1() throws TermParserException {
        final OtpPatternVariable r = (OtpPatternVariable) termParser.parse("Hello");
        Assert.assertEquals(r.getName(), "Hello");
    }

    @Test
    public void var_2() throws TermParserException {
        final OtpPatternVariable r = (OtpPatternVariable) termParser.parse("_");
        Assert.assertEquals(r.getName(), "_");
    }

    @Test
    public void string_1() throws TermParserException {
        final OtpErlangString r = (OtpErlangString) termParser.parse("\"Hello\"");
        Assert.assertEquals(r.stringValue(), "Hello");
    }

    @Test
    public void string_2() throws TermParserException {
        final OtpErlangString r = (OtpErlangString) termParser.parse("\"Hello world!\"");
        Assert.assertEquals(r.stringValue(), "Hello world!");
    }

    @Test
    public void placeholder_1() throws TermParserException {
        final OtpFormatPlaceholder r = (OtpFormatPlaceholder) termParser.parse("~hello");
        Assert.assertEquals(r.getName(), "hello");
    }

    @Test
    public void list_1() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[]");
        Assert.assertEquals("[]", r.toString());
    }

    @Test
    public void list_2() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[a,2,b,4]");
        Assert.assertEquals("[a,2,b,4]", r.toString());
    }

    @Test
    public void list_3() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[a,2,b|4]");
        Assert.assertEquals("[a,2,b|4]", r.toString());
    }

    @Test
    public void list_4() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser
                .parse("[ax , [ 2  , b ], 4 ,5]");
        Assert.assertEquals("[ax,[2,b],4,5]", r.toString());
    }

    @Test
    public void sublist_1() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[a,2,b,4]");
        final OtpErlangList s = (OtpErlangList) termParser.parse("[2,b,4]");
        final OtpErlangObject ss = r.getTail();
        Assert.assertEquals(s, ss);
    }

    @Test
    public void sublist_2() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3|4]");
        final OtpErlangList s = (OtpErlangList) termParser.parse("[2,3|4]");
        final OtpErlangObject ss = r.getTail();
        Assert.assertEquals(s, ss);
    }

    @Test
    public void sublist_4() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3,4]");
        final OtpErlangList s = (OtpErlangList) termParser.parse("[3,4]");
        final OtpErlangObject ss = r.getNthTail(2);
        Assert.assertEquals(s, ss);
    }

    @Test
    public void sublist_3() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3|4]");
        final OtpErlangList s = (OtpErlangList) termParser.parse("[3|4]");
        final OtpErlangObject ss = r.getNthTail(2);
        Assert.assertEquals(s, ss);
    }

    @Test
    public void sublist_4a() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3,4]");
        final OtpErlangObject ss = r.getNthTail(0);
        Assert.assertEquals(r, ss);
    }

    @Test
    public void sublist_4b() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3,4]");
        final OtpErlangObject ss = r.getNthTail(4);
        Assert.assertEquals(new OtpErlangList(), ss);
    }

    @Test
    public void sublist_4c() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3,4]");
        final OtpErlangObject ss = r.getNthTail(5);
        Assert.assertEquals(null, ss);
    }

    @Test
    public void sublist_4d() throws TermParserException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3|4]");
        final OtpErlangObject s = termParser.parse("4");
        final OtpErlangObject ss = r.getNthTail(3);
        Assert.assertEquals(s, ss);
    }

    @Test
    public void sublist_5() throws TermParserException, IOException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3,4]");
        final OtpErlangObject ss = r.getNthTail(2);
        final OtpOutputStream out = new OtpOutputStream();
        ss.encode(out);
        final byte[] contents1 = out.toByteArray();
        out.reset();
        final OtpErlangList s = (OtpErlangList) termParser.parse("[3,4]");
        s.encode(out);
        final byte[] contents2 = out.toByteArray();
        out.close();

        Assert.assertEquals(contents2.length, contents1.length);
        for (int i = 0; i < contents1.length; i++) {
            Assert.assertEquals(contents2[i], contents1[i]);
        }
    }

    @Test
    public void sublist_6() throws TermParserException, IOException {
        final OtpErlangList r = (OtpErlangList) termParser.parse("[1,2,3|4]");
        final OtpErlangObject ss = r.getNthTail(2);
        final OtpOutputStream out = new OtpOutputStream();
        ss.encode(out);
        final byte[] contents1 = out.toByteArray();
        out.reset();
        final OtpErlangList s = (OtpErlangList) termParser.parse("[3|4]");
        s.encode(out);
        final byte[] contents2 = out.toByteArray();
        out.close();

        Assert.assertEquals(contents2.length, contents1.length);
        for (int i = 0; i < contents1.length; i++) {
            Assert.assertEquals(contents2[i], contents1[i]);
        }
    }

    @Test
    public void map_1() throws TermParserException {
        final OtpErlangMap r = (OtpErlangMap) termParser.parse("#{}");
        Assert.assertEquals("#{}", r.toString());
    }

    @Test
    public void map_2() throws TermParserException {
        @SuppressWarnings("unused")
        final OtpErlangMap r = (OtpErlangMap) termParser.parse("#{a=>2,\"b\"=>[4]}");
    }

    @Test(expected = TermParserException.class)
    public void map_3() throws TermParserException {
        @SuppressWarnings("unused")
        final OtpErlangMap r = (OtpErlangMap) termParser.parse("#{a=>2,b}");
    }

}
TOP

Related Classes of org.erlide.util.TermParserTest

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.