Skip to content

Commit

Permalink
Merge pull request #196 from stevenschlansker/issue-75-comment-quotes
Browse files Browse the repository at this point in the history
Issue #75 comment quotes
  • Loading branch information
stevenschlansker committed Oct 22, 2015
2 parents 61a50d9 + 8f2250f commit 8468a78
Showing 1 changed file with 23 additions and 30 deletions.
53 changes: 23 additions & 30 deletions src/test/java/org/skife/jdbi/v2/TestColonStatementRewriter.java
Expand Up @@ -18,16 +18,12 @@
import org.junit.Test;
import org.skife.jdbi.v2.exceptions.UnableToCreateStatementException;
import org.skife.jdbi.v2.tweak.RewrittenStatement;
import org.skife.jdbi.v2.tweak.StatementRewriter;

import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;

import static org.junit.Assert.assertEquals;

/**
*
*/
public class TestColonStatementRewriter
{
private ColonPrefixNamedParamStatementRewriter rw;
Expand All @@ -38,72 +34,67 @@ public void setUp() throws Exception
this.rw = new ColonPrefixNamedParamStatementRewriter();
}

private RewrittenStatement rewrite(String sql)
{
return rw.rewrite(sql,
new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
}

@Test
public void testNewlinesOkay() throws Exception
{
RewrittenStatement rws = rw.rewrite("select * from something\n where id = :id", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite("select * from something\n where id = :id");
assertEquals("select * from something\n where id = ?", rws.getSql());
}

@Test
public void testOddCharacters() throws Exception
{
RewrittenStatement rws = rw.rewrite("~* :boo ':nope' _%&^& *@ :id", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite("~* :boo ':nope' _%&^& *@ :id");
assertEquals("~* ? ':nope' _%&^& *@ ?", rws.getSql());
}

@Test
public void testNumbers() throws Exception
{
RewrittenStatement rws = rw.rewrite(":bo0 ':nope' _%&^& *@ :id", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite(":bo0 ':nope' _%&^& *@ :id");
assertEquals("? ':nope' _%&^& *@ ?", rws.getSql());
}

@Test
public void testDollarSignOkay() throws Exception
{
RewrittenStatement rws = rw.rewrite("select * from v$session", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite("select * from v$session");
assertEquals("select * from v$session", rws.getSql());
}

@Test
public void testHashInColumnNameOkay() throws Exception
{
RewrittenStatement rws = rw.rewrite("select column# from thetable where id = :id", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite("select column# from thetable where id = :id");
assertEquals("select column# from thetable where id = ?", rws.getSql());
}

@Test
public void testBacktickOkay() throws Exception
{
RewrittenStatement rws = rw.rewrite("select * from `v$session", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));
RewrittenStatement rws = rewrite("select * from `v$session");
assertEquals("select * from `v$session", rws.getSql());
}

@Test
@Test(expected = UnableToCreateStatementException.class)
public void testBailsOutOnInvalidInput() throws Exception
{
try {
rw.rewrite("select * from something\n where id = :\u0087\u008e\u0092\u0097\u009c", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), new MappingRegistry()));

Assert.fail("Expected 'UnableToCreateStatementException' but got none");
}
catch (UnableToCreateStatementException e) {
}
rewrite("select * from something\n where id = :\u0087\u008e\u0092\u0097\u009c");
Assert.fail("Expected 'UnableToCreateStatementException' but got none");
}

@Test
public void testCachesRewrittenStatements() throws Exception
{
final AtomicInteger ctr = new AtomicInteger(0);
ColonPrefixNamedParamStatementRewriter rw = new ColonPrefixNamedParamStatementRewriter()
rw = new ColonPrefixNamedParamStatementRewriter()
{
@Override
ParsedStatement parseString(final String sql) throws IllegalArgumentException
Expand All @@ -113,15 +104,17 @@ ParsedStatement parseString(final String sql) throws IllegalArgumentException
}
};

rw.rewrite("insert into something (id, name) values (:id, :name)", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), null));
rewrite("insert into something (id, name) values (:id, :name)");

assertEquals(1, ctr.get());

rw.rewrite("insert into something (id, name) values (:id, :name)", new Binding(),
new ConcreteStatementContext(new HashMap<String, Object>(), null));
rewrite("insert into something (id, name) values (:id, :name)");

assertEquals(1, ctr.get());
}

public void testCommentQuote() throws Exception
{
rewrite("select 1 /* ' \" */");
}
}

0 comments on commit 8468a78

Please sign in to comment.