38 lines
925 B
Gleam
38 lines
925 B
Gleam
import gleeunit
|
|
import lancaster_stemmer
|
|
import simplifile
|
|
import splitter
|
|
|
|
pub fn main() -> Nil {
|
|
gleeunit.main()
|
|
}
|
|
|
|
// gleeunit test functions end in `_test`
|
|
pub fn hello_world_test() {
|
|
let line_split = splitter.new(["\n", "\r\n"])
|
|
let row_split = splitter.new([" ", "\t"])
|
|
let rules = lancaster_stemmer.default_rules()
|
|
let assert Ok(tests) = simplifile.read("./test/wordlist.txt")
|
|
run_test(tests, line_split, row_split, rules)
|
|
}
|
|
|
|
fn run_test(
|
|
tests: String,
|
|
line_split: splitter.Splitter,
|
|
row_split: splitter.Splitter,
|
|
rules: lancaster_stemmer.Rules,
|
|
) -> Nil {
|
|
case splitter.split(line_split, tests) {
|
|
#("", "", "") -> Nil
|
|
#(line, _, rest) -> {
|
|
case splitter.split(row_split, line) {
|
|
#("", "", "") -> Nil
|
|
#(word, _, stem) -> {
|
|
assert lancaster_stemmer.stem(word, rules) == stem
|
|
}
|
|
}
|
|
run_test(rest, line_split, row_split, rules)
|
|
}
|
|
}
|
|
}
|