1.1 --- a/java/sql-dk/test/info/globalcode/sql/dk/CLIParserTest.java Mon Mar 04 17:06:42 2019 +0100
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,195 +0,0 @@
1.4 -/**
1.5 - * SQL-DK
1.6 - * Copyright © 2013 František Kučera (frantovo.cz)
1.7 - *
1.8 - * This program is free software: you can redistribute it and/or modify
1.9 - * it under the terms of the GNU General Public License as published by
1.10 - * the Free Software Foundation, either version 3 of the License, or
1.11 - * (at your option) any later version.
1.12 - *
1.13 - * This program is distributed in the hope that it will be useful,
1.14 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.15 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.16 - * GNU General Public License for more details.
1.17 - *
1.18 - * You should have received a copy of the GNU General Public License
1.19 - * along with this program. If not, see <http://www.gnu.org/licenses/>.
1.20 - */
1.21 -package info.globalcode.sql.dk;
1.22 -
1.23 -import info.globalcode.sql.dk.CLIParser.Tokens;
1.24 -import static info.globalcode.sql.dk.CLIParser.TYPE_NAME_SEPARATOR;
1.25 -import info.globalcode.sql.dk.InfoLister.InfoType;
1.26 -import java.io.ByteArrayInputStream;
1.27 -import java.util.Collection;
1.28 -import static org.testng.Assert.*;
1.29 -import org.testng.annotations.BeforeMethod;
1.30 -import org.testng.annotations.Test;
1.31 -
1.32 -/**
1.33 - *
1.34 - * @author Ing. František Kučera (frantovo.cz)
1.35 - */
1.36 -public class CLIParserTest {
1.37 -
1.38 - private static final String DATABASE_NAME_1 = "some database 1";
1.39 - private static final String SQL_1 = "SELECT * FROM table1";
1.40 - private static final String DATA_1 = "aaa";
1.41 - private static final String DATA_2 = "bbb";
1.42 - private static final String DATA_3 = "ccc";
1.43 - private static final String NAME_1 = "param1";
1.44 - private static final String NAME_2 = "param2";
1.45 - private static final String NAME_3 = "param3";
1.46 - private CLIParser parser;
1.47 -
1.48 - @BeforeMethod
1.49 - public void setUpMethod() throws Exception {
1.50 - parser = new CLIParser();
1.51 - }
1.52 -
1.53 - private CLIOptions parseOptions(String[] args) throws CLIParserException {
1.54 - return parser.parseOptions(args, new ByteArrayInputStream("".getBytes()));
1.55 - }
1.56 -
1.57 - @Test
1.58 - public void testParseOptions_QueryNow_NoParams() throws InvalidOptionsException, CLIParserException {
1.59 - String[] args = new String[]{
1.60 - Tokens.DB, DATABASE_NAME_1,
1.61 - Tokens.SQL, SQL_1};
1.62 - CLIOptions options = parseOptions(args);
1.63 - options.validate();
1.64 -
1.65 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.66 - assertEquals(options.getSql(), SQL_1);
1.67 - assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
1.68 - assertTrue(options.getNamedParameters().isEmpty(), "Named parameters should be empty.");
1.69 - assertTrue(options.getNumberedParameters().isEmpty(), "Numbered parameters should be empty.");
1.70 - }
1.71 -
1.72 - @Test
1.73 - public void testParseOptions_QueryNow_Numbered() throws InvalidOptionsException, CLIParserException {
1.74 - String[] args = new String[]{
1.75 - Tokens.DB, DATABASE_NAME_1,
1.76 - Tokens.SQL, SQL_1,
1.77 - Tokens.DATA, DATA_1, DATA_2, DATA_3};
1.78 - CLIOptions options = parseOptions(args);
1.79 - options.validate();
1.80 -
1.81 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.82 - assertEquals(options.getSql(), SQL_1);
1.83 - assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
1.84 - assertEquals(options.getNumberedParameters().size(), 3);
1.85 - assertEquals(options.getNumberedParameters().get(0).getValue(), DATA_1);
1.86 - assertEquals(options.getNumberedParameters().get(1).getValue(), DATA_2);
1.87 - assertEquals(options.getNumberedParameters().get(2).getValue(), DATA_3);
1.88 - assertEquals(options.getNumberedParameters().get(0).getType(), Parameter.DEFAULT_TYPE);
1.89 - assertEquals(options.getNumberedParameters().get(1).getType(), Parameter.DEFAULT_TYPE);
1.90 - assertEquals(options.getNumberedParameters().get(2).getType(), Parameter.DEFAULT_TYPE);
1.91 - }
1.92 -
1.93 - @Test
1.94 - public void testParseOptions_QueryNow_Numbered_withTypes() throws InvalidOptionsException, CLIParserException {
1.95 - String[] args = new String[]{
1.96 - Tokens.DB, DATABASE_NAME_1,
1.97 - Tokens.SQL, SQL_1,
1.98 - Tokens.TYPES, " INTEGER,VARCHAR, BOOLEAN",
1.99 - Tokens.DATA, DATA_1, DATA_2, DATA_3};
1.100 - CLIOptions options = parseOptions(args);
1.101 - options.validate();
1.102 -
1.103 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.104 - assertEquals(options.getSql(), SQL_1);
1.105 - assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
1.106 - assertEquals(options.getNumberedParameters().size(), 3);
1.107 - assertEquals(options.getNumberedParameters().get(0).getValue(), DATA_1);
1.108 - assertEquals(options.getNumberedParameters().get(1).getValue(), DATA_2);
1.109 - assertEquals(options.getNumberedParameters().get(2).getValue(), DATA_3);
1.110 - assertEquals(options.getNumberedParameters().get(0).getType(), SQLType.INTEGER);
1.111 - assertEquals(options.getNumberedParameters().get(1).getType(), SQLType.VARCHAR);
1.112 - assertEquals(options.getNumberedParameters().get(2).getType(), SQLType.BOOLEAN);
1.113 - }
1.114 -
1.115 - @Test
1.116 - public void testParseOptions_QueryNow_Named() throws InvalidOptionsException, CLIParserException {
1.117 - String[] args = new String[]{
1.118 - Tokens.DB, DATABASE_NAME_1,
1.119 - Tokens.SQL, SQL_1,
1.120 - Tokens.DATA_NAMED, NAME_1, DATA_1, NAME_2, DATA_2, NAME_3, DATA_3};
1.121 - CLIOptions options = parseOptions(args);
1.122 - options.validate();
1.123 -
1.124 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.125 - assertEquals(options.getSql(), SQL_1);
1.126 - assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
1.127 - assertEquals(options.getNamedParameters().size(), 3);
1.128 - assertNamedParameter(options.getNamedParameters(), NAME_1, DATA_1, Parameter.DEFAULT_TYPE);
1.129 - assertNamedParameter(options.getNamedParameters(), NAME_2, DATA_2, Parameter.DEFAULT_TYPE);
1.130 - assertNamedParameter(options.getNamedParameters(), NAME_3, DATA_3, Parameter.DEFAULT_TYPE);
1.131 - }
1.132 -
1.133 - @Test
1.134 - public void testParseOptions_QueryNow_Named_withTypes() throws InvalidOptionsException, CLIParserException {
1.135 - String[] args = new String[]{
1.136 - Tokens.DB, DATABASE_NAME_1,
1.137 - Tokens.SQL, SQL_1,
1.138 - Tokens.NAME_PREFIX, "$",
1.139 - Tokens.TYPES, " " + NAME_1 + TYPE_NAME_SEPARATOR + "INTEGER" + "," + NAME_3 + TYPE_NAME_SEPARATOR + "BOOLEAN",
1.140 - Tokens.DATA_NAMED, NAME_1, DATA_1, NAME_2, DATA_2, NAME_3, DATA_3};
1.141 - CLIOptions options = parseOptions(args);
1.142 - options.validate();
1.143 -
1.144 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.145 - assertEquals(options.getSql(), SQL_1);
1.146 - assertEquals(options.getMode(), CLIOptions.MODE.QUERY_NOW);
1.147 - assertEquals(options.getNamedParameters().size(), 3);
1.148 - assertNamedParameter(options.getNamedParameters(), NAME_1, DATA_1, SQLType.INTEGER);
1.149 - assertNamedParameter(options.getNamedParameters(), NAME_2, DATA_2, Parameter.DEFAULT_TYPE);
1.150 - assertNamedParameter(options.getNamedParameters(), NAME_3, DATA_3, SQLType.BOOLEAN);
1.151 - }
1.152 -
1.153 - private void assertNamedParameter(Collection<NamedParameter> params, String name, Object value, SQLType type) {
1.154 - for (NamedParameter p : params) {
1.155 - if (name.equals(p.getName())) {
1.156 - assertEquals(p.getValue(), value, "value does not match – name: " + name);
1.157 - assertEquals(p.getType(), type, "value does not match – name: " + name);
1.158 - return;
1.159 - }
1.160 - }
1.161 - fail("Named parameter not found: " + name);
1.162 - }
1.163 -
1.164 - @Test
1.165 - public void testParseOptions_PrepareBatch() throws InvalidOptionsException, CLIParserException {
1.166 - String[] args = new String[]{
1.167 - Tokens.BATCH,
1.168 - Tokens.SQL, SQL_1};
1.169 - CLIOptions options = parseOptions(args);
1.170 - options.validate();
1.171 -
1.172 - assertEquals(options.getSql(), SQL_1);
1.173 - assertEquals(options.getMode(), CLIOptions.MODE.PREPARE_BATCH);
1.174 - }
1.175 -
1.176 - @Test
1.177 - public void testParseOptions_ExecuteBatch() throws InvalidOptionsException, CLIParserException {
1.178 - String[] args = new String[]{
1.179 - Tokens.BATCH,
1.180 - Tokens.DB, DATABASE_NAME_1};
1.181 - CLIOptions options = parseOptions(args);
1.182 - options.validate();
1.183 -
1.184 - assertEquals(options.getDatabaseName(), DATABASE_NAME_1);
1.185 - assertEquals(options.getMode(), CLIOptions.MODE.EXECUTE_BATCH);
1.186 - }
1.187 -
1.188 - @Test
1.189 - public void testParseOptions_ShowInfo_Help() throws InvalidOptionsException, CLIParserException {
1.190 - String[] args = new String[]{Tokens.INFO_HELP};
1.191 - CLIOptions options = parseOptions(args);
1.192 - options.validate();
1.193 -
1.194 - assertEquals(options.getMode(), CLIOptions.MODE.JUST_SHOW_INFO);
1.195 - assertEquals(options.getShowInfo().size(), 1);
1.196 - assertTrue(options.getShowInfo().contains(InfoType.HELP));
1.197 - }
1.198 -}
1.199 \ No newline at end of file