]> git.kianting.info Git - clo/blobdiff - tests/index.ts
add a basic tokenzier function & an int tokenizer
[clo] / tests / index.ts
index a7cefa522c4751929b67909349fe424ce1a3479a..653f3cffdc1376009c60933549ff817f5ed91109 100644 (file)
@@ -1,3 +1,5 @@
+import { matchAny } from "../src";
+
 let assert = require("assert");
 let cloMain = require("../src");
 
@@ -14,6 +16,10 @@ assert(example2._tag == "None");
 
 
 let thenDo = cloMain.thenDo;
+let orDo = cloMain.orDo;
+let zeroOrMoreDo = cloMain.zeroOrMoreDo;
+let notDo = cloMain.notDo;
+
 // composed part x
 let compPart1 = cloMain.match1Char("我");
 let compPart2 = cloMain.match1Char("的");
@@ -29,6 +35,45 @@ let doThenTestee2 = {_tag : "Some",value : {matched: "", remained: "我們"}};
 let doTestRes2 = thenDo(thenDo(doThenTestee2, compPart1), compPart2);
 assert(doTestRes2._tag == "None");
 
+let doThenTestee3 = {_tag : "Some",value : {matched: "", remained: "我的貓"}};
+let doTestRes3 = thenDo(thenDo(doThenTestee3, orDo(compPart1, compPart2)), compPart2);
+assert(doTestRes3._tag == "Some");
+assert(doTestRes3.value.matched == "我的");
+assert(doTestRes3.value.remained == "貓");
+
+let doThenTestee4 = {_tag : "Some",value : {matched: "", remained: "的的貓"}};
+let doTestRes4 = thenDo(thenDo(doThenTestee4, orDo(compPart1, compPart2)), compPart2);
+assert(doTestRes4._tag == "Some");
+assert(doTestRes4.value.matched == "的的");
+assert(doTestRes4.value.remained == "貓");
+
+let doThenTestee5 = {_tag : "Some",value : {matched: "", remained: "的貓"}};
+let doTestRes5 = thenDo(thenDo(doThenTestee5, zeroOrMoreDo(compPart1)), compPart2);
+assert(doTestRes5._tag == "Some");
+assert(doTestRes5.value.matched == "的");
+assert(doTestRes5.value.remained == "貓");
+
+let doThenTestee6 = {_tag : "Some",value : {matched: "", remained: "我我我的貓"}};
+let doTestRes6 = thenDo(thenDo(doThenTestee6, zeroOrMoreDo(compPart1)), compPart2);
+assert(doTestRes6._tag == "Some");
+assert(doTestRes6.value.matched == "我我我的");
+assert(doTestRes6.value.remained == "貓");
+
+let doThenTestee7 = {_tag : "Some",value : {matched: "", remained: "我的"}};
+let doTestRes7 = thenDo(thenDo(doThenTestee7, notDo(compPart1)), compPart2);
+assert(doTestRes7._tag == "None");
+
+let doThenTestee8 = {_tag : "Some",value : {matched: "", remained: "妳的"}};
+let doTestRes8 = thenDo(thenDo(doThenTestee8, notDo(compPart1)), compPart2);
+assert(doTestRes8._tag == "Some");
+assert(doTestRes8.value.matched == "妳的");
+
+let doThenTestee9 = {_tag : "Some",value : {matched: "", remained: "妳的"}};
+let doTestRes9 = thenDo(doThenTestee9, matchAny);
+assert(doTestRes9._tag == "Some");
+assert(doTestRes9.value.matched == "妳");
+assert(doTestRes9.value.remained == "的");
+
 
 // harfbuzz test
 let harfbuzz = require("../src/harfbuzz.js");