java/sql-dk/test/info/globalcode/sql/dk/CLIParserTest.java
branchv_0
changeset 12 2dcb67d90fd2
parent 11 2712ded000ef
child 13 599aad77e986
equal deleted inserted replaced
11:2712ded000ef 12:2dcb67d90fd2
     1 package info.globalcode.sql.dk;
     1 package info.globalcode.sql.dk;
     2 
     2 
     3 import info.globalcode.sql.dk.CLIParser.Tokens;
     3 import info.globalcode.sql.dk.CLIParser.Tokens;
       
     4 import static info.globalcode.sql.dk.CLIParser.TYPE_NAME_SEPARATOR;
     4 import java.sql.Types;
     5 import java.sql.Types;
       
     6 import java.util.Collection;
     5 import static org.testng.Assert.*;
     7 import static org.testng.Assert.*;
     6 import org.testng.annotations.BeforeMethod;
     8 import org.testng.annotations.BeforeMethod;
     7 import org.testng.annotations.Test;
     9 import org.testng.annotations.Test;
     8 
    10 
     9 /**
    11 /**
    15 	private static final String DATABASE_NAME_1 = "some database 1";
    17 	private static final String DATABASE_NAME_1 = "some database 1";
    16 	private static final String SQL_1 = "SELECT * FROM table1";
    18 	private static final String SQL_1 = "SELECT * FROM table1";
    17 	private static final String DATA_1 = "aaa";
    19 	private static final String DATA_1 = "aaa";
    18 	private static final String DATA_2 = "bbb";
    20 	private static final String DATA_2 = "bbb";
    19 	private static final String DATA_3 = "ccc";
    21 	private static final String DATA_3 = "ccc";
       
    22 	private static final String NAME_1 = "param1";
       
    23 	private static final String NAME_2 = "param2";
       
    24 	private static final String NAME_3 = "param3";
    20 	private CLIParser parser;
    25 	private CLIParser parser;
    21 
    26 
    22 	@BeforeMethod
    27 	@BeforeMethod
    23 	public void setUpMethod() throws Exception {
    28 	public void setUpMethod() throws Exception {
    24 		parser = new CLIParser();
    29 		parser = new CLIParser();
       
    30 	}
       
    31 
       
    32 	@Test
       
    33 	public void testParseOptions_QueryNow_NoParams() throws InvalidOptionsException, CLIParserException {
       
    34 		String[] args = new String[]{
       
    35 			Tokens.DB, DATABASE_NAME_1,
       
    36 			Tokens.SQL, SQL_1};
       
    37 		CLIOptions options = parser.parseOptions(args);
       
    38 		options.validate();
       
    39 
       
    40 		assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
       
    41 		assertEquals(options.getSql(), SQL_1);
       
    42 		assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
       
    43 		assertTrue(options.getNamedParameters().isEmpty(), "Named parameters should be empty.");
       
    44 		assertTrue(options.getNumberedParameters().isEmpty(), "Numbered parameters should be empty.");
    25 	}
    45 	}
    26 
    46 
    27 	@Test
    47 	@Test
    28 	public void testParseOptions_QueryNow_Numbered() throws InvalidOptionsException, CLIParserException {
    48 	public void testParseOptions_QueryNow_Numbered() throws InvalidOptionsException, CLIParserException {
    29 		String[] args = new String[]{
    49 		String[] args = new String[]{
    69 
    89 
    70 	@Test
    90 	@Test
    71 	public void testParseOptions_QueryNow_Named() throws InvalidOptionsException, CLIParserException {
    91 	public void testParseOptions_QueryNow_Named() throws InvalidOptionsException, CLIParserException {
    72 		String[] args = new String[]{
    92 		String[] args = new String[]{
    73 			Tokens.DB, DATABASE_NAME_1,
    93 			Tokens.DB, DATABASE_NAME_1,
    74 			Tokens.SQL, SQL_1};
    94 			Tokens.SQL, SQL_1,
       
    95 			Tokens.DATA, TYPE_NAME_SEPARATOR + NAME_1, DATA_1, TYPE_NAME_SEPARATOR + NAME_2, DATA_2, TYPE_NAME_SEPARATOR + NAME_3, DATA_3};
    75 		CLIOptions options = parser.parseOptions(args);
    96 		CLIOptions options = parser.parseOptions(args);
    76 		options.validate();
    97 		options.validate();
    77 
    98 
    78 		assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
    99 		assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
    79 		assertEquals(options.getSql(), SQL_1);
   100 		assertEquals(options.getSql(), SQL_1);
    80 		assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
   101 		assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
       
   102 		assertEquals(options.getNamedParameters().size(), 3);
       
   103 		assertNamedParameter(options.getNamedParameters(), NAME_1, DATA_1, Parameter.DEFAULT_TYPE);
       
   104 		assertNamedParameter(options.getNamedParameters(), NAME_2, DATA_2, Parameter.DEFAULT_TYPE);
       
   105 		assertNamedParameter(options.getNamedParameters(), NAME_3, DATA_3, Parameter.DEFAULT_TYPE);
       
   106 	}
       
   107 
       
   108 	@Test
       
   109 	public void testParseOptions_QueryNow_Named_withTypes() throws InvalidOptionsException, CLIParserException {
       
   110 		String[] args = new String[]{
       
   111 			Tokens.DB, DATABASE_NAME_1,
       
   112 			Tokens.SQL, SQL_1,
       
   113 			Tokens.NAME_PREFIX, "$",
       
   114 			Tokens.TYPES, " " + NAME_1 + TYPE_NAME_SEPARATOR + "int" + "," + NAME_2 + TYPE_NAME_SEPARATOR + "string" + "," + NAME_3 + TYPE_NAME_SEPARATOR + "boolean",
       
   115 			Tokens.DATA, "$" + NAME_1, DATA_1, "$" + NAME_2, DATA_2, "$" + NAME_3, DATA_3};
       
   116 		CLIOptions options = parser.parseOptions(args);
       
   117 		options.validate();
       
   118 
       
   119 		assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
       
   120 		assertEquals(options.getSql(), SQL_1);
       
   121 		assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
       
   122 		assertEquals(options.getNamedParameters().size(), 3);
       
   123 		assertNamedParameter(options.getNamedParameters(), NAME_1, DATA_1, Types.INTEGER);
       
   124 		assertNamedParameter(options.getNamedParameters(), NAME_2, DATA_2, Types.VARCHAR);
       
   125 		assertNamedParameter(options.getNamedParameters(), NAME_3, DATA_3, Types.BOOLEAN);
       
   126 	}
       
   127 
       
   128 	private void assertNamedParameter(Collection<NamedParameter> params, String name, Object value, int type) {
       
   129 		for (NamedParameter p : params) {
       
   130 			if (name.equals(p.getName())) {
       
   131 				assertEquals(p.getValue(), value, "value does not match – name: " + name);
       
   132 				assertEquals(p.getType(), type, "value does not match – name: " + name);
       
   133 				return;
       
   134 			}
       
   135 		}
       
   136 		fail("Named parameter not found: " + name);
    81 	}
   137 	}
    82 
   138 
    83 	@Test
   139 	@Test
    84 	public void testParseOptions_PrepareBatch() throws InvalidOptionsException, CLIParserException {
   140 	public void testParseOptions_PrepareBatch() throws InvalidOptionsException, CLIParserException {
    85 		String[] args = new String[]{
   141 		String[] args = new String[]{