Compare commits
2 Commits
643c68dc2c
...
db99ada4dd
Author | SHA1 | Date |
---|---|---|
Juhani Krekelä | db99ada4dd | |
Juhani Krekelä | 159d7b829e |
23
index.html
23
index.html
|
@ -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>
|
||||||
|
|
18
testit.js
18
testit.js
|
@ -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}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
});
|
});
|
||||||
|
|
|
@ -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');
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue