Testy umoznuju testovat dva typy implementacie:
- Na uzavrenom gride (ziadny wrap-around), teda mimo vstupneho pola je vzdy nula.
- S wrap-around - lavy sused prvej bunky je posledna bunka v tomto radku atp.
- Python 3
- Naklonujte repozitar.
- Skopirujte
life.cpp
atest.sh
do kumain.py
do jednej zlozky - Nastavte
WRAP_AROUND
vmain.py
naTrue
, ak vasa binarka implementuje wrap-around. - Nastavte
SORT_OUTPUT
vmain.py
naTrue
, ak vasa binarka generuje nesyncuje printy medzi procesmi - Spustite
python3 main.py
- Vygenerovanie testcase-ov podla parametrov v
main.py
- Spustia sa vsetky mozne prednastavene konfiguracie parametrov:
np
- pocet procesov s ktorym sa spusta binarkait
- pocet iteracii od inicialneho stavu
- Pomocou
sed
sa vymaze zaciatok riadku vystupu binarky obsahujucirank_id:
a ponecha sa iba zvysok riadku - Porovna sa referencny vystup s upravenym z binarky
-
Pri neuspesnom teste (referencny vystup
i_{idx}.txt
!=case_{test_id}_np_{n_processes}_it_{iterations}.out
) sa rozdiel suborov ulozi docase_{idx}/difference
a python skript na to upozorni nastdout
za behu. -
Vsetky medzivysledky (stdout/stderr z binarky) sa ukladaju do zlozky daneho test case-u pod nazvom:
case_{test_id}/case_{test_id}_np_{n_processes}_it_{iterations}.out/.err
kde:test-id
- id test case-un_processes
- pocet procesov pri spusteniiterations
- pocet iteracii pri spusteni
Takze k neuspesnym testom sa da vratit a skusit ich spusti manualne, pripadne porovnat vysledky rucne atd.
-
Testy su IBA orientacne.
-
Testy uplne ignoruju zaciatky riadkov obsahujuce
rank_id:
, kedze toto je velmi zavisle od zvolenej implementacie. Ak nemate zapnuteSORT_OUTPUT
- v tom pripade, sa riadky zoradia stabilnym sort algoritmom len podla ranku na zaciatku riadka. -
Neviem ako budu testy fungovat na wine, ked tak niekto poslite PR s fixom.
Skript generuje subory input.txt
a nasledne stav po kazdej iteracii pre zadany pocet iteracii. Na konci kazdeho zo suborov je newline.
Vygeneruje sa struktura suborov:
-
zlozka
./tests/
-
case_{id}/
podzlozka pre jednotlive test casesinput.txt
inicialny stav pola:001000 011001 001100 010110 100001 001010 110111 011001
i_{it}.txt
referencny stav pola poit
pocte iteracii (napr.i_1.txt
):011000 010000 000000 010110 011001 101000 100001 111101
-