1 module fuzzyd_test; 2 3 import std.stdio; 4 import std.algorithm; 5 import std.algorithm.comparison : equal; 6 7 import fuzzyd; 8 9 Result[] prepare(string s) { 10 string[] source = ["cd Documents", 11 "curl localhost/foo", 12 "cp bar ../foo", 13 "rm -rf Downloads", 14 "vi ~/Documents"]; 15 return fuzzy(source)(s); 16 } 17 18 @("Matches in expected order") 19 unittest { 20 auto result = prepare("docts").map!(x => x.value); 21 auto expected = ["cd Documents", 22 "vi ~/Documents", 23 "curl localhost/foo", 24 "rm -rf Downloads", 25 "cp bar ../foo"]; 26 assert(equal(expected, result)); 27 } 28 29 @("Matches indexes") 30 unittest { 31 auto result = prepare("docts")[0].matches; 32 auto expected = [0, 1, 3, 4, 5, 10, 11]; 33 assert(equal(expected, result)); 34 } 35 36 @("Start bonus is applyed") 37 unittest { 38 auto result = prepare("curl")[0].score; 39 assert(61 == result); 40 } 41 42 @("Case bonus is applyed") 43 unittest { 44 auto r1 = prepare("docts")[0].score; 45 auto r2 = prepare("Docts")[0].score; 46 assert(r1 == 27); 47 assert(r2 == 34); 48 } 49 50 @("Word boundary bonus is applyed") 51 unittest { 52 auto result = prepare("cd")[0].score; 53 assert(14 == result); 54 } 55