@ -1,4 +1,4 @@
package markdo wn_test
package wikili nk _test
import (
"testing"
@ -6,338 +6,212 @@ import (
"github.com/stretchr/testify/assert"
"go.uber.org/zap/zapcore"
"code.ndumas.com/ndumas/ obsidian-markdown "
"code.ndumas.com/ndumas/ wikilink-parser "
)
var wikilinkWithEscapeCharacters = [ ] tc {
{
name : "wikilink with escaped close link" ,
in : ` [[wiki\]\]link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\]\]link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with partial escaped close link" ,
in : ` [[wiki\]link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\]link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with escaped open link" ,
in : ` [[wiki\[\[link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\[\[link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with partial escaped open link" ,
in : ` [[wiki\[link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\[link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with escaped alias" ,
in : ` [[wiki\|link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\|link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with escaped blockref" ,
in : ` [[wiki\#\^link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\#\^link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with partial escaped blockref" ,
in : ` [[wiki\^link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\^link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with escaped header" ,
in : ` [[wiki\#link]] ` ,
expected : [ ] markdown . Lexeme {
{ Typ : markdown . LexOpenLink , Val : "[[" } ,
{ Typ : markdown . LexIdent , Val : ` wiki\#link ` } ,
{ Typ : markdown . LexCloseLink , Val : "]]" } ,
} ,
} ,
}
var singleWikilink = [ ] tc {
var SingleWikilink = [ ] tc {
{
name : "wikilink" ,
in : "[[wikilink]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink|display name" ,
in : "[[wikilink|display name]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink" } ,
{ Typ : wikilink . LexAlias , Val : "|" } ,
{ Typ : wikilink . LexIdent , Val : "display name" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink|display name|second pipe" ,
in : "[[wikilink|display name|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink" } ,
{ Typ : wikilink . LexAlias , Val : "|" } ,
{ Typ : wikilink . LexIdent , Val : "display name" } ,
{ Typ : wikilink . LexAlias , Val : "|" } ,
{ Typ : wikilink . LexIdent , Val : "second pipe" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with numeric alias|420|second pipe" ,
in : "[[wikilink|420|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "420" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink" } ,
{ Typ : wikilink . LexAlias , Val : "|" } ,
{ Typ : wikilink . LexIdent , Val : "420" } ,
{ Typ : wikilink . LexAlias , Val : "|" } ,
{ Typ : wikilink . LexIdent , Val : "second pipe" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with spaces in filename" ,
in : "[[wikilink spaces]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink spaces" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink spaces" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "#heading" ,
in : "[[#heading]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "" } ,
{ Typ : markdo wn. LexHeading , Val : "#" } ,
{ Typ : markdo wn. LexIdent , Val : "heading" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "" } ,
{ Typ : wikilink . LexHeading , Val : "#" } ,
{ Typ : wikilink . LexIdent , Val : "heading" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#heading" ,
in : "[[wikilink#heading]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexHeading , Val : "#" } ,
{ Typ : markdo wn. LexIdent , Val : "heading" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikilink . Lexeme {
{ Typ : wikilink . LexOpenLink , Val : "[[" } ,
{ Typ : wikilink . LexIdent , Val : "wikilink" } ,
{ Typ : wikilink . LexHeading , Val : "#" } ,
{ Typ : wikilink . LexIdent , Val : "heading" } ,
{ Typ : wikilink . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#heading|display name" ,
in : "[[wikilink#heading|display name]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexHeading , Val : "#" } ,
{ Typ : markdo wn. LexIdent , Val : "heading" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexHeading , Val : "#" } ,
{ Typ : wikili nk . LexIdent , Val : "heading" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "display name" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#heading|display name|second pipe" ,
in : "[[wikilink#heading|display name|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexHeading , Val : "#" } ,
{ Typ : markdo wn. LexIdent , Val : "heading" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexHeading , Val : "#" } ,
{ Typ : wikili nk . LexIdent , Val : "heading" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "display name" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "second pipe" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with numeric aliases#heading|420|display name" ,
in : "[[wikilink#heading|420|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexHeading , Val : "#" } ,
{ Typ : markdo wn. LexIdent , Val : "heading" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "420" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexHeading , Val : "#" } ,
{ Typ : wikili nk . LexIdent , Val : "heading" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "420" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "second pipe" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "#^blockRef" ,
in : "[[#^blockRef]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "" } ,
{ Typ : markdo wn. LexBlockRef , Val : "#^" } ,
{ Typ : markdo wn. LexIdent , Val : "blockRef" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "" } ,
{ Typ : wikili nk . LexBlockRef , Val : "#^" } ,
{ Typ : wikili nk . LexIdent , Val : "blockRef" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#^blockRef" ,
in : "[[wikilink#^blockRef]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexBlockRef , Val : "#^" } ,
{ Typ : markdo wn. LexIdent , Val : "blockRef" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexBlockRef , Val : "#^" } ,
{ Typ : wikili nk . LexIdent , Val : "blockRef" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#^blockRef|display name" ,
in : "[[wikilink#^blockRef|display name]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexBlockRef , Val : "#^" } ,
{ Typ : markdo wn. LexIdent , Val : "blockRef" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexBlockRef , Val : "#^" } ,
{ Typ : wikili nk . LexIdent , Val : "blockRef" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "display name" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink#^blockRef|display name|second pipe" ,
in : "[[wikilink#^blockRef|display name|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexBlockRef , Val : "#^" } ,
{ Typ : markdo wn. LexIdent , Val : "blockRef" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "display name" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexBlockRef , Val : "#^" } ,
{ Typ : wikili nk . LexIdent , Val : "blockRef" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "display name" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "second pipe" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
{
name : "wikilink with numeric aliases#^blockRef|420|second pipe" ,
in : "[[wikilink#^blockRef|420|second pipe]]" ,
expected : [ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexOpenLink , Val : "[[" } ,
{ Typ : markdo wn. LexIdent , Val : "wikilink" } ,
{ Typ : markdo wn. LexBlockRef , Val : "#^" } ,
{ Typ : markdo wn. LexIdent , Val : "blockRef" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "420" } ,
{ Typ : markdo wn. LexAlias , Val : "|" } ,
{ Typ : markdo wn. LexIdent , Val : "second pipe" } ,
{ Typ : markdo wn. LexCloseLink , Val : "]]" } ,
expected : [ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexOpenLink , Val : "[[" } ,
{ Typ : wikili nk . LexIdent , Val : "wikilink" } ,
{ Typ : wikili nk . LexBlockRef , Val : "#^" } ,
{ Typ : wikili nk . LexIdent , Val : "blockRef" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "420" } ,
{ Typ : wikili nk . LexAlias , Val : "|" } ,
{ Typ : wikili nk . LexIdent , Val : "second pipe" } ,
{ Typ : wikili nk . LexCloseLink , Val : "]]" } ,
} ,
} ,
}
func Test_ObsidianWikilinks_TextWithEscapeCharacters ( t * testing . T ) {
for _ , tc := range singleWikilink {
tc . name = "escape characters preceding " + tc . name
mut , test := mutateTestCase (
tc ,
` foo\[\[not a link, but this is ` ,
"" ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : ` foo\[\[not a link, but this is ` } ,
} ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : "" } ,
} ,
)
t . Run ( mut . name , test )
}
for _ , tc := range singleWikilink {
tc . name = "escape characters following " + tc . name
mut , test := mutateTestCase (
tc ,
"" ,
` foo\[\[not a link, but this is ` ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : "" } ,
} ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : ` foo\[\[not a link, but this is ` } ,
} ,
)
t . Run ( mut . name , test )
}
}
func Test_ObsidianWikilinks_EscapeCharacters ( t * testing . T ) {
for _ , tc := range wikilinkWithEscapeCharacters {
mut , test := mutateTestCase (
tc ,
"" ,
"" ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : "" } ,
} ,
[ ] markdown . Lexeme {
{ Typ : markdown . LexText , Val : "" } ,
} ,
)
t . Run ( mut . name , test )
}
}
func Test_ObsidianWikilinks_LinksEndOfMultiLineInput ( t * testing . T ) {
for _ , tc := range s ingleWikilink {
for _ , tc := range SingleWikilink {
mut , test := mutateTestCase (
tc ,
" test data please ignore.\nbling blonk more lines\nbling blong\nthis is a" ,
"" ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : " test data please ignore.\n" } ,
{ Typ : markdo wn. LexText , Val : "bling blonk more lines\n" } ,
{ Typ : markdo wn. LexText , Val : "bling blong\n" } ,
{ Typ : markdo wn. LexText , Val : "this is a" } ,
[ ] wikilink . Lexeme {
{ Typ : wikilink . LexText , Val : " test data please ignore.\n" } ,
{ Typ : wikilink . LexText , Val : "bling blonk more lines\n" } ,
{ Typ : wikilink . LexText , Val : "bling blong\n" } ,
{ Typ : wikilink . LexText , Val : "this is a" } ,
} ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikilink . Lexeme {
{ Typ : wikilink . LexText , Val : "" } ,
} ,
)
t . Run ( mut . name , test )
@ -345,20 +219,20 @@ func Test_ObsidianWikilinks_LinksEndOfMultiLineInput(t *testing.T) {
}
func Test_ObsidianWikilinks_LinksStartOfMultiLineInput ( t * testing . T ) {
for _ , tc := range s ingleWikilink {
for _ , tc := range S ingleWikilink {
mut , test := mutateTestCase (
tc ,
"" ,
" test data please ignore.\nbling blonk more lines\nbling blong\nthis is a" ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "" } ,
} ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : " test data please ignore.\n" } ,
{ Typ : markdo wn. LexText , Val : "bling blonk more lines\n" } ,
{ Typ : markdo wn. LexText , Val : "bling blong\n" } ,
{ Typ : markdo wn. LexText , Val : "this is a" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : " test data please ignore.\n" } ,
{ Typ : wikili nk . LexText , Val : "bling blonk more lines\n" } ,
{ Typ : wikili nk . LexText , Val : "bling blong\n" } ,
{ Typ : wikili nk . LexText , Val : "this is a" } ,
} ,
)
t . Run ( mut . name , test )
@ -366,17 +240,17 @@ func Test_ObsidianWikilinks_LinksStartOfMultiLineInput(t *testing.T) {
}
func Test_ObsidianWikilinks_LinksStartOfInput ( t * testing . T ) {
for _ , tc := range s ingleWikilink {
for _ , tc := range S ingleWikilink {
mut , test := mutateTestCase (
tc ,
"" ,
" test data please ignore" ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "" } ,
} ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : " test data please ignore" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : " test data please ignore" } ,
} ,
)
t . Run ( mut . name , test )
@ -384,16 +258,16 @@ func Test_ObsidianWikilinks_LinksStartOfInput(t *testing.T) {
}
func Test_ObsidianWikilinks_LinksEndOfInput ( t * testing . T ) {
for _ , tc := range s ingleWikilink {
for _ , tc := range S ingleWikilink {
mut , test := mutateTestCase (
tc ,
"this is a " ,
"" ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "this is a " } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "this is a " } ,
} ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "" } ,
} ,
)
t . Run ( mut . name , test )
@ -402,16 +276,16 @@ func Test_ObsidianWikilinks_LinksEndOfInput(t *testing.T) {
func Test_ObsidianWikilinks_Basic ( t * testing . T ) {
for _ , tc := range s ingleWikilink {
for _ , tc := range S ingleWikilink {
mut , test := mutateTestCase (
tc ,
"" ,
"" ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "" } ,
} ,
[ ] markdo wn. Lexeme {
{ Typ : markdo wn. LexText , Val : "" } ,
[ ] wikili nk . Lexeme {
{ Typ : wikili nk . LexText , Val : "" } ,
} ,
)
t . Run ( mut . name , test )
@ -421,10 +295,10 @@ func Test_ObsidianWikilinks_Basic(t *testing.T) {
type tc struct {
name string
in string
expected [ ] markdo wn. Lexeme
expected [ ] wikili nk . Lexeme
}
func mutateTestCase ( tc tc , prefix , suffix string , expectedPrefix , expectedSuffix [ ] markdo wn. Lexeme ) ( tc , func ( t * testing . T ) ) {
func mutateTestCase ( tc tc , prefix , suffix string , expectedPrefix , expectedSuffix [ ] wikili nk . Lexeme ) ( tc , func ( t * testing . T ) ) {
tc . in = prefix + tc . in
tc . in = tc . in + suffix
if expectedPrefix != nil {
@ -435,7 +309,7 @@ func mutateTestCase(tc tc, prefix, suffix string, expectedPrefix, expectedSuffix
}
return tc , func ( t * testing . T ) {
l := markdo wn. Lex ( "testLexer" , tc . in , zapcore . WarnLevel )
l := wikili nk . Lex ( "testLexer" , tc . in , zapcore . WarnLevel )
defer l . L . Sync ( )
assert . Equal ( t , tc . expected , l . Items , "token stream mismatch" )
}