From db99ada4dd1931d626b32b81772dedced4e8c5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Mon, 7 Aug 2023 17:56:48 +0300 Subject: [PATCH] =?UTF-8?q?Anna=20verrata=20Array:t=C3=A4=20testeiss=C3=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testit.js | 18 ++++++++++++++++-- tietomalli.js | 38 +++++++++++++++++++------------------- tietotyypit.js | 11 +++-------- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/testit.js b/testit.js index 0bb4b09..f6f2819 100644 --- a/testit.js +++ b/testit.js @@ -5,14 +5,28 @@ function testi(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) { - if (a !== b) { + if (!ovatkoSama(a, b)) { throw new Error(`${konteksti}: ${a}, pitäisi olla ${b}`); } } function assertNe(konteksti, a, b) { - if (a === b) { + if (ovatkoSama(a, b)) { throw new Error(`${konteksti}: ei tulisi olla ${b}`); } } diff --git a/tietomalli.js b/tietomalli.js index c6d822e..63d292b 100644 --- a/tietomalli.js +++ b/tietomalli.js @@ -120,19 +120,19 @@ testi('kumoamiminen', () => { suorita(tapahtumaTyypit.lisääAste); suorita(tapahtumaTyypit.lisääLuokka, 2); suorita(tapahtumaTyypit.lisääLuokka, 1); - assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'ABC'); - assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); + assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B', 'C']); + assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']); kumoa(); - assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); - assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); + assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']); + assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']); kumoa(); - assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); - assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); + assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']); + assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']); 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); kumoa(); - assertEq('neljästi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'A'); + assertEq('neljästi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A']); kumoa(); assertEq('viidesti 1. aste', luokkaAsteet.asteet[1], undefined); alustaMalli(); @@ -149,18 +149,18 @@ testi('uudelleen tekeminen', () => { kumoa(); kumoa(); kumoa(); - assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'A'); - assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); + assertEq('aluksi 1. aste', luokkaAsteet.asteet[1].luokat(), ['A']); + assertEq('aluksi 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']); teeUudelleen(); - assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); - assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'A'); + assertEq('kerran 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']); + assertEq('kerran 2. aste', luokkaAsteet.asteet[2].luokat(), ['A']); teeUudelleen(); - assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'AB'); - assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); + assertEq('kahdesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B']); + assertEq('kahdesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']); suorita(tapahtumaTyypit.lisääLuokka, 1); teeUudelleen(); - assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat().join(''), 'ABC'); - assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2].luokat().join(''), 'AB'); + assertEq('kolmesti 1. aste', luokkaAsteet.asteet[1].luokat(), ['A', 'B', 'C']); + assertEq('kolmesti 2. aste', luokkaAsteet.asteet[2].luokat(), ['A', 'B']); alustaMalli(); }); @@ -177,10 +177,10 @@ testi('asteiden käsittely', () => { testi('luokkien käsittely', () => { alustaMalli(); suorita(tapahtumaTyypit.lisääAste); - assertEq('aluksi', luokkaAsteet.asteet[1].luokat().join(''), 'A'); + assertEq('aluksi', luokkaAsteet.asteet[1].luokat(), ['A']); 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); - assertEq('poistettua', luokkaAsteet.asteet[1].luokat().join(''), 'A'); + assertEq('poistettua', luokkaAsteet.asteet[1].luokat(), ['A']); alustaMalli(); }); diff --git a/tietotyypit.js b/tietotyypit.js index 6e66e42..2f0f9c5 100644 --- a/tietotyypit.js +++ b/tietotyypit.js @@ -120,14 +120,10 @@ testi('asteiden muuttaminen', () => { testi('luokkien lisääminen', () => { let luokkaAsteet = new LuokkaAsteet(); let aste = luokkaAsteet.asteet[luokkaAsteet.lisää()]; - assertEq('aluksi pituus', aste.luokat().length, 1); - assertEq('aluksi', aste.luokat()[0], 'A'); + assertEq('aluksi', aste.luokat(), ['A']); aste.lisää(); aste.lisää(); - assertEq('lisättyä pituus', aste.luokat().length, 3); - assertEq('lisättyä[0]', aste.luokat()[0], 'A'); - assertEq('lisättyä[1]', aste.luokat()[1], 'B'); - assertEq('lisättyä[2]', aste.luokat()[2], 'C'); + assertEq('lisättyä', aste.luokat(), ['A', 'B', 'C']); }); testi('luokkien poistaminen', () => { @@ -140,6 +136,5 @@ testi('luokkien poistaminen', () => { assertThrow('viimeisen poisto', 'viimeistä luokkaa ei voi poistaa asteelta', () => { aste.poista(); }); - assertEq('poistettua pituus', aste.luokat().length, 1); - assertEq('poistettua', aste.luokat()[0], 'A'); + assertEq('poistettua', aste.luokat(), ['A']); });