import org.junit.Test;
import français.UneChaine;
import static français.MéthodesUtilitairesDeTests.*;
import static français.Chaines.*;
import static français.Types.*;
import static français.Boucles.*;
public class PremierPasAvecLeLangageJava {
@Test public void
enJavaOnDitQueLesVariablesOntUnType() {
parExemple( 1, est( unEntier() ) );
parExemple( "Salut", est( uneChaine() ) );
parExemple( "a", est( uneChaine() ) );
parExemple( 'a', est( unCaractère() ) );
parExemple( 1.0, nEstPas( unEntier() ) );
pourLui( 1.0, est( unDecimal() ) );
}
@Test public void
leTypeJavaPourStockerDesChainesEstAppeléString() {
String salutations = "Bonjour cher lecteur";
pourLui( salutations, est( uneChaine() ) );
}
@Test public void
leTypeJavaPourStockerDesEntierEstAppeléInteger() {
Integer exemple = 42;
pourLui( exemple, est( unEntier() ) );
}
@Test public void
onPeutDemanderALordinateurLaLonguerDUneChaine() {
parExemple( laLongueurDe( "Salut" ), est( 5 ) );
parExemple( laLongueurDe( "Coucou" ), est( 6 ) );
parExemple( laLongueurDe( "Bonjour" ), est( 7 ) );
}
@Test public void
onPeutDemanderALOrdinateurDExtraireUnCaractèreParticulierDUneChaine() {
parExemple( leCaractère( 2 ).deLaChaine( "Salut" ), est( "a" ) );
parExemple( leCaractère( 3 ).deLaChaine( "Salut" ), est( "l" ) );
parExemple( leCaractère( 4 ).deLaChaine( "Coucou" ), est( "c" ) );
parExemple( leCaractère( 1 ).deLaChaine( "Allo" ), est( "A" ) );
}
@Test public void
dansLesChainesOnFaitLaDifférenceEntreLesMinusculesEtLesMajuscules() {
parExemple( leCaractère( 1 ).deLaChaine( "Coucou" ), nEstPas( "c" ) );
parExemple( leCaractère( 1 ).deLaChaine( "Coucou" ), est( "C" ) );
}
@Test public void
déjàAvecCaOnPeutJouerAInverserUneChaine() {
String premierCaractère = leCaractère( 1 ).deLaChaine( "le" );
String secondCaractère = leCaractère( 2 ).deLaChaine( "le" );
String chaineInversée = secondCaractère + premierCaractère;
alors( chaineInversée, vaut( "el" ) );
}
@Test public void
onPeutInverserUnePlusGrandeChaine() {
String premierCaractère = leCaractère( 1 ).deLaChaine( "Bilou" );
String secondCaractère = leCaractère( 2 ).deLaChaine( "Bilou" );
String troisièmeCaractère = leCaractère( 3 ).deLaChaine( "Bilou" );
String quatrièmeCaractère = leCaractère( 4 ).deLaChaine( "Bilou" );
String cinquièmeCaractère = leCaractère( 5 ).deLaChaine( "Bilou" );
String chaineInversée = cinquièmeCaractère + quatrièmeCaractère
+ troisièmeCaractère + secondCaractère + premierCaractère;
alors( chaineInversée, vaut( "uoliB" ) );
}
@Test public void
pourInverserUneTrèsGrandeChaineOnPeutUtiliserCeQuOnAppelleDesBoucles() {
final UneChaine inversé = new UneChaine();
pourChaque(
indexDecroissantDeLaChaine( "Bilou aime les nouilles" ),
new Fait() {
public void çaAvec(int index, String cible) {
ajoute( leCaractère( index ).deLaChaine( cible ) )
.àLaChaine( inversé );
}
} );
alors( inversé, vaut( "selliuon sel emia uoliB" ) );
}
@Test public void
maisJavaEstUnLangageQuiParleAnglaisEtParExempleOnPeutPlusFacilementDécrireUneBoucleAvecLeMotWhileQuiVeutDireTantQue() {
String exemple = "Bilou aime les nouilles";
String inversé = "";
Integer index = laLongueurDe( exemple );
while (index > 0) {
inversé += leCaractère( index ).deLaChaine( exemple );
index -= 1;
}
alors( inversé, vaut( "selliuon sel emia uoliB" ) );
}
}