Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Nedenfor følger eksempler på jextext-kode, hentet fra oppgaver på wiki'n.

Code Block
test stateandbehavior.Account

sequence constructor "Konstruktør" {
	-->
	state {
		balance == 0;
	}
}

sequence deposit "Innskudd" {
	"Setter inn 100 kr." -- deposit(100) -->
	state {
		balance == 100;
	}
}

sequence depositNegative "Negativt innskudd" {
	"Setter inn -50 kr." -- deposit(-50) -->
	state {
		balance == 0;
	}
}

sequence addInterest "Legge til renter" {
	"Setter rentefoten" -- interestRate = 5 -->
	state {
		balance == 0;
		interestRate == 5;
	}
	"Setter inn 100 kr." -- deposit(100) -->
	state {
		balance == 100;
	}
	-- addInterest -->
	state {
		balance == 105;
	}
}

method == (double d1, double d2) {
	val epsilon = 0.000001d
	d1 >= d2 - epsilon && d1 <= d2 + epsilon
}

 

 

Account-oppgaven

Denne jextest-koden tester Account-klassen i pakken stateandbehavior.

Siden det ikke er noen instance-deklarasjon så defineres en instans av Account med account som navn. Denne blir implisitt i state-blokkene i testene.

Nederst defineres en hjelpemetode, som redefinerer ==-operatoren for double-verdier. Dette gjør at alle testene av balance og interestRate, som begge er double-verdier, kaller denne metoden og i praksis tar høyde for avrundingsfeil.

constructor-sekvensen  sjekker bare den initielle tilstanden til den implisitte Account-instansen og vi bruker derfor -->-notasjonen.

deposit-sekvensen sjekker tilstanden etter et kall til deposit(100) på den implisitte Account-instansen.

depositNegative-sekvensen sjekker tilstanden etter et kall til deposit(-50) på den implisitte Account-instansen, som i dette tilfellet skal være uendret.

addInterest-sekvensen setter først rentefoten med en tilordning. I denne oppgaven legger vi opp til at det ikke brukes synlighetsmodifikatorer, så dette er enkel tilordning av interesRate-feltet. Deretter kalles deposit(100) og addInterest. Etter begge disse trinnene sjekkes at tilstanden er korrekt.

 

 

 

HTML Include
urlhttps://github.com/hallvard/jexercise/blob/master/no.hal.jex.collection/tests/stateandbehavior/Account.jextest

 

Account-oppgaven

Her forklarer vi koden i mer detalj...