;; -*- compile-command: "guile -L . dhhieft-test.scm"; -*- (use-modules (srfi srfi-64) (dhhieft)) (test-begin "harness") (test-equal "string->vowels none" "" (string->vowels "")) (test-equal "string->vowels vowels" "aeiou" (string->vowels "aeiou")) (test-equal "string->vowels single consonant" "" (string->vowels "x")) (test-equal "string->vowels mix" "uoiea" (string->vowels "uywoigxebwa")) (test-assert "three-vowels? empty string" (not (three-vowels? ""))) (test-assert "three-vowels? two vowels" (not (three-vowels? "axkoh"))) (test-assert "three-vowels? exactly three vowels" (three-vowels? "axkioh")) (test-assert "three-vowels? four vowels" (three-vowels? "axkiohe")) (test-assert "three-vowels? uppercase vowels" (three-vowels? "AXKIOHE")) (test-assert "repeated-char? empty string" (not (repeated-char? "" 0))) (test-assert "repeated-char? single char" (not (repeated-char? "a" 0))) (test-assert "repeated-char? single repeat" (repeated-char? "aa" 0)) (test-assert "repeated-char? single repeat other" (repeated-char? "xx" 0)) (test-assert "repeated-char? single repeat break" (not (repeated-char? "a?a" 0))) (test-assert "repeated-char? needle-in-hay" (repeated-char? "ugknbfddgicrmopn" 0)) (test-assert "favorable? ugknbfddgicrmopn" (favorable-string? "ugknbfddgicrmopn" #f)) (test-assert "favorable? aaa" (favorable-string? "aaa" #f)) (test-assert "favorable? jchzalrnumimnmhp" (not (favorable-string? "jchzalrnumimnmhp" #f))) ;; no double letter (test-assert "favorable? habegwjzuzvuyypu" (not (favorable-string? "habegwjzuzvuyypu" #f))) ;; contains ab (test-assert "favorable? hacdegwzuvuyypxu" (not (favorable-string? "hacdegwzuvuyypxu" #f))) ;; contains cd (test-assert "favorable? haegwjzuvuqyypqu" (not (favorable-string? "haegwjzuvuqyypqu" #f))) ;; contains pq (test-assert "favorable? haegwjzuvuyypxyu" (not (favorable-string? "haegwjzuvuyypxyu" #f))) ;; contains xy (test-assert "favorable? dvszwmarrgswjxmb" (not (favorable-string? "dvszwmarrgswjxmb" #f))) ;; single vowel (test-equal "file run through" 2 (dhhieft " ugknbfddgicrmopn aaa jchzalrnumimnmhp haegwjzuvuyypxyu dvszwmarrgswjxmb" #f)) (test-assert "repeated-char? over-extend-lookahead" (not (repeated-char? "a" 3))) (test-assert "repeated-char? single gap false" (not (repeated-char? "aab" 1))) (test-assert "repeated-char single gap simple" (repeated-char? "aba" 1)) (test-assert "repeated-char double gap simple false" (not (repeated-char? "acab" 2))) (test-assert "repeated-char double gap simple" (repeated-char? "acba" 2)) (test-assert "repeated-char double gap simple" (repeated-char? "acba" 2)) (test-assert "repeated-char single gap needle in hay" (repeated-char? "abcdefeghi" 1)) (test-assert "long-distance-match? empty" (not (long-distance-match? ""))) (test-assert "long-distance-match? single char" (not (long-distance-match? "a"))) (test-assert "long-distance-match? single repeat" (not (long-distance-match? "aa"))) (test-assert "long-distance-match? match but shared" (not (long-distance-match? "aaa"))) (test-assert "long-distance-match? simple match" (long-distance-match? "abab")) (test-assert "long-distance-match? match alongside share" (long-distance-match? "aaaa")) (test-assert "long-distance-match? simple fail" (not (long-distance-match? "aaba"))) (test-assert "long-distance-match? far match" (long-distance-match? "aabcdefgaa")) (test-assert "long-distance-match? needle-in-haystack match" (long-distance-match? "qjhvhtzxzqqjkmpb")) (test-assert "long-distance-match? needle-in-haystack no match" (not (long-distance-match? "ieodomkazucvgmuy"))) (test-assert "favorable? p2 meets none" (not (favorable-string? "" #t))) (test-assert "favorable? p2 no long-distance match" (not (favorable-string? "ieodomkazucvgmuy" #t))) (test-assert "favorable? p2 no repeat-char" (not (favorable-string? "uurcxstgmygtbstg" #t))) (test-assert "favorable? p2 meets all" (favorable-string? "qjhvhtzxzqqjkmpb" #t)) (test-assert "favorable? p2 meets all other" (favorable-string? "xxyxx" #t)) (test-equal "file run through p2" 3 (dhhieft " aaaa qjhvhtzxzqqjkmpb xxyxx uurcxstgmygtbstg ieodomkazucvgmuy" #t)) (test-end "harness")