Package org.moxie.tests

Source Code of org.moxie.tests.TestMaxmlParser

package org.moxie.tests;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;

import org.junit.Assert;
import org.junit.Test;
import org.moxie.maxml.Maxml;
import org.moxie.maxml.MaxmlException;
import org.moxie.maxml.MaxmlMap;
import org.moxie.maxml.MaxmlParser;
import org.moxie.utils.FileUtils;


/**
* Unit tests for the Maxml parser.
*
* @author James Moger
*
*/
public class TestMaxmlParser extends Assert {
  String config = "name: Moxie\ndescription: Project Build Toolkit\nversion: 0.1.0\nurl: http://github.com/gitblit/moxie\nartifactId: moxie\nvendor: James Moger\nconfigureEclipseClasspath: true\nsourceDirectories: [core, maxjar, maxdoc]\nmap: { \na1: 12\na2: 3.14f\na3 : {\nb1:100l\nb2 : {\nc1:6.023d\nc2:c2value\n}\nb3:b3value\n}\na4: a4value\n}\noutputFolder: bin\nmavenUrls: [mavencentral]\ndependencyFolder: ext\ndependencies:\n - [ant, 1.7.0, org/apache/ant]\n - [markdownpapers-core, 1.2.5, org/tautua/markdownpapers]\nsimpledate:2003-07-04\ncanonical:2001-07-04T16:08:56.235Z\niso8601:2002-07-04T12:08:56.235-0400\ndevelopers :\n- {\n  id: james\n  name : James Moger\n  url : https://plus.google.com/u/0/116428776452027956920\n  roles : developer\n  }\n- {\n  id: james\n  name : James Moger\n  url : https://plus.google.com/u/0/116428776452027956920\n  roles : developer\n  }";

  String blockTest = "name: Moxie\ndescription: \"\"\"\nMoxie\nis a\nJava Project Build Toolkit\n\"\"\"\nversion: 0.1.0";

  String blockTest2 = "name: Moxie\ndescription:\n\"\"\nMoxie\n is a\n  Java Project Build Toolkit\"\"\nversion: 0.1.0";

  String blockTest3 = "name: Moxie\ndescription: \"\"\n             Moxie\n              is a\n               Java Project Build Toolkit\n             \"\"\nversion: 0.1.0";

  String inlineMap = "{ id: myproxy, active: true, protocol: http, host:proxy.somewhere.com, port:8080, username: proxyuser, password: somepassword }";
 
  String inlineMap2 = "{ id: central, url: \"http://repo1.apache.org/maven\", url2: \"http://repo1.apache.org/maven\", affinity: [ 'org.moxie' ] }";
 
  String maplist = "developers :\n- {\n  id: james\n  name : James Moger\n  url : https://plus.google.com/u/0/116428776452027956920\n  roles : developer\n  }";
 
  String references = "colors1:\n- blue\n- purple\n- green\n\ncolors2:\n- red\n-yellow\n- orange\n\nall:\n+ &colors1\n+ &colors2\n- magenta\nmycolor: &colors2[1]";

  String references2 = "1.2.3:\n- blue\n- purple\n- green\n\n4.5.6:\n- red\n-yellow\n- orange\n\nall:\n+ &'1.2.3'\n+ &'4.5.6'\n- magenta\nmycolor: &'4.5.6'[1]";

  String references3 = "project.version.r1: {\n version: 1\n  }\nproject.version.r2: {\n  version: 2\n  }\nversions: &'project.version.r'[1..2]";

