diff --git a/lexer_test.go b/lexer_test.go new file mode 100644 index 0000000..1e50d3d --- /dev/null +++ b/lexer_test.go @@ -0,0 +1,49 @@ +package wikilink_test + +import ( + "testing" + + "code.ndumas.com/ndumas/wikilink-parser" +) + +func Test_Lexer(t *testing.T) { + // t.Parallel() + tcs := []struct { + name string + in string + expected []wikilink.ItemType + }{ + {name: "wikilink", in: "[[wikilink]]", expected: []wikilink.ItemType{wikilink.ItemOpenLink, wikilink.ItemText, wikilink.ItemCloseLink}}, + /* + {name: "wikilink|display name", in: "[[wikilink|display name]]", expected: []wikilink.ItemType{}}, + {name: "wikilink|display name|second pipe", in: "[[wikilink|display name|second pipe]]", expected: []wikilink.ItemType{}}, + {name: "wikilink with numeric alias|420|second pipe", in: "[[wikilink|420|second pipe]]", expected: []wikilink.ItemType{}}, + {name: "wikilink with spaces in filename", in: "[[wikilink spaces]]", expected: []wikilink.ItemType{}}, + {name: "#heading", in: "[[#heading]]", expected: []wikilink.ItemType{}}, + {name: "wikilink#heading", in: "[[wikilink#heading]]", expected: []wikilink.ItemType{}}, + {name: "wikilink#heading|display name", in: "[[wikilink#heading|display name]]", expected: []wikilink.ItemType{}}, + {name: "wikilink#heading|display name|second pipe", in: "[[wikilink#heading|display name|second pipe]]", expected: []wikilink.ItemType{}}, + {name: "wikilink with numeric aliases#heading|420|display name", in: "[[wikilink#heading|420|second pipe]]", expected: []wikilink.ItemType{}}, + {name: "^blockRef", in: "[[^blockRef]]", expected: []wikilink.ItemType{}}, + {name: "wikilink^blockRef", in: "[[wikilink^blockRef]]", expected: []wikilink.ItemType{}}, + {name: "wikilink^blockRef|display name", in: "[[wikilink#^blockRef|display name]]", expected: []wikilink.ItemType{}}, + {name: "wikilink^blockRef|display name|second pipe", in: "[[wikilink#^blockRef|display name|second pipe]]", expected: []wikilink.ItemType{}}, + {name: "wikilink with numeric aliases^blockRef|420|second pipe", in: "[[wikilink#^blockRef|420|second pipe]]", expected: []wikilink.ItemType{}}, + */ + } + + for _, tc := range tcs { + tc := tc + t.Run(tc.name, func(t *testing.T) { + // t.Parallel() + l := wikilink.Lex("testLexer", tc.in) + for _, e := range tc.expected { + n := l.NextItem() + if e != n.Typ { + t.Logf("expected %s, received %s\n with raw value %q", e, n, n.Val) + t.Fail() + } + } + }) + } +}