Compare commits

...

2 Commits

Author SHA1 Message Date
Juhani Krekelä db99ada4dd Anna verrata Array:tä testeissä 2023-08-07 17:56:48 +03:00
Juhani Krekelä 159d7b829e Tyylitä ruudut 2023-08-03 18:11:56 +03:00
4 changed files with 57 additions and 33 deletions

View File

@ -14,8 +14,17 @@
.luokka-aste-lomake { .luokka-aste-lomake {
display: inline; display: inline;
} }
.piilotettu { .ruutu {
display: none; margin: 0.2em;
border-width: 1px;
border-style: solid;
}
.ruutu > summary {
padding: 0 0.5em;
background-color: #ccc;
}
.ruutu > div {
padding: 0.5em 0.5em 0;
} }
.luokka-aste-kenttä { .luokka-aste-kenttä {
width: 3em; width: 3em;
@ -31,15 +40,21 @@
margin: 0 0.5em; margin: 0 0.5em;
display: inline; display: inline;
} }
.piilotettu {
display: none;
}
</style> </style>
</head> </head>
<body lang="fi"> <body lang="fi">
<input id="kumoa" type="button" value="Kumoa"> <input id="kumoa" type="button" value="Kumoa">
<input id="tee-uudelleen" type="button" value="Tee uudelleen"> <input id="tee-uudelleen" type="button" value="Tee uudelleen">
<details class="ruutu" id="luokat" open> <details class="ruutu" id="luokat" open>
<summary>Luokat</summary> <summary>Luokat</summary>
<input id="lisää-luokka-aste" type="button" value="+ Aste"> <div>
<ul id="luokka-asteet"></ul> <input id="lisää-luokka-aste" type="button" value="+ Aste">
<ul id="luokka-asteet"></ul>
</div>
</details> </details>
<script src="testit.js"></script> <script src="testit.js"></script>

View File

@ -5,14 +5,28 @@ function testi(nimi, funktio) {
testit.push([nimi, funktio]); testit.push([nimi, funktio]);
} }
function ovatkoSama(a, b) {
// Strukturaalinen yhteneväisyysvertaus Array:lle
if (a instanceof Array && b instanceof Array && a.length === b.length) {
for (let i = 0; i < a.length; i++) {
if (!ovatkoSama(a[i], b[i])) {
return false;
}
}
return true;
} else {
return a === b;
}
}
function assertEq(konteksti, a, b) { function assertEq(konteksti, a, b) {
if (a !== b) { if (!ovatkoSama(a, b)) {
throw new Error(`${konteksti}: ${a}, pitäisi olla ${b}`); throw new Error(`${konteksti}: ${a}, pitäisi olla ${b}`);
} }
} }
function assertNe(konteksti, a, b) { function assertNe(konteksti, a, b) {
if (a === b) { if (ovatkoSama(a, b)) {
throw new Error(`${konteksti}: ei tulisi olla ${b}`); throw new Error(`${konteksti}: ei tulisi olla ${b}`);
} }
} }

View File

@ -120,19 +120,19 @@ testi('kumoamiminen', () => {
suorita(tapahtumaTyypit.lisääAste); suorita(tapahtumaTyypit.lisääAste);
suorita(tapahtumaTyypit.lisääLuokka, 2); suorita(tapahtumaTyypit.lisääLuokka, 2);
suorita(tapahtumaTyypit.lisääLuokka, 1); suorita(tapahtumaTyypit.lisääLuokka, 1);
assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'ABC'); assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B', 'C']);
assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']);
kumoa(); kumoa();
assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']);
kumoa(); kumoa();
assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']);
kumoa(); kumoa();
assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2], undefined); assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2], undefined);
kumoa(); kumoa();
assertEq('neljästi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'A'); assertEq('neljästi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A']);
kumoa(); kumoa();
assertEq('viidesti 1. aste', luokkaAsteet.asteet[1], undefined); assertEq('viidesti 1. aste', luokkaAsteet.asteet[1], undefined);
alustaMalli(); alustaMalli();
@ -149,18 +149,18 @@ testi('uudelleen tekeminen', () => {
kumoa(); kumoa();
kumoa(); kumoa();
kumoa(); kumoa();
assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'A'); assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A']);
assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']);
teeUudelleen(); teeUudelleen();
assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']);
teeUudelleen(); teeUudelleen();
assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']);
suorita(tapahtumaTyypit.lisääLuokka, 1); suorita(tapahtumaTyypit.lisääLuokka, 1);
teeUudelleen(); teeUudelleen();
assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'ABC'); assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B', 'C']);
assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']);
alustaMalli(); alustaMalli();
}); });
@ -177,10 +177,10 @@ testi('asteiden käsittely', () => {
testi('luokkien käsittely', () => { testi('luokkien käsittely', () => {
alustaMalli(); alustaMalli();
suorita(tapahtumaTyypit.lisääAste); suorita(tapahtumaTyypit.lisääAste);
assertEq('aluksi', luokkaAsteet.asteet[1].luokat().join(''), 'A'); assertEq('aluksi', luokkaAsteet.asteet[1].luokat(), ['A']);
suorita(tapahtumaTyypit.lisääLuokka, 1); suorita(tapahtumaTyypit.lisääLuokka, 1);
assertEq('lisättyä', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); assertEq('lisättyä', luokkaAsteet.asteet[1].luokat(), ['A', 'B']);
suorita(tapahtumaTyypit.poistaLuokka, 1); suorita(tapahtumaTyypit.poistaLuokka, 1);
assertEq('poistettua', luokkaAsteet.asteet[1].luokat().join(''), 'A'); assertEq('poistettua', luokkaAsteet.asteet[1].luokat(), ['A']);
alustaMalli(); alustaMalli();
}); });

View File

@ -120,14 +120,10 @@ testi('asteiden muuttaminen', () => {
testi('luokkien lisääminen', () => { testi('luokkien lisääminen', () => {
let luokkaAsteet = new LuokkaAsteet(); let luokkaAsteet = new LuokkaAsteet();
let aste = luokkaAsteet.asteet[luokkaAsteet.lisää()]; let aste = luokkaAsteet.asteet[luokkaAsteet.lisää()];
assertEq('aluksi pituus', aste.luokat().length, 1); assertEq('aluksi', aste.luokat(), ['A']);
assertEq('aluksi', aste.luokat()[0], 'A');
aste.lisää(); aste.lisää();
aste.lisää(); aste.lisää();
assertEq('lisättyä pituus', aste.luokat().length, 3); assertEq('lisättyä', aste.luokat(), ['A', 'B', 'C']);
assertEq('lisättyä[0]', aste.luokat()[0], 'A');
assertEq('lisättyä[1]', aste.luokat()[1], 'B');
assertEq('lisättyä[2]', aste.luokat()[2], 'C');
}); });
testi('luokkien poistaminen', () => { testi('luokkien poistaminen', () => {
@ -140,6 +136,5 @@ testi('luokkien poistaminen', () => {
assertThrow('viimeisen poisto', 'viimeistä luokkaa ei voi poistaa asteelta', () => { assertThrow('viimeisen poisto', 'viimeistä luokkaa ei voi poistaa asteelta', () => {
aste.poista(); aste.poista();
}); });
assertEq('poistettua pituus', aste.luokat().length, 1); assertEq('poistettua', aste.luokat(), ['A']);
assertEq('poistettua', aste.luokat()[0], 'A');
}); });