io.kazuki.v0.internal.helper.TestHelper.java Source code

Java tutorial

Introduction

Here is the source code for io.kazuki.v0.internal.helper.TestHelper.java

Source

/**
 * Copyright 2014 Sunny Gleason and original author or authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package io.kazuki.v0.internal.helper;

import java.sql.Connection;
import java.util.Iterator;

import javax.sql.DataSource;

import org.h2.Driver;
import org.hamcrest.BaseMatcher;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.skife.jdbi.v2.IDBI;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Throwables;
import com.jolbox.bonecp.BoneCPDataSource;

public class TestHelper {
    private static final ObjectMapper mapper = new ObjectMapper();

    public static void dropSchema(DataSource database) {
        Connection conn = null;
        try {
            conn = database.getConnection();
            conn.prepareStatement("DROP ALL OBJECTS").execute();
            conn.commit();
        } catch (Exception e) {
            throw Throwables.propagate(e);
        } finally {
            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    throw Throwables.propagate(e);
                }
            }
        }

    }

    public static IDBI getTestDataSource(Class<?> clazz) {
        BoneCPDataSource datasource = new BoneCPDataSource();

        datasource.setDriverClass(Driver.class.getName());
        datasource.setJdbcUrl(System.getProperty("jdbc.url", "jdbc:h2:mem:thedb;DB_CLOSE_ON_EXIT=FALSE"));
        datasource.setUsername(System.getProperty("jdbc.user", "root"));
        datasource.setPassword(System.getProperty("jdbc.password", "notreallyused"));

        return JDBIHelper.getDBI(clazz, datasource);
    }

    public static Matcher<Iterator<?>> isEmptyIter() {
        return new BaseMatcher<Iterator<?>>() {
            @Override
            public void describeTo(Description description) {
                description.appendText("is not empty");
            }

            @Override
            public boolean matches(Object target) {
                return (target instanceof Iterator) && !((Iterator<?>) target).hasNext();
            }
        };
    }

    public static <T> Matcher<Iterator<?>> isNotEmptyIter() {
        return new BaseMatcher<Iterator<?>>() {
            @Override
            public void describeTo(Description description) {
                description.appendText("is empty");
            }

            @Override
            public boolean matches(Object target) {
                return (target instanceof Iterator) && ((Iterator<?>) target).hasNext();
            }
        };
    }

    public static <T> Matcher<Iterator<?>> isIterOfLength(final int targetSize) {
        return new BaseMatcher<Iterator<?>>() {
            @Override
            public void describeTo(Description description) {
                description.appendText("is iter of length " + targetSize);
            }

            @Override
            public boolean matches(Object target) {
                if (!(target instanceof Iterator)) {
                    return false;
                }

                Iterator<?> targetIter = (Iterator<?>) target;
                int count = 0;
                while (targetIter.hasNext()) {
                    targetIter.next();
                    count += 1;
                }

                return count == targetSize;
            }
        };
    }

    public static String dump(Object object) throws Exception {
        return mapper.writeValueAsString(object);
    }
}