X-Git-Url: https://git.kianting.info/?a=blobdiff_plain;f=tests%2Findex.ts;h=e6465dcca241b7c978897a74eec95ee34280f198;hb=cf712efc21fa3a711b8a09b953539c7a7c90f5d6;hp=a7cefa522c4751929b67909349fe424ce1a3479a;hpb=6aa3c9a604ffd40cc0d3fdfa75bc575170e15044;p=clo diff --git a/tests/index.ts b/tests/index.ts index a7cefa5..e6465dc 100644 --- a/tests/index.ts +++ b/tests/index.ts @@ -1,3 +1,5 @@ +import { matchAny, tokenize } 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,79 @@ 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 == "的"); + +tokenize("+123"); +tokenize("123"); +tokenize("-123"); +tokenize(" 123"); +try { + tokenize("c123"); + +} catch (error) { + console.log(error); +} + +tokenize(" "); +tokenize(" "); +tokenize(" \t"); +tokenize(" \t123"); + +try { + tokenize(" \t123aaa456"); + + +} catch (error) { + console.log(error); +} +tokenize(" \t123\n456"); + +tokenize("\"\""); +tokenize("\"123\""); +tokenize("\"1\\\"23\""); +tokenize("\"1\\\"23\" abc123"); + +tokenize("+0.012"); +tokenize("0.0"); +tokenize("-222.0"); +tokenize("1+1 ==2; 3+8 foo(12)"); // harfbuzz test let harfbuzz = require("../src/harfbuzz.js");