diff --git a/build.zig b/build.zig index 66809ff69213c3124e824ad35e340316126c0f8d..1fd32f88738934575276b17d46f822a4deb03b37 100644 --- a/build.zig +++ b/build.zig @@ -22,4 +22,16 @@ pub fn build(b: *std.Build) void { const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); + + const tests = b.addTest(.{ + .root_source_file = b.path("test.zig"), + .target = target, + .optimize = mode, + }); + deps.addAllTo(tests); + + const test_step = b.step("test", "Run all library tests"); + const tests_run = b.addRunArtifact(tests); + tests_run.has_side_effects = true; + test_step.dependOn(&tests_run.step); } diff --git a/licenses.txt b/licenses.txt index 6336b470e0dc9933d1fad883c84eaf86174573d6..728089f444b1699f3c94f6841d719abda91c029f 100644 --- a/licenses.txt +++ b/licenses.txt @@ -1,3 +1,4 @@ MIT: = https://spdx.org/licenses/MIT - This +- git https://github.com/nektro/zig-expect diff --git a/test.zig b/test.zig new file mode 100644 index 0000000000000000000000000000000000000000..48bc936e101e1f1637603264482b43a3258192bb --- /dev/null +++ b/test.zig @@ -0,0 +1,21 @@ +const std = @import("std"); +const leven = @import("leven").leven; +const expect = @import("expect").expect; + +test { + const alloc = std.testing.allocator; + try expect(try leven(u8, alloc, "a", "b", 20)).toEqual(1); + try expect(try leven(u8, alloc, "ab", "ac", 20)).toEqual(1); + try expect(try leven(u8, alloc, "ac", "bc", 20)).toEqual(1); + try expect(try leven(u8, alloc, "abc", "axc", 20)).toEqual(1); + try expect(try leven(u8, alloc, "kitten", "sitting", 20)).toEqual(3); + try expect(try leven(u8, alloc, "xabxcdxxefxgx", "1ab2cd34ef5g6", 20)).toEqual(6); + try expect(try leven(u8, alloc, "cat", "cow", 20)).toEqual(2); + try expect(try leven(u8, alloc, "xabxcdxxefxgx", "abcdefg", 20)).toEqual(6); + try expect(try leven(u8, alloc, "javawasneat", "scalaisgreat", 20)).toEqual(7); + try expect(try leven(u8, alloc, "example", "samples", 20)).toEqual(3); + try expect(try leven(u8, alloc, "sturgeon", "urgently", 20)).toEqual(6); + try expect(try leven(u8, alloc, "levenshtein", "frankenstein", 20)).toEqual(6); + try expect(try leven(u8, alloc, "distance", "difference", 20)).toEqual(5); + // try expect(try leven(u8, alloc, "因為我是中國人所以我會說中文", "因為我是英國人所以我會說英文", 20)).toEqual(2); +} diff --git a/zig.mod b/zig.mod index a223018c23bbce80aa31465aa4ead7bde80be8bf..c60417d1f67bb5f1573767fc7442c5eb789faf7a 100644 --- a/zig.mod +++ b/zig.mod @@ -3,3 +3,5 @@ name: leven main: src/lib.zig license: MIT description: Measure the difference between two slices using the Levenshtein distance algorithm +root_dependencies: + - src: git https://github.com/nektro/zig-expect