CVS: junit/src/org/junit/experimental/test/javamodel FunctionTest.java, NONE, 1.1 ConcreteFunctionTest.java, NONE, 1.1

David Saff <[email protected]> Thu, 12 Jul 2007 10:08:23 -0700
Newsgroups gmane.comp.java.junit.devel
Message-ID <[email protected]>
Update of /cvsroot/junit/junit/src/org/junit/experimental/test/javamodel
In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv26134/src/org/junit/experimental/test/javamodel

Added Files:
	FunctionTest.java ConcreteFunctionTest.java 
Log Message:
Re-organize theory packages

--- NEW FILE: FunctionTest.java ---
package org.junit.experimental.test.javamodel;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.imposterization.FunctionPointer;
import org.junit.experimental.theories.methods.api.TestedOn;

public class FunctionTest {
	public static class HasAnnotation {
		public void something(@TestedOn(ints= { 3 })
		int x) {
		}
	}

	FunctionPointer function= FunctionPointer.pointer();

	@Before
	public void functionPoints() {
		function.calls(new HasAnnotation()).something(4);
	}

	@SuppressWarnings("unchecked")
	@Test
	public void getSupplierAnnotation() {
		assertThat(function.signatures().get(0).getSupplierAnnotation(),
				is(TestedOn.class));
	}

	@Test
	public void thrownReturnsNullIfNormalReturn() {
		assertThat(function.exceptionThrown(4), nullValue());
	}
}

--- NEW FILE: ConcreteFunctionTest.java ---
package org.junit.experimental.test.javamodel;

import static org.hamcrest.CoreMatchers.allOf;
import static org.hamcrest.CoreMatchers.not;
import static org.junit.Assert.assertThat;
import static org.junit.Assume.assumeThat;
import static org.junit.matchers.StringContains.containsString;

import java.lang.reflect.Method;

import org.junit.experimental.theories.methods.api.Theory;
import org.junit.experimental.theories.runner.ConcreteFunction;
import org.junit.experimental.theories.runner.api.Theories;
import org.junit.runner.RunWith;

@RunWith(Theories.class)
public class ConcreteFunctionTest {
	public static Method TO_STRING;

	public static Method WAIT;

	static {
		try {
			TO_STRING= Object.class.getMethod("toString");
			WAIT= Object.class.getMethod("wait");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static ConcreteFunction zeroToString1= new ConcreteFunction(0,
			TO_STRING);

	public static ConcreteFunction zeroToString2= new ConcreteFunction(0,
			TO_STRING);

	public static ConcreteFunction oneToString1= new ConcreteFunction(1,
			TO_STRING);

	public static ConcreteFunction oneFinalize= new ConcreteFunction(1, WAIT);

	public static String ROB_KUTNER= "Rob Kutner";

	@Theory
	public void unequalToStringsMeansFunctionsUnequal(ConcreteFunction a,
			ConcreteFunction b) {
		assumeThat(a.toString(), not(b.toString()));
		assertThat(a, not(b));
	}

	@Theory
	public void unequalMethodsMeansUnequalFunctions(Method m1, Method m2,
			Object o) {
		assumeThat(m1, not(m2));
		assertThat(new ConcreteFunction(o, m1),
				not(new ConcreteFunction(o, m2)));
	}

	@Theory
	public void unequalFunctionsMeanUnequalToStrings(ConcreteFunction a,
			ConcreteFunction b) {
		assumeThat(a, not(b));
		assertThat(a.toString(), not(b.toString()));
	}

	@SuppressWarnings("unchecked")
	@Theory
	public void throwsUsefulErrorWhenParameterNumberWrong(String string)
			throws Throwable {
		try {
			new ConcreteFunction(this, TO_STRING).invoke(string);
		} catch (Exception e) {
			assertThat(e.toString(), allOf(containsString(string),
					containsString(TO_STRING.toString())));
		}
	}
}


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/