  @SuppressWarnings("rawtypes")
  @Test
  public void testValueParsing() throws Exception {
    MaxmlParser parser = new MaxmlParser();
    // strings
    assertEquals("string", parser.parseValue("string"));
    assertEquals("string", parser.parseValue("'string'"));
    assertEquals("string", parser.parseValue("\"string\""));
    assertEquals("Moxie\nis a\nJava Project Build Toolkit\n", Maxml.parse(blockTest).get("description"));
    assertEquals("Moxie\n is a\n  Java Project Build Toolkit", Maxml.parse(blockTest2).get("description"));
    assertEquals("Moxie\n is a\n  Java Project Build Toolkit\n", Maxml.parse(blockTest3).get("description"));
    assertEquals("[blue, purple, green, red, yellow, orange, magenta]", Maxml.parse(references).get("all").toString());
    assertEquals("yellow", Maxml.parse(references).get("mycolor").toString());
    assertEquals("[blue, purple, green, red, yellow, orange, magenta]", Maxml.parse(references2).get("all").toString());
    assertEquals("yellow", Maxml.parse(references2).get("mycolor").toString());
    assertEquals("[{version=1}, {version=2}]", Maxml.parse(references3).get("versions").toString());

    // numerics
    assertEquals(101, parser.parseValue("101"));
    assertEquals(8, parser.parseValue("0x8"));
    assertEquals(8, parser.parseValue("010"));
    assertEquals(3405691582L, parser.parseValue("0xcafebabe"));
    assertEquals(3405691582L, parser.parseValue("#cafebabe"));
    assertEquals(1101, parser.parseValue("1,101"));
    assertEquals(1101202, parser.parseValue("1,101,202"));
    assertEquals(4000000000L, parser.parseValue("4000000000"));
    assertEquals(4000000000L, parser.parseValue("4,000,000,000"));
    assertEquals(2.3f, parser.parseValue("2.3"));
    assertEquals(6.0E23f, parser.parseValue("6.0E+23"));
    assertEquals(6.0E56d, parser.parseValue("6.0E+56"));

    // booleans
    assertEquals(true, parser.parseValue("true"));
    assertEquals(true, parser.parseValue("yes"));
    assertEquals(true, parser.parseValue("on"));

    assertEquals(false, parser.parseValue("false"));
    assertEquals(false, parser.parseValue("no"));
    assertEquals(false, parser.parseValue("off"));

    // null
    assertNull(parser.parseValue("~"));

    // inline lists
    assertEquals("[a, b, c]", parser.parseValue("[a, b, c]").toString());
    assertEquals("[a, b, c]", parser.parseValue("['a', 'b', 'c']")
        .toString());
    assertEquals("[a, b, c]", parser.parseValue("[\"a\", \"b\", \"c\"]")
        .toString());
    assertEquals(3, ((List) parser.parseValue("[a, b, c]")).size());

    assertEquals(3,
        ((List) parser.parseValue("[a, \"b, or beta\", c]")).size());
   
    // inline map
    assertEquals(7, ((MaxmlMap) parser.parseValue(inlineMap)).size());
    assertEquals(4, ((MaxmlMap) parser.parseValue(inlineMap2)).size());   
    assertEquals("[org.moxie]", ((MaxmlMap) parser.parseValue(inlineMap2)).getList("affinity", null).toString());
   
    // dates
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    assertEquals("2003-07-04",
        df.format(((Date) parser.parseValue("2003-07-04"))));

    df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    assertEquals("2003-07-04T15:15:15Z",
        df.format(((Date) parser.parseValue("2003-07-04T15:15:15Z"))));

    df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    df.setTimeZone(TimeZone.getTimeZone("America/New_York"));
    assertEquals("2003-07-04T15:15:15-0400", df.format(((Date) parser
        .parseValue("2003-07-04T15:15:15-0400"))));
  }

  @SuppressWarnings("rawtypes")
  @Test
  public void testParse() throws MaxmlException {
    Map<String, Object> map = Maxml.parse(config);
    assertTrue(map.size() > 0);
    assertTrue(map.containsKey("name"));
    assertEquals("Moxie", map.get("name"));
    assertEquals(3, ((List) map.get("sourcedirectories")).size());
    assertEquals(2, ((List) map.get("dependencies")).size());
    assertEquals(4, ((Map) map.get("map")).size());
  }
 
  @SuppressWarnings("rawtypes")
  @Test
  public void testParseFile() throws MaxmlException {
    String content = FileUtils.readContent(new File("build.moxie"), "\n");
    Map<String, Object> map = Maxml.parse(content);
    assertTrue(map.size() > 0);
    assertTrue(map.containsKey("name"));
    assertEquals("Moxie-Maxml", map.get("name"));
    assertEquals(2, ((List) map.get("sourcedirectories")).size());
    assertEquals(2, ((List) map.get("dependencies")).size());
  }

  @Test
  public void testInstantiation() throws MaxmlException {
    TestObject test = Maxml.parse(config, TestObject.class);
    assertNotNull(test);
    assertEquals("Moxie", test.name);
    assertEquals(3, test.sourceDirectories.size());
    assertEquals(2, test.dependencies.size());
    assertEquals(4, test.map.size());
    assertEquals(2, test.developers.size());
  }

  public static class TestObject {

    public String name;
    public String description;
    public String version;
    public String url;
    public String artifactId;
    public String vendor;
    public boolean configureEclipseClasspath;
    public List<String> sourceDirectories;
    public String outputFolder;
    public Map<String, Object> map;
    public List<String> mavenUrls;
    public String dependencyFolder;
    public List<List<String>> dependencies;
    public Date canonical;
    public Date iso8601;
    public Date simpleDate;
    public List<Map<String, Object>> developers;
  }
}
TOP

Related Classes of org.moxie.tests.TestMaxmlParser

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.