Määrä ja valuutta>10 s[RET] 10.00 Skr on 6.00 mk. Määrä ja valuutta>2[RET] 2.00 Skr on 1.20 mk. Määrä ja valuutta>[RET] Kiitos!
Anna komento>Ynnää 3 4 5[RET] Tulos on 12. Anna komento>Isoksi kana[RET] kana isona on KANA Anna komento>palindromiko saippuakivikauppias[RET] Sana "saippuakivikauppias" on palindromi! Anna komento>Ynnää 2 1[RET] Tulos on 3. Anna komento>Yn 2 1[RET] Tulos on 3. Anna komento>Yh 2 1[RET] En tunne komentoa YH! Anna komento>[RET]
public interface KomentoRajapinta {
boolean suorita(String parametrit);
}
public static class Ynnaa implements KomentoRajapinta { ...
public static class Apua implements KomentoRajapinta { ...
public static class Palindromiko implements KomentoRajapinta { ...
public static class Isoksi implements KomentoRajapinta { ...
... luokkia Komento ja Komennot (sis. mm. metodin: etsi) ...
public static void main(String[] args) {
Komennot komennot = new Komennot();
Apua apua = new Apua("komento.txt");
komennot.add(new Komento("?",apua));
komennot.add(new Komento("apua",apua));
komennot.add(new Komento("+",new Ynnaa()));
komennot.add(new Komento("ynnää",new Ynnaa()));
komennot.add(new Komento("isoksi",new Isoksi()));
komennot.add(new Komento("palindromiko",new Palindromiko()));
String s;
while ( true ) {
s = Syotto.kysy("Anna komento");
if ( s.equals("") ) break;
komennot.tulkitse(s);
}
}
Tee esim. JBuilderillä JUnit yksikkötesti Kello-luokan
testaamiseksi:
1) File/New/Test/Test Case
2) Etsi luokaksi Kello ja sen metodiksi tarkista
3) Vastaile muihin oletukset
4) Muuta luokka seuraavan näköiseksi:
import junit.framework.*;
/**
* Testiohjelma kellon tarkistamiseksi
* @author Vesa Lappalainen
* @version 1.0, 2.04.2005
*/
public class TestKello extends TestCase {
private static final String testi[][] = {
{"12:23:00.05" , null},
{"kissa" , "Vääriä merkkejä jonossa"},
{"12:23:" , null},
{"12 23" , "Vääriä merkkejä jonossa"},
{"12k23" , "Vääriä merkkejä jonossa"},
{"12:30" , null},
{"25:30" , "Tunnit väärin"},
{"12:65" , "Minuutit väärin"},
{"12:59:78" , "Sekunnit väärin"},
{"12:23:00.0.0" , "Vääriä merkkejä jonossa"},
{"12:59:10.1000" , null},
{"12" , null},
{"" , "Jono tyhjä"}
};
public void testTarkista() {
Kello kello = new Kello();
for (int i=0; i<testi.length; i++ )
assertEquals("palautus väärin", testi[i][1],
kello.tarkista(testi[i][0]));
}
}
5) Aja testiohjelma ja korjaa tarvittaessa Kello-luokkaasi.
/**
* Method that is needed when getting reservationids from tables,
* compressed values (etc. 1,2,3) are separated to different rows in
* String array
* @param arrayWithCommaValues array that has ids separated with commas
* in one row
* @return String array in which comma separated values are separated
*/
public static String[] getSeparatedArray(String[] arrayWithCommaValues) {
List resList = new ArrayList();
String[] reservations2 = new String[0];
if (arrayWithCommaValues != null) {
for (int i = 0; i < arrayWithCommaValues.length; i++) {
String[] tmpReservations = arrayWithCommaValues[i].split(",");
if (tmpReservations != null) {
for (int j = 0; j < tmpReservations.length; j++) {
resList.add(tmpReservations[j]);
}
}
}
reservations2 = new String[resList.size()];
for (int i = 0; i < resList.size(); i++) {
reservations2[i] = (String) resList.get(i);
}
}
return reservations2;
}