org.ebayopensource.turmeric.tools.codegen.util.IntrospectUtilTest.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.tools.codegen.util.IntrospectUtilTest.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * 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
 *******************************************************************************/
package org.ebayopensource.turmeric.tools.codegen.util;

import static org.junit.Assert.*;

import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.List;
import java.util.Set;

import org.apache.commons.io.FileUtils;
import org.ebayopensource.turmeric.junit.AbstractTurmericTestCase;
import org.ebayopensource.turmeric.junit.rules.TestingDir;
import org.ebayopensource.turmeric.junit.utils.MavenTestingUtils;
import org.ebayopensource.turmeric.tools.TestResourceUtil;
import org.ebayopensource.turmeric.tools.codegen.CodeGenTestMessage;
import org.ebayopensource.turmeric.tools.codegen.JTypeTable;
import org.ebayopensource.turmeric.tools.codegen.util.IntrospectUtil;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

public class IntrospectUtilTest extends AbstractTurmericTestCase {
    @Rule
    public TestingDir testingdir = new TestingDir();

    @Before
    public void preventBadTests() {
        mavenTestingRules.setStrictReadPaths(true);
        mavenTestingRules.setStrictWritePaths(true);
        mavenTestingRules.setFailOnViolation(true);
    }

    @Test
    public void isCollectionTypeString() throws Exception {
        Assert.assertFalse(IntrospectUtil.isCollectionType(String.class));
    }

    @Test
    public void isCollectionTypeList() throws Exception {
        Assert.assertTrue(IntrospectUtil.isCollectionType(List.class));
    }

    @Test
    public void isCollectionTypeInteger() throws Exception {
        Assert.assertFalse(IntrospectUtil.isCollectionType(Integer.TYPE.getClass()));
    }

    @Test
    public void isCollectionTypeHashtable() throws Exception {
        Assert.assertTrue(IntrospectUtil.isCollectionType(Hashtable.class));
    }

    @Test
    public void isCollectionTypeNull() throws Exception {
        Class<?> typeClass = null;
        Assert.assertFalse(IntrospectUtil.isCollectionType(typeClass));
    }

    @Test
    public void hasCollectionType1() throws Exception {
        Class<?>[] typeClass = new Class[] { String.class };
        Assert.assertFalse(IntrospectUtil.hasCollectionType(typeClass));
    }

    @Test
    public void hasCollectionType2() throws Exception {
        Class<?>[] typeClass = new Class[] { String.class, List.class };
        Assert.assertTrue(IntrospectUtil.hasCollectionType(typeClass));
    }

    @Test
    public void hasCollectionType3() throws Exception {
        Class<?>[] typeClass = null;
        Assert.assertFalse(IntrospectUtil.hasCollectionType(typeClass));
    }

    @Test
    public void hasAttachmentTypeRef1() throws Exception {
        Class<?> type = null;
        Set<String> typeNameSet = new HashSet<String>();
        Assert.assertFalse(IntrospectUtil.hasAttachmentTypeRef(type, typeNameSet));
    }

    @Test
    public void hasAttachmentTypeRef2() throws Exception {
        Class<?> type = String.class;
        Set<String> typeNameSet = new HashSet<String>();
        boolean hasAttachmentType = IntrospectUtil.hasAttachmentTypeRef(type, typeNameSet);

        assertTrue((hasAttachmentType == false));
    }

    @Test
    public void hasAttachmentTypeRef3() throws Exception {
        boolean hasAttachmentType = false;

        try {
            Class<?> type = CodeGenTestMessage.class;
            Set<String> typeNameSet = new HashSet<String>();
            hasAttachmentType = IntrospectUtil.hasAttachmentTypeRef(type, typeNameSet);
        } catch (Exception ex) {
            ex.printStackTrace();
            throw ex;
        }

        assertTrue((hasAttachmentType == true));
    }

    @Test
    public void testLoadClass() throws Exception {
        // Setup testing directory
        testingdir.ensureEmpty();
        File classes = testingdir.getFile("classes");
        MavenTestingUtils.ensureDirExists(classes);
        File srcDir = TestResourceUtil.getResourceDir("botservice-classes");
        FileUtils.copyDirectory(srcDir, classes);

        // Setup temp classloader with testing dir included
        URL urls[] = { classes.toURI().toURL() };
        URLClassLoader cl = new URLClassLoader(urls);
        ClassLoader originalCL = Thread.currentThread().getContextClassLoader();

        try {
            Thread.currentThread().setContextClassLoader(cl);
            // Execute test
            Class<?> clazz = IntrospectUtil.loadClass("fr.virtuoz.BotService");
            Assert.assertNotNull("Loaded Class should not be null", clazz);
        } finally {
            Thread.currentThread().setContextClassLoader(originalCL);
        }
    }

    @Test
    public void testInitializeJType() throws Exception {
        // Setup testing directory
        testingdir.ensureEmpty();
        File classes = testingdir.getFile("classes");
        MavenTestingUtils.ensureDirExists(classes);
        File srcDir = TestResourceUtil.getResourceDir("botservice-classes");
        FileUtils.copyDirectory(srcDir, classes);

        // Setup temp classloader with testing dir included
        URL urls[] = { classes.toURI().toURL() };
        URLClassLoader cl = new URLClassLoader(urls);
        ClassLoader originalCL = Thread.currentThread().getContextClassLoader();

        try {
            Thread.currentThread().setContextClassLoader(cl);
            JTypeTable jtt = IntrospectUtil.initializeJType("fr.virtuoz.BotService");
            Assert.assertNotNull("Loaded Class should not be null", jtt);
        } finally {
            Thread.currentThread().setContextClassLoader(originalCL);
        }
    }
}