package org.sql2o.tools;
import junit.framework.TestCase;
import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy;
import org.sql2o.quirks.parameterparsing.impl.DefaultSqlParameterParsingStrategy;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.MatcherAssert.*;
/**
* User: dimzon
* Date: 4/9/14
* Time: 4:44 AM
*/
public class NamedParameterTest extends TestCase {
private SqlParameterParsingStrategy sqlParameterParsingStrategy = new DefaultSqlParameterParsingStrategy();
/*
A type cast specifies a conversion from one data type to another.
PostgreSQL accepts two equivalent syntaxes for type casts:
CAST ( expression AS type )
expression::type
*/
public void testPostgresSqlCastSyntax() throws Exception {
Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
String preparedQuery = sqlParameterParsingStrategy.parseSql("select :foo", map);
assertEquals("select ?", preparedQuery);
assertThat(map.size(), is(equalTo(1)));
assertThat(map.get("foo").size(), is(equalTo(1)));
assertThat(map.get("foo").get(0), is(equalTo(1)));
map.clear();
preparedQuery = sqlParameterParsingStrategy.parseSql("select (:foo)::uuid", map);
assertEquals("select (?)::uuid", preparedQuery);
}
public void testStringConstant() throws Exception {
Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
String preparedQuery = sqlParameterParsingStrategy.parseSql("select ':foo'", map);
assertEquals("select ':foo'", preparedQuery);
}
}