Lisää .luokat() metodi LuokkaAsteet-olioon

This commit is contained in:
Juhani Krekelä 2023-08-08 17:13:11 +03:00
parent 502ff75f0f
commit 619687da2e
1 changed files with 15 additions and 0 deletions

View File

@ -26,6 +26,18 @@ class LuokkaAste {
class LuokkaAsteet {
asteet = [];
luokat() {
let luokat = [];
for (let aste = 0; aste < this.asteet.length; aste++) {
if (this.asteet[aste] !== undefined) {
for (let luokka of this.asteet[aste].luokat()) {
luokat.push(`${aste}${luokka}`);
}
}
}
return luokat;
}
seuraavaAste() {
// Seuraava aste on yksi suurinta listassa jo olevaa astetta isompi, tai
// 1 jos listassa ei vielä ole asteita
@ -121,6 +133,7 @@ testi('asteiden lisääminen', () => {
assertThrow('3. aste uudelleen', 'luokka-aste 3 on jo olemassa', () => {
luokkaAsteet.lisää(3);
});
assertEq('lisättyä', luokkaAsteet.luokat(), ['1A', '2A', '3A']);
});
testi('asteiden poistaminen', () => {
@ -132,12 +145,14 @@ testi('asteiden poistaminen', () => {
assertThrow('3. asteen poisto', 'luokka-astetta 3 ei ole olemassa', () => {
luokkaAsteet.poista(3);
});
assertEq('poistettua', luokkaAsteet.luokat(), []);
});
testi('asteiden muuttaminen', () => {
let luokkaAsteet = new LuokkaAsteet();
assertEq('lisääminen', luokkaAsteet.lisää(), 1);
luokkaAsteet.muuta(1, 5);
assertEq('muutettua', luokkaAsteet.luokat(), ['5A']);
assertThrow('poisto', 'luokka-astetta 1 ei ole olemassa', () => {
luokkaAsteet.poista(1);
});