Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 10 / 15 Maišos lentelės ~50 min
Kodas

Matavimo aplinka ir testai

Trys failai vienu žingsniu, kaip įprasta: matavimo aplinka, testai ir dvi naujos komandos main.go.

algo index pastato indeksą, išspausdina jo formą (kibirai, apkrova, grandinėlės) ir tada suranda kiekvieną pavadinimą — pirma per indeksą, paskui pirmos pamokos tiesine paieška, kad skaičius turėtų mastelį.

algo ordered — aštunto žingsnio klausimas. Ji nieko nematuoja; ji parodo, ko indeksas neturi.

Testai (hash_test.go) tikrina keturis dalykus:

testas ką reikalauja
TestHashIndexStoresAndFinds randa visus įdėtus, neranda neįdėto
TestDuplicateKeysReplaceRatherThanAccumulate vienodas raktas pakeičia, nekaupia
TestResizeKeepsTheLoadFactorBounded apkrova ≤ 1.0 ir < 4 palyginimai vienam ieškojimui
TestKeysAreNotInAnyUsefulOrder Keys() NĖRA surikiuotas

Paskutinis atrodo keistai — testas, reikalaujantis, kad kažkas nebūtų surikiuota. Bet jis saugo pamokos pabaigą lygiai taip pat, kaip septintos ir aštuntos pamokų testai saugojo ten pademonstruotus trūkumus. Jei kada nors pakeisi Keys() taip, kad grąžintų rikiuotą sąrašą, testas pasakys, ką praradai: indekso pažadas nėra „grąžinsiu tvarka", ir remtis atsitiktine sėkme negalima.