/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.jdbc.data;
import junit.extensions.TestSetup;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.core.runtime.IStatus;
import org.teiid.designer.jdbc.data.MethodRequest;
import org.teiid.designer.jdbc.data.Request;
/**
* TestMethodRequest
*/
public class TestMethodRequest extends TestCase {
private static final String REQUEST_NAME = "MethodRequest 1"; //$NON-NLS-1$
private static final String TARGET_OBJECT = new String("this is the test string"); //$NON-NLS-1$
private static final String METHOD_NAME = "length"; //$NON-NLS-1$
private static final Object[] METHOD_PARAMS = new Object[]{};
private static final String FAIL_REQUEST_NAME = "MethodRequest that should fail"; //$NON-NLS-1$
private static final String FAIL_TARGET_OBJECT = new String("this is the failure test string"); //$NON-NLS-1$
private static final String FAIL_METHOD_NAME = "charAt"; //$NON-NLS-1$
private static final Object[] FAIL_METHOD_PARAMS = new Object[]{new Integer(FAIL_TARGET_OBJECT.length() + 4)};
private MethodRequest request;
private MethodRequest failRequest;
/**
* Constructor for TestMethodRequest.
* @param name
*/
public TestMethodRequest(String name) {
super(name);
}
/*
* @see TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
super.setUp();
this.request = new MethodRequest(REQUEST_NAME,TARGET_OBJECT,METHOD_NAME,METHOD_PARAMS);
this.failRequest = new MethodRequest(FAIL_REQUEST_NAME,FAIL_TARGET_OBJECT,FAIL_METHOD_NAME,FAIL_METHOD_PARAMS);
}
/*
* @see TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
super.tearDown();
this.request = null;
this.failRequest = null;
}
/**
* Test suite, with one-time setup.
*/
public static Test suite() {
TestSuite suite = new TestSuite("TestMethodRequest"); //$NON-NLS-1$
suite.addTestSuite(TestMethodRequest.class);
// One-time setup and teardown
return new TestSetup(suite) {
@Override
public void setUp() {
}
@Override
public void tearDown() {
}
};
}
// =========================================================================
// H E L P E R M E T H O D S
// =========================================================================
// =========================================================================
// T E S T C A S E S
// =========================================================================
public void testDefaultConstructor() {
assertNotNull( new MethodRequest(REQUEST_NAME,TARGET_OBJECT,METHOD_NAME,METHOD_PARAMS) );
}
public void testConstructorWithNullName() {
try {
new MethodRequest(null,TARGET_OBJECT,METHOD_NAME,METHOD_PARAMS);
fail("Missed catching null name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
public void testConstructorWithZeroLengthName() {
try {
new MethodRequest("",TARGET_OBJECT,METHOD_NAME,METHOD_PARAMS); //$NON-NLS-1$
fail("Missed catching zero-length name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
public void testConstructorWithNullTarget() {
try {
new MethodRequest(REQUEST_NAME,null,METHOD_NAME,METHOD_PARAMS);
fail("Missed catching null target"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
public void testConstructorWithNullMethodName() {
try {
new MethodRequest(REQUEST_NAME,TARGET_OBJECT,null,METHOD_PARAMS);
fail("Missed catching null method name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
public void testConstructorWithZeroLengthMethodName() {
try {
new MethodRequest(REQUEST_NAME,TARGET_OBJECT,"",METHOD_PARAMS); //$NON-NLS-1$
fail("Missed catching zero-length method name"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
public void testConstructorWithNullParams() {
try {
new MethodRequest(REQUEST_NAME,TARGET_OBJECT,METHOD_NAME,null);
fail("Missed catching null parameters"); //$NON-NLS-1$
} catch (IllegalArgumentException e) {
// expected
}
}
//-------------------------------------------------------------------------
// Test Request methods
//-------------------------------------------------------------------------
public void testGetName() {
final String name = request.getName();
assertTrue(REQUEST_NAME == name);
}
public void testToString() {
assertTrue(request.toString() == request.getName());
}
public void testHasResults() {
assertTrue(!request.hasResponse());
}
public void testGetResults() {
assertTrue(request.getResponse() == null);
}
public void testHasProblems() {
assertTrue(!request.hasProblems());
}
public void testGetProblems() {
assertTrue(request.getProblems() == null);
}
public void testClear() {
assertTrue(!request.hasResponse());
assertTrue(request.getResponse() == null);
assertTrue(!request.hasProblems());
assertTrue(request.getProblems() == null);
}
public void testInvokeWithSuccess() {
final Request r = this.request;
final boolean success = r.invoke(); // should succeed
assertTrue(success);
final IStatus status = r.getProblems();
assertNull(status);
assertTrue(r.hasResponse());
assertTrue(r.getResponse() != null);
assertTrue(!r.hasProblems());
assertTrue(r.getProblems() == null);
r.clear();
assertTrue(!r.hasResponse());
assertTrue(r.getResponse() == null);
assertTrue(!r.hasProblems());
assertTrue(r.getProblems() == null);
}
public void testInvokeWithFailure() {
final Request r = this.failRequest;
final boolean success = r.invoke(); // should succeed
assertTrue(!success);
final IStatus status = r.getProblems();
assertNotNull(status);
assertTrue(r.hasResponse());
assertTrue(r.getResponse() != null);
assertTrue(r.hasProblems());
assertTrue(r.getProblems() != null);
r.clear();
assertTrue(!r.hasResponse());
assertTrue(r.getResponse() == null);
assertTrue(!r.hasProblems());
assertTrue(r.getProblems() == null);
}
}