All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nohope.test.UtilityClassUtils Maven / Gradle / Ivy

package org.nohope.test;

import java.lang.reflect.Constructor;

import static java.lang.reflect.Modifier.isFinal;
import static java.lang.reflect.Modifier.isPrivate;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;

/**
 * @author ketoth xupack
 * @since 11/16/11 9:00 PM
 */
public final class UtilityClassUtils {

    private UtilityClassUtils() {
    }

    public static  void assertUtilityClass(final Class clazz) throws Exception {
        final String message = "Utility class "
                               + clazz.getCanonicalName()
                               + " should be declared final";
        assertThat(message, isFinal(clazz.getModifiers()), equalTo(true));

        final Constructor[] cons = clazz.getDeclaredConstructors();
        final String errorMessage = "Utility class "
                                  + clazz.getCanonicalName()
                                  + " should have only one private "
                                  + "default constructor";
        assertThat(errorMessage, cons.length, equalTo(1));

        final Constructor ctor = cons[0];
        assertThat(errorMessage, ctor.getParameterTypes().length, equalTo(0));
        assertThat(errorMessage, isPrivate(ctor.getModifiers()), equalTo(true));
        ctor.setAccessible(true);
        ctor.newInstance((Object[]) null);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy