You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2008/08/08 01:21:58 UTC
svn commit: r683745 [21/22] - in /ibatis/trunk/java/ibatis-3: ./
ibatis-3-compat/ ibatis-3-compat/src/ ibatis-3-compat/src/main/
ibatis-3-compat/src/main/java/ ibatis-3-compat/src/main/java/com/
ibatis-3-compat/src/main/java/com/ibatis/ ibatis-3-compat...
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,597 @@
+package org.apache.ibatis.executor;
+
+import domain.blog.*;
+import org.apache.ibatis.cache.Cache;
+import org.apache.ibatis.cache.decorators.*;
+import org.apache.ibatis.cache.impl.PerpetualCache;
+import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.mapping.*;
+import org.apache.ibatis.type.*;
+
+import java.util.*;
+
+public class ExecutorTestHelper {
+
+ public static final Cache authorCache;
+
+ static {
+ PerpetualCache cache = new PerpetualCache();
+ cache.setId("author_cache");
+ authorCache =
+ new SynchronizedCache(
+ new SerializedCache(
+ new LoggingCache(
+ new ScheduledCache(
+ cache, 5000))));
+
+ }
+
+ public static MappedStatement prepareInsertAuthorMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor", new BasicSqlSource("INSERT INTO author (id,username,password,email,bio,favourite_section) values(?,?,?,?,?,?)"))
+ .parameterMap(
+ new ParameterMap.Builder(
+ "defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ add(new ParameterMapping.Builder("username", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("password", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("email", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("bio", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).build());
+ add(new ParameterMapping.Builder("favouriteSection", registry.getTypeHandler(Section.class)).jdbcType(JdbcType.VARCHAR).build());
+ }
+ }).build())
+ .cache(authorCache).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareInsertAuthorMappedStatementWithAutoKey(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor", new BasicSqlSource("INSERT INTO author (username,password,email,bio,favourite_section) values(?,?,?,?,?)"))
+ .parameterMap(
+ new ParameterMap.Builder("defaultParameterMap", Author.class, new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("username", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("password", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("email", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("bio", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).build());
+ add(new ParameterMapping.Builder("favouriteSection", registry.getTypeHandler(Section.class)).jdbcType(JdbcType.VARCHAR).build());
+ }
+ }).build())
+ .cache(authorCache)
+ .build();
+ return ms;
+ }
+
+ public static MappedStatement prepareInsertAuthorProc(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthorProc", new BasicSqlSource("{call insertAuthor(?,?,?,?)}"))
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ add(new ParameterMapping.Builder("username", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("password", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("email", registry.getTypeHandler(String.class)).build());
+ }
+ }).build())
+ .cache(authorCache).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareUpdateAuthorMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "updateAuthor", new BasicSqlSource("UPDATE author SET username = ?, password = ?, email = ?, bio = ? WHERE id = ?"))
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("username", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("password", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("email", registry.getTypeHandler(String.class)).build());
+ add(new ParameterMapping.Builder("bio", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).build());
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build())
+ .cache(authorCache).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareDeleteAuthorMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "deleteAuthor", new BasicSqlSource("DELETE FROM author WHERE id = ?"))
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build())
+ .cache(authorCache)
+ .build();
+ return ms;
+ }
+
+ public static MappedStatement prepareSelectOneAuthorMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+
+ final ResultMap rm = new ResultMap.Builder("defaultResultMap", Author.class, new
+ ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("bio", "bio", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("favouriteSection", "favourite_section", registry.getTypeHandler(Section.class)).build());
+ }
+ }).build();
+
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor", new BasicSqlSource("SELECT * FROM author WHERE id = ?"))
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build())
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(rm);
+ }
+ })
+ .cache(authorCache).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareSelectAllAuthorsAutoMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ return new MappedStatement.Builder(config, "selectAuthorAutoMap", new BasicSqlSource("SELECT * FROM author ORDER BY id"))
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(new ResultMap.Builder("defaultResultMap", Author.class, new ArrayList() {
+ {
+ add(new ResultMapping.Builder("favouriteSection", "favourite_section", registry.getTypeHandler(Section.class)).build());
+ add(new ResultMapping.Builder(null, "not_exists", null).build());
+ }
+ }).build());
+ }
+ }).build();
+ }
+
+ public static MappedStatement prepareSelectOneAuthorMappedStatementWithConstructorResults(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor", new BasicSqlSource("SELECT * FROM author WHERE id = ?"))
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build())
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(new ResultMap.Builder("defaultResultMap", Author.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class)).javaType(int.class).flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.CONSTRUCTOR);
+ }
+ }).build());
+ add(new ResultMapping.Builder("username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("bio", "bio", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("favouriteSection", "favourite_section", registry.getTypeHandler(Section.class)).build());
+ }
+ }).build());
+ }
+ })
+ .cache(authorCache)
+ .build();
+ return ms;
+ }
+
+ public static MappedStatement prepareSelectTwoSetsOfAuthorsProc(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "selectTwoSetsOfAuthors", new BasicSqlSource("{call selectTwoSetsOfAuthors(?,?)}"))
+ .statementType(StatementType.CALLABLE)
+ .parameterMap(new ParameterMap.Builder(
+ "defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id1", registry.getTypeHandler(int.class)).build());
+ add(new ParameterMapping.Builder("id2", registry.getTypeHandler(int.class)).build());
+ }
+ }).build())
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ ResultMap map = new ResultMap.Builder("defaultResultMap", Author.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("bio", "bio", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ add(map);
+ add(map);
+ }
+ }).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareSelectAuthorViaOutParams(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthorViaOutParams", new BasicSqlSource("{call selectAuthorViaOutParams(?,?,?,?,?)}"))
+ .statementType(StatementType.CALLABLE)
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ add(new ParameterMapping.Builder("username", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).mode(ParameterMode.OUT).build());
+ add(new ParameterMapping.Builder("password", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).mode(ParameterMode.OUT).build());
+ add(new ParameterMapping.Builder("email", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).mode(ParameterMode.OUT).build());
+ add(new ParameterMapping.Builder("bio", registry.getTypeHandler(String.class)).jdbcType(JdbcType.VARCHAR).mode(ParameterMode.OUT).build());
+ }
+ }).build())
+ .resultMaps(new ArrayList<ResultMap>())
+ .cache(authorCache).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareSelectDiscriminatedProduct(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final ResultMap discriminatorResultMap = new ResultMap.Builder("petResultMap", HashMap.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("name", "name", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("descn", "descn", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ config.addResultMap(discriminatorResultMap);
+ MappedStatement ms = new MappedStatement.Builder(config, "selectProducts", new BasicSqlSource("SELECT * FROM product"))
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(new ResultMap.Builder("defaultResultMap", HashMap.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("productid", "productid", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("category", "category", registry.getTypeHandler(String.class)).build());
+ }
+ })
+ .discriminator(new Discriminator.Builder(
+ new ResultMapping.Builder("category", "category", registry.getTypeHandler(String.class)).build(),
+ new HashMap<String, String>() {
+ {
+ put("CATS", discriminatorResultMap.getId());
+ put("DOGS", discriminatorResultMap.getId());
+ put("BIRDS", discriminatorResultMap.getId());
+ put("FISH", discriminatorResultMap.getId());
+ //Reptiles left out on purpose.
+ }
+ }).build()).build());
+
+ }
+ }).build();
+ return ms;
+ }
+
+ public static MappedStatement createInsertAuthorWithIDof99MappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor", new BasicSqlSource("INSERT INTO author (id,username,password,email,bio) values(99,'someone','******','someone@apache.org',null)"))
+ .statementType(StatementType.STATEMENT)
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>()).build())
+ .cache(authorCache)
+ .build();
+ return ms;
+ }
+
+ public static MappedStatement createSelectAuthorWithIDof99MappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor", new BasicSqlSource("SELECT * FROM author WHERE id = 99"))
+ .statementType(StatementType.STATEMENT)
+ .parameterMap(new ParameterMap.Builder("defaultParameterMap", Author.class, new ArrayList<ParameterMapping>()).build())
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(new ResultMap.Builder("defaultResultMap", Author.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("bio", "bio", registry.getTypeHandler(String.class)).build());
+ }
+ }).build());
+ }
+ }).build();
+ return ms;
+ }
+
+ public static MappedStatement prepareComplexSelectBlogMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final SqlSource sqlSource = new BasicSqlSource("SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" +
+ " FROM blog b" +
+ " INNER JOIN author a ON b.author_id = a.id" +
+ " WHERE b.id = ?");
+ final ParameterMap parameterMap = new ParameterMap.Builder("defaultParameterMap", int.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build();
+ final ResultMap resultMap = new ResultMap.Builder("defaultResultMap", Blog.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("title", "title", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.id", "author_id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("author.username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.bio", "bio", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build());
+ }
+ }).build();
+
+ return new MappedStatement.Builder(config, "selectBlogById", sqlSource)
+ .parameterMap(parameterMap)
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(resultMap);
+ }
+ }).build();
+ }
+
+ public static MappedStatement prepareSelectBlogByIdAndAuthor(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final SqlSource sqlSource = new BasicSqlSource("SELECT b.id, b.author_id, b.title, a.username, a.password, a.email, a.bio" +
+ " FROM blog b" +
+ " INNER JOIN author a ON b.author_id = a.id" +
+ " WHERE b.id = ? and a.id = ?");
+ final ParameterMap parameterMap = new ParameterMap.Builder("defaultParameterMap", Map.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("blogId", registry.getTypeHandler(int.class)).build());
+ add(new ParameterMapping.Builder("authorId", registry.getTypeHandler(int.class)).build());
+ }
+ }).build();
+ final ResultMap resultMap = new ResultMap.Builder("defaultResultMap", Blog.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("title", "title", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.id", "author_id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("author.username", "username", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.password", "password", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.email", "email", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("author.bio", "bio", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("posts", "id", registry.getTypeHandler(int.class)).javaType(List.class).nestedQueryId("selectPostsForBlog").build());
+ }
+ }).build();
+
+ return new MappedStatement.Builder(config, "selectBlogByIdAndAuthor", sqlSource)
+ .parameterMap(parameterMap)
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(resultMap);
+ }
+ }).build();
+
+ }
+
+ public static MappedStatement prepareSelectPostsForBlogMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final SqlSource sqlSource = new BasicSqlSource("SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id," +
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" +
+ " FROM post p" +
+ " INNER JOIN post_tag pt ON pt.post_id = p.id" +
+ " INNER JOIN tag t ON pt.tag_id = t.id" +
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" +
+ " WHERE p.blog_id = ?");
+ final ParameterMap parameterMap = new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build();
+ final ResultMap tagResultMap = new ResultMap.Builder("tagResultMap", Tag.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "tag_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "tag_name", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ final ResultMap commentResultMap = new ResultMap.Builder("commentResultMap", Comment.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "comment_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "comment_name", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("comment", "comment", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ config.addResultMap(tagResultMap);
+ config.addResultMap(commentResultMap);
+ final ResultMap postResultMap = new ResultMap.Builder("defaultResultMap", Post.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("blog", "blog_id", registry.getTypeHandler(int.class)).javaType(Blog.class).nestedQueryId("selectBlogById").build());
+ add(new ResultMapping.Builder("createdOn", "created_on", registry.getTypeHandler(Date.class)).build());
+ add(new ResultMapping.Builder("section", "section", registry.getTypeHandler(Section.class)).build());
+ add(new ResultMapping.Builder("subject", "subject", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("body", "body", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("tags", null, null).nestedResultMapId(tagResultMap.getId()).build());
+ add(new ResultMapping.Builder("comments", null, null).nestedResultMapId(commentResultMap.getId()).build());
+ }
+ }).build();
+ return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ .parameterMap(parameterMap)
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(postResultMap);
+ }
+ }).build();
+ }
+
+ public static MappedStatement prepareSelectPostMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final SqlSource sqlSource = new BasicSqlSource("SELECT p.id, p.created_on, p.blog_id, p.section, p.subject, p.body, pt.tag_id," +
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" +
+ " FROM post p" +
+ " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" +
+ " LEFT OUTER JOIN tag t ON pt.tag_id = t.id" +
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" +
+ " WHERE p.id = ?");
+ final ParameterMap parameterMap = new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build();
+ final ResultMap tagResultMap = new ResultMap.Builder("tagResultMap", Tag.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "tag_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "tag_name", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ final ResultMap commentResultMap = new ResultMap.Builder("commentResultMap", Comment.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "comment_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "comment_name", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("comment", "comment", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ config.addResultMap(tagResultMap);
+ config.addResultMap(commentResultMap);
+ final ResultMap postResultMap = new ResultMap.Builder("", Post.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("blog", "blog_id", registry.getTypeHandler(int.class)).javaType(Blog.class).nestedQueryId("selectBlogById").build());
+ add(new ResultMapping.Builder("createdOn", "created_on", registry.getTypeHandler(Date.class)).build());
+ add(new ResultMapping.Builder("section", "section", registry.getTypeHandler(Section.class)).build());
+ add(new ResultMapping.Builder("subject", "subject", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("body", "body", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("tags", null, null).nestedResultMapId(tagResultMap.getId()).build());
+ add(new ResultMapping.Builder("comments", null, null).nestedResultMapId(commentResultMap.getId()).build());
+ }
+ }).build();
+
+
+ return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ .parameterMap(parameterMap)
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(postResultMap);
+ }
+ }).build();
+ }
+
+
+ public static MappedStatement prepareSelectPostWithBlogByAuthorMappedStatement(final Configuration config) {
+ final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
+ final SqlSource sqlSource = new BasicSqlSource("SELECT p.id, p.created_on, p.blog_id, p.author_id, p.section, p.subject, p.body, pt.tag_id," +
+ " t.name as tag_name, c.id as comment_id, c.name as comment_name, c.comment" +
+ " FROM post p" +
+ " LEFT OUTER JOIN post_tag pt ON pt.post_id = p.id" +
+ " LEFT OUTER JOIN tag t ON pt.tag_id = t.id" +
+ " LEFT OUTER JOIN comment c ON c.post_id = p.id" +
+ " WHERE p.id = ?");
+ final ParameterMap parameterMap = new ParameterMap.Builder("defaultParameterMap", Author.class,
+ new ArrayList<ParameterMapping>() {
+ {
+ add(new ParameterMapping.Builder("id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build();
+ final ResultMap tagResultMap = new ResultMap.Builder("tagResultMap", Tag.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "tag_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "tag_name", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ final ResultMap commentResultMap = new ResultMap.Builder("commentResultMap", Comment.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "comment_id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+ add(new ResultMapping.Builder("name", "comment_name", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("comment", "comment", registry.getTypeHandler(String.class)).build());
+ }
+ }).build();
+ config.addResultMap(tagResultMap);
+ config.addResultMap(commentResultMap);
+ final ResultMap postResultMap = new ResultMap.Builder("postResultMap", Post.class, new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("id", "id", registry.getTypeHandler(int.class))
+ .flags(new ArrayList<ResultFlag>() {
+ {
+ add(ResultFlag.ID);
+ }
+ }).build());
+
+ add(new ResultMapping.Builder("blog", null, null).javaType(Blog.class).nestedQueryId("selectBlogByIdAndAuthor").composites(new ArrayList<ResultMapping>() {
+ {
+ add(new ResultMapping.Builder("authorId", "author_id", registry.getTypeHandler(int.class)).build());
+ add(new ResultMapping.Builder("blogId", "blog_id", registry.getTypeHandler(int.class)).build());
+ }
+ }).build());
+ add(new ResultMapping.Builder("createdOn", "created_on", registry.getTypeHandler(Date.class)).build());
+ add(new ResultMapping.Builder("section", "section", registry.getTypeHandler(Section.class)).build());
+ add(new ResultMapping.Builder("subject", "subject", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("body", "body", registry.getTypeHandler(String.class)).build());
+ add(new ResultMapping.Builder("tags", null, null).nestedResultMapId(tagResultMap.getId()).build());
+ add(new ResultMapping.Builder("comments", null, null).nestedResultMapId(commentResultMap.getId()).build());
+ }
+ }).build();
+
+
+ return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ .parameterMap(parameterMap)
+ .resultMaps(new ArrayList<ResultMap>() {
+ {
+ add(postResultMap);
+ }
+ }).build();
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ReuseExecutorTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,16 @@
+package org.apache.ibatis.executor;
+
+import org.junit.Test;
+
+import java.sql.Connection;
+
+public class ReuseExecutorTest extends BaseExecutorTest {
+
+ @Test
+ public void dummy() {
+ }
+
+ protected Executor createExecutor(Connection connection) {
+ return new ReuseExecutor(connection);
+ }
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SerializableProxyTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SerializableProxyTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SerializableProxyTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SerializableProxyTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,46 @@
+package org.apache.ibatis.executor;
+
+import domain.blog.*;
+import org.apache.ibatis.executor.loader.*;
+import org.junit.*;
+
+import java.io.*;
+
+public class SerializableProxyTest {
+
+ @Test
+ public void shouldDemonstrateSerializableEnhancer() throws Exception {
+ Author author = new Author(999, "someone", "!@#@!#!@#", "someone@somewhere.com", "blah", Section.NEWS);
+ Object proxy = ResultObjectProxy.createProxy(Author.class, author, new ResultLoaderRegistry());
+ byte[] bytes = serialize((Serializable) proxy);
+ Object proxy2 = deserialize(bytes);
+ Assert.assertEquals(author.toString(), proxy2.toString());
+ }
+
+ private byte[] serialize(Serializable value) {
+ try {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(value);
+ oos.flush();
+ oos.close();
+ return bos.toByteArray();
+ } catch (Exception e) {
+ throw new RuntimeException("Error serializing object. Cause: " + e, e);
+ }
+ }
+
+ private Serializable deserialize(byte[] value) {
+ Serializable result;
+ try {
+ ByteArrayInputStream bis = new ByteArrayInputStream((byte[]) value);
+ ObjectInputStream ois = new ObjectInputStream(bis);
+ result = (Serializable) ois.readObject();
+ ois.close();
+ } catch (Exception e) {
+ throw new RuntimeException("Error deserializing object. Cause: " + e, e);
+ }
+ return result;
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SimpleExecutorTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SimpleExecutorTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SimpleExecutorTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/SimpleExecutorTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,16 @@
+package org.apache.ibatis.executor;
+
+import org.junit.Test;
+
+import java.sql.Connection;
+
+public class SimpleExecutorTest extends BaseExecutorTest {
+
+ @Test
+ public void dummy() {
+ }
+
+ protected Executor createExecutor(Connection connection) {
+ return new SimpleExecutor(connection);
+ }
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/io/ResourcesTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,95 @@
+package org.apache.ibatis.io;
+
+import org.apache.ibatis.BaseDataTest;
+import org.junit.*;
+
+import java.io.*;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.Properties;
+
+public class ResourcesTest extends BaseDataTest {
+
+ private static final ClassLoader CLASS_LOADER = ResourcesTest.class.getClassLoader();
+
+ @Test
+ public void shouldGetUrlForResource() throws Exception {
+ URL url = Resources.getResourceURL(JPETSTORE_PROPERTIES);
+ Assert.assertTrue(url.toString().endsWith("jpetstore/jpetstore-hsqldb.properties"));
+ }
+
+ @Test
+ public void shouldGetUrlAsProperties() throws Exception {
+ URL url = Resources.getResourceURL(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Properties props = Resources.getUrlAsProperties(url.toString());
+ Assert.assertNotNull(props.getProperty("driver"));
+ }
+
+ @Test
+ public void shouldGetResourceAsProperties() throws Exception {
+ Properties props = Resources.getResourceAsProperties(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Assert.assertNotNull(props.getProperty("driver"));
+ }
+
+ @Test
+ public void shouldGetUrlAsStream() throws Exception {
+ URL url = Resources.getResourceURL(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ InputStream in = Resources.getUrlAsStream(url.toString());
+ Assert.assertNotNull(in);
+ in.close();
+ }
+
+ @Test
+ public void shouldGetUrlAsReader() throws Exception {
+ URL url = Resources.getResourceURL(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Reader in = Resources.getUrlAsReader(url.toString());
+ Assert.assertNotNull(in);
+ in.close();
+ }
+
+ @Test
+ public void shouldGetResourceAsStream() throws Exception {
+ InputStream in = Resources.getResourceAsStream(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Assert.assertNotNull(in);
+ in.close();
+ }
+
+ @Test
+ public void shouldGetResourceAsReader() throws Exception {
+ Reader in = Resources.getResourceAsReader(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Assert.assertNotNull(in);
+ in.close();
+ }
+
+ @Test
+ public void shouldGetResourceAsFile() throws Exception {
+ File file = Resources.getResourceAsFile(JPETSTORE_PROPERTIES);
+ Assert.assertTrue(file.toURL().toString().endsWith("jpetstore/jpetstore-hsqldb.properties"));
+ }
+
+ @Test
+ public void shouldGetResourceAsFileWithClassloader() throws Exception {
+ File file = Resources.getResourceAsFile(CLASS_LOADER, JPETSTORE_PROPERTIES);
+ Assert.assertTrue(file.toURL().toString().endsWith("jpetstore/jpetstore-hsqldb.properties"));
+ }
+
+ @Test
+ public void shouldAllowDefaultClassLoaderToBeSet() {
+ Resources.setDefaultClassLoader(this.getClass().getClassLoader());
+ Assert.assertEquals(this.getClass().getClassLoader(), Resources.getDefaultClassLoader());
+ }
+
+ @Test
+ public void shouldAllowDefaultCharsetToBeSet() {
+ Resources.setCharset(Charset.defaultCharset());
+ Assert.assertEquals(Charset.defaultCharset(), Resources.getCharset());
+ }
+
+ @Test
+ public void shouldGetClassForName() throws Exception {
+ Class clazz = Resources.classForName(ResourcesTest.class.getName());
+ Assert.assertNotNull(clazz);
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/SimpleDataSourceTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/SimpleDataSourceTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/SimpleDataSourceTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/jdbc/SimpleDataSourceTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,52 @@
+package org.apache.ibatis.jdbc;
+
+import org.apache.ibatis.BaseDataTest;
+import org.junit.*;
+
+import java.sql.Connection;
+import java.util.*;
+
+public class SimpleDataSourceTest extends BaseDataTest {
+
+ @Test
+ public void shouldProperlyMaintainPoolOf3ActiveAnd2IdleConnections() throws Exception {
+ SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES);
+ try {
+ runScript(ds, JPETSTORE_DDL);
+ ds.setJdbcDefaultAutoCommit(false);
+ ds.setJdbcDriverProperties(new Properties() {
+ {
+ setProperty("username", "sa");
+ setProperty("password", "");
+ }
+ });
+ ds.setPoolMaximumActiveConnections(3);
+ ds.setPoolMaximumIdleConnections(2);
+ ds.setPoolMaximumCheckoutTime(10000);
+ ds.setPoolPingConnectionsNotUsedFor(1);
+ ds.setPoolPingEnabled(true);
+ ds.setPoolPingQuery("SELECT * FROM PRODUCT");
+ ds.setPoolTimeToWait(10000);
+ ds.setLogWriter(null);
+ List<Connection> connections = new ArrayList<Connection>();
+ for (int i = 0; i < 3; i++) {
+ connections.add(ds.getConnection());
+ }
+ Assert.assertEquals(3, ds.getActiveConnectionCount());
+ for (Connection c : connections) {
+ c.close();
+ }
+ Assert.assertEquals(2, ds.getIdleConnectionCount());
+ Assert.assertEquals(4, ds.getRequestCount());
+ Assert.assertEquals(0, ds.getBadConnectionCount());
+ Assert.assertEquals(0, ds.getHadToWaitCount());
+ Assert.assertEquals(0, ds.getAverageOverdueCheckoutTime());
+ Assert.assertEquals(0, ds.getClaimedOverdueConnectionCount());
+ Assert.assertEquals(0, ds.getAverageWaitTime());
+ Assert.assertNotNull(ds.getStatus());
+ } finally {
+ ds.forceCloseAll();
+ }
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/logging/LogFactoryTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/logging/LogFactoryTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/logging/LogFactoryTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/logging/LogFactoryTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,47 @@
+package org.apache.ibatis.logging;
+
+import org.junit.*;
+
+public class LogFactoryTest {
+
+ @Test
+ public void shouldUseCommonsLogging() {
+ LogFactory.useCommonsLogging();
+ logSomething(true);
+ }
+
+ @Test
+ public void shouldUseLog4J() {
+ LogFactory.useLog4JLogging();
+ logSomething(true);
+ }
+
+ @Test
+ public void shouldUseJdKLogging() {
+ LogFactory.useJdkLogging();
+ logSomething(false);
+ }
+
+ @Test
+ public void shouldUseStdOut() {
+ LogFactory.useStdOutLogging();
+ logSomething(true);
+ }
+
+ @Test
+ public void shouldUseNoLogging() {
+ LogFactory.useNoLogging();
+ logSomething(false);
+ }
+
+ private void logSomething(boolean expectedDebug) {
+ Log log = LogFactory.getLog(Object.class);
+ log.warn("Warning message.");
+ log.debug("Debug message.");
+ log.error("Error message.");
+ log.error("Error with Exception.", new Exception("Test exception."));
+ Assert.assertEquals(expectedDebug, log.isDebugEnabled());
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/migration/ScriptRunnerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,70 @@
+package org.apache.ibatis.migration;
+
+import org.apache.ibatis.BaseDataTest;
+import org.apache.ibatis.adhoc.AdHocExecutor;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.jdbc.SimpleDataSource;
+import org.junit.*;
+
+import java.io.IOException;
+import java.sql.*;
+import java.util.*;
+
+public class ScriptRunnerTest extends BaseDataTest {
+
+ @Test
+ public void shouldRunScriptsUsingDataSource() throws Exception {
+ SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES);
+ ScriptRunner runner = new ScriptRunner(ds, true, false);
+ runner.setDelimiter(";", false);
+ runner.setLogWriter(null);
+ runner.setErrorLogWriter(null);
+ runJPetStoreScripts(runner);
+ assertProductsTableExistsAndLoaded();
+ }
+
+ @Test
+ public void shouldRunScriptsUsingConnection() throws Exception {
+ SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES);
+ Connection conn = ds.getConnection();
+ ScriptRunner runner = new ScriptRunner(conn, true, false);
+ runner.setErrorLogWriter(null);
+ runner.setLogWriter(null);
+ runJPetStoreScripts(runner);
+ assertProductsTableExistsAndLoaded();
+ }
+
+ @Test
+ public void shouldRunScriptsUsingProperties() throws Exception {
+ Properties props = Resources.getResourceAsProperties(JPETSTORE_PROPERTIES);
+ ScriptRunner runner = new ScriptRunner(
+ props.getProperty("driver"),
+ props.getProperty("url"),
+ props.getProperty("username"),
+ props.getProperty("password"),
+ true,
+ false);
+ runner.setErrorLogWriter(null);
+ runner.setLogWriter(null);
+ runJPetStoreScripts(runner);
+ assertProductsTableExistsAndLoaded();
+ }
+
+ private void runJPetStoreScripts(ScriptRunner runner) throws IOException, SQLException {
+ runScript(runner, JPETSTORE_DDL);
+ runScript(runner, JPETSTORE_DATA);
+ }
+
+ private void assertProductsTableExistsAndLoaded() throws IOException, SQLException {
+ SimpleDataSource ds = createSimpleDataSource(JPETSTORE_PROPERTIES);
+ try {
+ Connection conn = ds.getConnection();
+ AdHocExecutor executor = new AdHocExecutor(conn);
+ List<Map<String, Object>> products = executor.selectAll("SELECT * FROM PRODUCT");
+ Assert.assertEquals(16, products.size());
+ } finally {
+ ds.forceCloseAll();
+ }
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/plugin/PluginTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,36 @@
+package org.apache.ibatis.plugin;
+
+import org.junit.*;
+
+import java.util.*;
+
+
+public class PluginTest {
+
+ @Test
+ public void mapPluginShouldInterceptGet() {
+ Map map = new HashMap();
+ map = (Map) new AlwaysMapPlugin().plugin(map);
+ Assert.assertEquals("Always", map.get("Anything"));
+ }
+
+ @Test
+ public void shouldNotInterceptToString() {
+ Map map = new HashMap();
+ map = (Map) new AlwaysMapPlugin().plugin(map);
+ Assert.assertFalse("Always".equals(map.toString()));
+ }
+
+ @Intercepts({
+ @Signature(type = Map.class, method = "get", args = {Object.class})})
+ public static class AlwaysMapPlugin implements Interceptor {
+ public Object intercept(Invocation invocation) throws Throwable {
+ return "Always";
+ }
+
+ public Object plugin(Object target) {
+ return Plugin.wrap(target, this);
+ }
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/ExceptionUtilTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/ExceptionUtilTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/ExceptionUtilTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/ExceptionUtilTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,18 @@
+package org.apache.ibatis.reflection;
+
+import org.junit.*;
+
+import java.lang.reflect.*;
+
+public class ExceptionUtilTest {
+
+ @Test
+ public void shouldUnwrapThrowable() {
+ Exception exception = new Exception();
+ Assert.assertEquals(exception, ExceptionUtil.unwrapThrowable(exception));
+ Assert.assertEquals(exception, ExceptionUtil.unwrapThrowable(new InvocationTargetException(exception, "test")));
+ Assert.assertEquals(exception, ExceptionUtil.unwrapThrowable(new UndeclaredThrowableException(exception, "test")));
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaClassTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaClassTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaClassTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaClassTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,102 @@
+package org.apache.ibatis.reflection;
+
+import domain.misc.RichType;
+import org.junit.*;
+
+import java.util.*;
+
+public class MetaClassTest {
+
+ private RichType rich = new RichType();
+ Map map = new HashMap() {
+ {
+ put("richType", rich);
+ }
+ };
+
+ private MetaClass meta = MetaClass.forClass(RichType.class);
+
+ public MetaClassTest() {
+ rich.setRichType(new RichType());
+ }
+
+ @Test
+ public void shouldCheckGetterExistance() {
+ Assert.assertTrue(meta.hasGetter("richField"));
+ Assert.assertTrue(meta.hasGetter("richProperty"));
+ Assert.assertTrue(meta.hasGetter("richList"));
+ Assert.assertTrue(meta.hasGetter("richMap"));
+ Assert.assertTrue(meta.hasGetter("richList[0]"));
+
+ Assert.assertTrue(meta.hasGetter("richType"));
+ Assert.assertTrue(meta.hasGetter("richType.richField"));
+ Assert.assertTrue(meta.hasGetter("richType.richProperty"));
+ Assert.assertTrue(meta.hasGetter("richType.richList"));
+ Assert.assertTrue(meta.hasGetter("richType.richMap"));
+ Assert.assertTrue(meta.hasGetter("richType.richList[0]"));
+
+ Assert.assertFalse(meta.hasGetter("[0]"));
+ }
+
+ @Test
+ public void shouldCheckSetterExistance() {
+ Assert.assertTrue(meta.hasSetter("richField"));
+ Assert.assertTrue(meta.hasSetter("richProperty"));
+ Assert.assertTrue(meta.hasSetter("richList"));
+ Assert.assertTrue(meta.hasSetter("richMap"));
+ Assert.assertTrue(meta.hasSetter("richList[0]"));
+
+ Assert.assertTrue(meta.hasSetter("richType"));
+ Assert.assertTrue(meta.hasSetter("richType.richField"));
+ Assert.assertTrue(meta.hasSetter("richType.richProperty"));
+ Assert.assertTrue(meta.hasSetter("richType.richList"));
+ Assert.assertTrue(meta.hasSetter("richType.richMap"));
+ Assert.assertTrue(meta.hasSetter("richType.richList[0]"));
+
+ Assert.assertFalse(meta.hasSetter("[0]"));
+ }
+
+ @Test
+ public void shouldCheckTypeForEachGetter() {
+ Assert.assertEquals(String.class, meta.getGetterType("richField"));
+ Assert.assertEquals(String.class, meta.getGetterType("richProperty"));
+ Assert.assertEquals(List.class, meta.getGetterType("richList"));
+ Assert.assertEquals(Map.class, meta.getGetterType("richMap"));
+ Assert.assertEquals(List.class, meta.getGetterType("richList[0]"));
+
+ Assert.assertEquals(RichType.class, meta.getGetterType("richType"));
+ Assert.assertEquals(String.class, meta.getGetterType("richType.richField"));
+ Assert.assertEquals(String.class, meta.getGetterType("richType.richProperty"));
+ Assert.assertEquals(List.class, meta.getGetterType("richType.richList"));
+ Assert.assertEquals(Map.class, meta.getGetterType("richType.richMap"));
+ Assert.assertEquals(List.class, meta.getGetterType("richType.richList[0]"));
+ }
+
+ @Test
+ public void shouldCheckTypeForEachSetter() {
+ Assert.assertEquals(String.class, meta.getSetterType("richField"));
+ Assert.assertEquals(String.class, meta.getSetterType("richProperty"));
+ Assert.assertEquals(List.class, meta.getSetterType("richList"));
+ Assert.assertEquals(Map.class, meta.getSetterType("richMap"));
+ Assert.assertEquals(List.class, meta.getSetterType("richList[0]"));
+
+ Assert.assertEquals(RichType.class, meta.getSetterType("richType"));
+ Assert.assertEquals(String.class, meta.getSetterType("richType.richField"));
+ Assert.assertEquals(String.class, meta.getSetterType("richType.richProperty"));
+ Assert.assertEquals(List.class, meta.getSetterType("richType.richList"));
+ Assert.assertEquals(Map.class, meta.getSetterType("richType.richMap"));
+ Assert.assertEquals(List.class, meta.getSetterType("richType.richList[0]"));
+ }
+
+ @Test
+ public void shouldCheckGetterAndSetterNames() {
+ Assert.assertEquals(5, meta.getGetterNames().length);
+ Assert.assertEquals(5, meta.getSetterNames().length);
+ }
+
+ @Test
+ public void shouldFindPropertyName() {
+ Assert.assertEquals("richField", meta.findProperty("RICHfield"));
+ }
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaObjectTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaObjectTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaObjectTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/reflection/MetaObjectTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,166 @@
+package org.apache.ibatis.reflection;
+
+import domain.jpetstore.Product;
+import domain.misc.RichType;
+import org.junit.*;
+
+public class MetaObjectTest {
+
+ @Test
+ public void shouldGetAndSetField() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richField", "foo");
+ Assert.assertEquals("foo", meta.getValue("richField"));
+ }
+
+ @Test
+ public void shouldGetAndSetNestedField() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richType.richField", "foo");
+ Assert.assertEquals("foo", meta.getValue("richType.richField"));
+ }
+
+ @Test
+ public void shouldGetAndSetProperty() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richProperty", "foo");
+ Assert.assertEquals("foo", meta.getValue("richProperty"));
+ }
+
+ @Test
+ public void shouldGetAndSetNestedProperty() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richType.richProperty", "foo");
+ Assert.assertEquals("foo", meta.getValue("richType.richProperty"));
+ }
+
+ @Test
+ public void shouldGetAndSetMapPair() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richMap.key", "foo");
+ Assert.assertEquals("foo", meta.getValue("richMap.key"));
+ }
+
+ @Test
+ public void shouldGetAndSetNestedMapPair() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richType.richMap.key", "foo");
+ Assert.assertEquals("foo", meta.getValue("richType.richMap.key"));
+ }
+
+ @Test
+ public void shouldGetAndSetListItem() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richList[0]", "foo");
+ Assert.assertEquals("foo", meta.getValue("richList[0]"));
+ }
+
+ @Test
+ public void shouldSetAndGetSelfListItem() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richList[0]", "foo");
+ Assert.assertEquals("foo", meta.getValue("richList[0]"));
+ }
+
+ @Test
+ public void shouldGetAndSetNestedListItem() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ meta.setValue("richType.richList[0]", "foo");
+ Assert.assertEquals("foo", meta.getValue("richType.richList[0]"));
+ }
+
+ @Test
+ public void shouldGetReadablePropertyNames() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ String[] readables = meta.getGetterNames();
+ Assert.assertEquals(5, readables.length);
+ for (String readable : readables) {
+ Assert.assertTrue(meta.hasGetter(readable));
+ Assert.assertTrue(meta.hasGetter("richType." + readable));
+ }
+ Assert.assertTrue(meta.hasGetter("richType"));
+ }
+
+ @Test
+ public void shouldGetWriteablePropertyNames() {
+ RichType rich = new RichType();
+ MetaObject meta = MetaObject.forObject(rich);
+ String[] writeables = meta.getSetterNames();
+ Assert.assertEquals(5, writeables.length);
+ for (String writeable : writeables) {
+ Assert.assertTrue(meta.hasSetter(writeable));
+ Assert.assertTrue(meta.hasSetter("richType." + writeable));
+ }
+ Assert.assertTrue(meta.hasSetter("richType"));
+ }
+
+ @Test
+ public void shouldSetPropertyOfNullNestedProperty() {
+ MetaObject richWithNull = MetaObject.forObject(new RichType());
+ richWithNull.setValue("richType.richProperty", "foo");
+ Assert.assertEquals("foo", richWithNull.getValue("richType.richProperty"));
+ }
+
+ @Test
+ public void shouldSetPropertyOfNullNestedPropertyWithNull() {
+ MetaObject richWithNull = MetaObject.forObject(new RichType());
+ richWithNull.setValue("richType.richProperty", null);
+ Assert.assertEquals(null, richWithNull.getValue("richType.richProperty"));
+ }
+
+ @Test
+ public void shouldGetPropertyOfNullNestedProperty() {
+ MetaObject richWithNull = MetaObject.forObject(new RichType());
+ Assert.assertNull(richWithNull.getValue("richType.richProperty"));
+ }
+
+ @Test
+ public void shouldVerifyHasReadablePropertiesReturnedByGetReadablePropertyNames() {
+ MetaObject object = MetaObject.forObject(new Product());
+ for (String readable : object.getGetterNames()) {
+ Assert.assertTrue(object.hasGetter(readable));
+ }
+ }
+
+ @Test
+ public void shouldVerifyHasWriteablePropertiesReturnedByGetWriteablePropertyNames() {
+ MetaObject object = MetaObject.forObject(new Product());
+ for (String writeable : object.getSetterNames()) {
+ Assert.assertTrue(object.hasSetter(writeable));
+ }
+ }
+
+ @Test
+ public void shouldSetAndGetProperties() {
+ MetaObject object = MetaObject.forObject(new Product());
+ for (String writeable : object.getSetterNames()) {
+ if (!writeable.contains("$")) {
+ object.setValue(writeable, "test");
+ Assert.assertEquals("test", object.getValue(writeable));
+ }
+ }
+ }
+
+ @Test
+ public void shouldVerifyPropertyTypes() {
+ MetaObject object = MetaObject.forObject(new Product());
+ for (String writeable : object.getSetterNames()) {
+ if (!writeable.contains("$")) {
+ Assert.assertEquals(String.class, object.getGetterType(writeable));
+ Assert.assertEquals(String.class, object.getSetterType(writeable));
+ }
+ }
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BaseTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BaseTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BaseTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BaseTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,29 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Mockery;
+import org.jmock.lib.legacy.ClassImposteriser;
+
+import java.sql.*;
+
+public abstract class BaseTypeHandlerTest {
+
+ protected Mockery mockery = new Mockery() {
+ {
+ setImposteriser(ClassImposteriser.INSTANCE);
+ }
+ };
+
+ protected final ResultSet rs = mockery.mock(ResultSet.class);
+ protected final PreparedStatement ps = mockery.mock(PreparedStatement.class);
+ protected final CallableStatement cs = mockery.mock(CallableStatement.class);
+
+ public abstract void shouldSetParameter()
+ throws Exception;
+
+ public abstract void shouldGetResultFromResultSet()
+ throws Exception;
+
+ public abstract void shouldGetResultFromCallableStatement()
+ throws Exception;
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BigDecimalTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BigDecimalTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BigDecimalTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BigDecimalTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,55 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+import java.math.BigDecimal;
+
+public class BigDecimalTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new BigDecimalTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setBigDecimal(with(any(int.class)), with(any(BigDecimal.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, new BigDecimal(1), null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getBigDecimal(with(any(String.class)));
+ will(returnValue(new BigDecimal(1)));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(new BigDecimal(1), TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getBigDecimal(with(any(int.class)));
+ will(returnValue(new BigDecimal(1)));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(new BigDecimal(1), TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BlobTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BlobTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BlobTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BlobTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,66 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+import java.io.InputStream;
+import java.sql.Blob;
+
+public class BlobTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new BlobTypeHandler();
+
+ protected final Blob blob = mockery.mock(Blob.class);
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setBinaryStream(with(any(int.class)), with(any(InputStream.class)), with(any(int.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, new byte[]{1, 2, 3}, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getBlob(with(any(String.class)));
+ will(returnValue(blob));
+ one(rs).wasNull();
+ will(returnValue(false));
+ one(blob).length();
+ will(returnValue(3l));
+ one(blob).getBytes(with(any(long.class)), with(any(int.class)));
+ will(returnValue(new byte[]{1, 2, 3}));
+ }
+ });
+ Assert.assertArrayEquals(new byte[]{1, 2, 3}, (byte[]) TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getBlob(with(any(int.class)));
+ will(returnValue(blob));
+ one(cs).wasNull();
+ will(returnValue(false));
+ one(blob).length();
+ will(returnValue(3l));
+ one(blob).getBytes(with(any(long.class)), with(any(int.class)));
+ will(returnValue(new byte[]{1, 2, 3}));
+ }
+ });
+ Assert.assertArrayEquals(new byte[]{1, 2, 3}, (byte[]) TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BooleanTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BooleanTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BooleanTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/BooleanTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class BooleanTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new BooleanTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setBoolean(with(any(int.class)), with(any(boolean.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, true, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getBoolean(with(any(String.class)));
+ will(returnValue(true));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(true, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getBoolean(with(any(int.class)));
+ will(returnValue(true));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(true, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteArrayTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteArrayTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteArrayTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteArrayTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class ByteArrayTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new ByteArrayTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setBytes(with(any(int.class)), with(any(byte[].class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, new byte[]{1, 2, 3}, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getBytes(with(any(String.class)));
+ will(returnValue(new byte[]{1, 2, 3}));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertArrayEquals(new byte[]{1, 2, 3}, (byte[]) TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getBytes(with(any(int.class)));
+ will(returnValue(new byte[]{1, 2, 3}));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertArrayEquals(new byte[]{1, 2, 3}, (byte[]) TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ByteTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class ByteTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new ByteTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setByte(with(any(int.class)), with(any(byte.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, (byte) 100, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getByte(with(any(String.class)));
+ will(returnValue((byte) 100));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals((byte) 100, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getByte(with(any(int.class)));
+ will(returnValue((byte) 100));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals((byte) 100, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ClobTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ClobTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ClobTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/ClobTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,66 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+import java.io.Reader;
+import java.sql.Clob;
+
+public class ClobTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new ClobTypeHandler();
+
+ protected final Clob clob = mockery.mock(Clob.class);
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setCharacterStream(with(any(int.class)), with(any(Reader.class)), with(any(int.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, "Hello", null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getClob(with(any(String.class)));
+ will(returnValue(clob));
+ one(rs).wasNull();
+ will(returnValue(false));
+ one(clob).length();
+ will(returnValue(3l));
+ one(clob).getSubString(with(any(long.class)), with(any(int.class)));
+ will(returnValue("Hello"));
+ }
+ });
+ Assert.assertEquals("Hello", TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getClob(with(any(int.class)));
+ will(returnValue(clob));
+ one(cs).wasNull();
+ will(returnValue(false));
+ one(clob).length();
+ will(returnValue(3l));
+ one(clob).getSubString(with(any(long.class)), with(any(int.class)));
+ will(returnValue("Hello"));
+ }
+ });
+ Assert.assertEquals("Hello", TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateOnlyTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateOnlyTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateOnlyTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateOnlyTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,57 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+import java.util.Date;
+
+public class DateOnlyTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new DateOnlyTypeHandler();
+ private static final Date DATE = new Date();
+ private static final java.sql.Date SQL_DATE = new java.sql.Date(DATE.getTime());
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setDate(with(any(int.class)), with(any(java.sql.Date.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, DATE, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getDate(with(any(String.class)));
+ will(returnValue(SQL_DATE));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(DATE, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getDate(with(any(int.class)));
+ will(returnValue(SQL_DATE));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(DATE, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DateTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,58 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+import java.sql.Timestamp;
+import java.util.Date;
+
+public class DateTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new DateTypeHandler();
+ private static final Date DATE = new Date();
+ private static final Timestamp TIMESTAMP = new Timestamp(DATE.getTime());
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setTimestamp(with(any(int.class)), with(any(Timestamp.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, DATE, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getTimestamp(with(any(String.class)));
+ will(returnValue(TIMESTAMP));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(DATE, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getTimestamp(with(any(int.class)));
+ will(returnValue(TIMESTAMP));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(DATE, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DoubleTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DoubleTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DoubleTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/DoubleTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class DoubleTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new DoubleTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setDouble(with(any(int.class)), with(any(double.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, 100d, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getDouble(with(any(String.class)));
+ will(returnValue(100d));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100d, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getDouble(with(any(int.class)));
+ will(returnValue(100d));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100d, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/FloatTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/FloatTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/FloatTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/FloatTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class FloatTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new FloatTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setFloat(with(any(int.class)), with(any(float.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, 100f, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getFloat(with(any(String.class)));
+ will(returnValue(100f));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100f, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getFloat(with(any(int.class)));
+ will(returnValue(100f));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100f, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file
Added: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/IntegerTypeHandlerTest.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/IntegerTypeHandlerTest.java?rev=683745&view=auto
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/IntegerTypeHandlerTest.java (added)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/type/IntegerTypeHandlerTest.java Thu Aug 7 16:21:46 2008
@@ -0,0 +1,53 @@
+package org.apache.ibatis.type;
+
+import org.jmock.Expectations;
+import org.junit.*;
+
+public class IntegerTypeHandlerTest extends BaseTypeHandlerTest {
+
+ private static final TypeHandler TYPE_HANDLER = new IntegerTypeHandler();
+
+ @Test
+ public void shouldSetParameter()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(ps).setInt(with(any(int.class)), with(any(int.class)));
+ }
+ });
+ TYPE_HANDLER.setParameter(ps, 1, 100, null);
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromResultSet()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(rs).getInt(with(any(String.class)));
+ will(returnValue(100));
+ one(rs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100, TYPE_HANDLER.getResult(rs, "column"));
+ mockery.assertIsSatisfied();
+ }
+
+ @Test
+ public void shouldGetResultFromCallableStatement()
+ throws Exception {
+ mockery.checking(new Expectations() {
+ {
+ one(cs).getInt(with(any(int.class)));
+ will(returnValue(100));
+ one(cs).wasNull();
+ will(returnValue(false));
+ }
+ });
+ Assert.assertEquals(100, TYPE_HANDLER.getResult(cs, 1));
+ mockery.assertIsSatisfied();
+ }
+
+
+}
\ No newline at end of file