Created
May 31, 2012 19:43
-
-
Save Cherubi/2845748 to your computer and use it in GitHub Desktop.
MurtolukuTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this template, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
import fi.helsinki.cs.tmc.edutestutils.Points; | |
import fi.helsinki.cs.tmc.edutestutils.ReflectionUtils; | |
import java.lang.reflect.Constructor; | |
import java.lang.reflect.Method; | |
import org.junit.AfterClass; | |
import org.junit.Before; | |
import org.junit.Test; | |
import static org.junit.Assert.*; | |
import org.junit.BeforeClass; | |
/** | |
* | |
* @author Usagi-chan | |
*/ | |
public class MurtolukuTest { | |
private Class luokka; | |
private Constructor konstruktori1, konstruktori2; | |
public MurtolukuTest() { | |
} | |
@Before | |
public void setUp() { | |
try { | |
luokka = ReflectionUtils.findClass("Murtoluku"); | |
} catch (AssertionError e) { | |
fail("Ethän ole poistanut luokkaa Murtoluku."); | |
} catch (Throwable t) { | |
fail("Outo virhe."); | |
} | |
try { | |
konstruktori2 = ReflectionUtils.requireConstructor(luokka, int.class, int.class); | |
} catch (AssertionError e) { | |
fail("Luokan yhden konstruktorin tulee ottaa parametrikseen kaksi kokonaislukua."); | |
} | |
try { | |
konstruktori1 = ReflectionUtils.requireConstructor(luokka, int.class); | |
} catch (AssertionError e) { | |
fail("Luokan yhden konstruktorin tulee ottaa parametrikseen yksi kokonaisluku."); | |
} | |
} | |
private Method haeMetodi(Class palautusarvo, String metodinNimi) { | |
Method metodi = null; | |
try { | |
ReflectionUtils.requireMethod(luokka, String.class, "toString"); | |
ReflectionUtils.requireMethod(luokka, metodinNimi); | |
ReflectionUtils.requireMethod(luokka, String.class, "toString"); | |
metodi = ReflectionUtils.requireMethod(luokka, metodinNimi); | |
} catch (Throwable t) { | |
fail("Luokalla tulee olla metodi \"" + metodinNimi + "\""); | |
} | |
return metodi; | |
} | |
/** | |
* Testaa, että osoittajan hakeminen toimii kahden parametrin konstruktorilla. | |
*/ | |
@Test | |
@Points("1.2.1") | |
public void haeOsoittajaToimiiKahdenParametrinKonstruktorilla() { | |
haeOsoittajaToimii(3, 4); | |
haeOsoittajaToimii(5, 2); | |
haeOsoittajaToimii(-1, 6); | |
} | |
private void haeOsoittajaToimii(int osoittaja, int nimittaja) { | |
int haettuOsoittaja = haeOsoittaja(osoittaja, nimittaja); | |
assertFalse("Metodi haeOsoittaja antaa nimittäjän kun osoittaja on " + osoittaja + " ja nimittaja " + nimittaja + ".\nTestattiin konstruktori, joka ottaa kaksi parametriä. Metodin antama osoittaja oli " + haettuOsoittaja + ".", haettuOsoittaja == nimittaja); | |
assertTrue("Metodi haeOsoittaja antaa väärän osoittajan kun osoittaja on " + osoittaja + ". Metodin antama arvo oli " + haettuOsoittaja + ".\nTestattiin konstruktori, joka ottaa kaksi parametriä.", haettuOsoittaja == osoittaja); | |
} | |
private int haeOsoittaja(int osoittaja, int nimittaja) { | |
Method metodi = haeMetodi(int.class, "haeOsoittaja"); | |
try { | |
Object murtoluku = ReflectionUtils.invokeConstructor(konstruktori2, osoittaja, nimittaja); | |
return ReflectionUtils.invokeMethod(int.class, metodi, murtoluku); | |
} catch (Throwable t) { | |
fail("Palauttaahan haeOsoittaja-metodi kokonaisluvun."); | |
return 0; | |
} | |
} | |
/** | |
* Testaa, että osoittajan hakeminen toimii yhden parametrin konstruktorilla. | |
*/ | |
@Test | |
@Points("1.2.1") | |
public void haeOsoittajaToimiiYhdenParametrinKonstruktorilla() { | |
haeOsoittajaToimii(3); | |
haeOsoittajaToimii(5); | |
haeOsoittajaToimii(-3); | |
} | |
private void haeOsoittajaToimii(int osoittaja) { | |
int haettuOsoittaja = haeOsoittaja(osoittaja); | |
assertFalse("Metodi haeOsoittaja antaa nimittäjän kun nimittaja on 1 ja osoittaja " + osoittaja + ".\nTestattiin konstruktori, joka ottaa yhden parametrin. Metodin antama osoittaja oli " + haettuOsoittaja + ".", haettuOsoittaja == 1); | |
assertTrue("Metodi haeOsoittaja antaa väärän osoittajan kun osoittaja on " + 1 + ". Metodin antama arvo oli " + haettuOsoittaja + ".\nTestattiin konstruktori, joka ottaa yhden parametrin.", haettuOsoittaja == osoittaja); | |
} | |
private int haeOsoittaja(int osoittaja) { | |
Method metodi = haeMetodi("haeOsoittaja"); | |
try { | |
Object murtoluku = ReflectionUtils.invokeConstructor(konstruktori1, osoittaja); | |
return ReflectionUtils.invokeMethod(int.class, metodi, murtoluku); | |
} catch (Throwable t) { | |
fail("Virhe joka on jo catchattu."); | |
return 0; | |
} | |
} | |
/** | |
* Testaa, että nimittajan hakeminen toimii kahden parametrin konstruktorilla. | |
*/ | |
@Test | |
@Points("1.2.1") | |
public void haeNimittajaToimiiKahdenParametrinKonstruktorilla() { | |
haeNimittajaToimii(21, 7); | |
haeNimittajaToimii(5, 4); | |
haeNimittajaToimii(4, -5); | |
} | |
private void haeNimittajaToimii(int osoittaja, int nimittaja) { | |
int haettuNimittaja = haeNimittaja(osoittaja, nimittaja); | |
assertFalse("haeNimittaja-metodi palautti osoittajan. Testattiin kahden parametrin konstruktoria.", haettuNimittaja == osoittaja); | |
assertTrue("Haettu nimittaja oli " + haettuNimittaja + " kun sen piti olla " + nimittaja + ". Testattiin kahden parametrin konstruktoria.", haettuNimittaja == nimittaja); | |
} | |
public int haeNimittaja(int osoittaja, int nimittaja) { | |
Method metodi = haeMetodi("haeNimittaja"); | |
try { | |
Object murtoluku = ReflectionUtils.invokeConstructor(konstruktori2, osoittaja, nimittaja); | |
return ReflectionUtils.invokeMethod(int.class, metodi, murtoluku); | |
} catch (Throwable t) { | |
fail("Virhe joka on jo catchattu."); | |
return 0; | |
} | |
} | |
/** | |
* Testaa, että nimittajan hakeminen toimii yhden parametrin konstruktorilla. | |
*/ | |
@Test | |
@Points("1.2.1") | |
public void haeNimittajaToimiiYhdenParametrinKonstruktorilla() { | |
haeNimittajaToimii(6); | |
haeNimittajaToimii(10); | |
haeNimittajaToimii(-5); | |
} | |
private void haeNimittajaToimii(int osoittaja) { | |
int haettuNimittaja = haeNimittaja(osoittaja); | |
assertFalse("haeNimittaja-metodi palautti osoittajan. Testattiin yhden parametrin konstruktoria.", haettuNimittaja == osoittaja); | |
assertTrue("Haettu nimittaja oli " + haettuNimittaja + " kun sen piti olla 1. Testattiin yhden parametrin konstruktoria.", haettuNimittaja == 1); | |
} | |
public int haeNimittaja(int osoittaja) { | |
Method metodi = haeMetodi("haeNimittaja"); | |
try { | |
Object murtoluku = ReflectionUtils.invokeConstructor(konstruktori1, osoittaja); | |
return ReflectionUtils.invokeMethod(int.class, metodi, murtoluku); | |
} catch (Throwable t) { | |
fail("Virhe joka on jo catchattu."); | |
return 0; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment