From 62d8f378d502ad0a094c31047966e3a8b9e934e5 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Sun, 28 Aug 2022 15:50:50 +0200 Subject: [PATCH] Add inline text tests --- src_v2/org/org_builder_inline_text.nim | 33 ++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src_v2/org/org_builder_inline_text.nim b/src_v2/org/org_builder_inline_text.nim index ae513d9..7f18b6d 100644 --- a/src_v2/org/org_builder_inline_text.nim +++ b/src_v2/org/org_builder_inline_text.nim @@ -3,6 +3,7 @@ import std/[ sugar, ] import fp/[ + option, resultM, ] import ./org_types @@ -58,6 +59,8 @@ proc tryTokenizeInline*(content: string): OrgInlineBuilderResult = # -- Tests when isMainModule: + import fp/list + block testParsers: proc testParser(str: string, parser: parserFnT): string = initParserResult(str).flatMap(parser).tokensToString() @@ -70,7 +73,29 @@ when isMainModule: assert testParser("+strikeThrough+", strikeThroughParser) == "strikeThrough" block testTokenizers: - let test = tryTokenizeInline( - "Regular *bold* [[placeholder.com]] /italic/ _underline_ =verbatim= ~code~ +strikethrough+ [[https://placeholder.com][title]]" - ) - echo test.unsafeGet() + let testStr = "Regular *bold* [[placeholder.com]] /italic/ _underline_ =verbatim= ~code~ +strikethrough+ [[https://placeholder.com][title]]" + let testBuilder = tryTokenizeInline(testStr) + + assert testBuilder.isOk() + + let testTokens = testBuilder.unsafeGet().tree + let testTokensEpxected = @[ + OrgInlineBlock(kind: orgRawText, content: "Regular "), + OrgInlineBlock(kind: orgBoldText, content: "bold"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgLink, linkUrl: "placeholder.com"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgItalicText, content: "italic"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgUnderlineText, content: "underline"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgVerbatimText, content: "verbatim"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgCodeText, content: "code"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgStrikeThroughText, content: "strikethrough"), + OrgInlineBlock(kind: orgRawText, content: " "), + OrgInlineBlock(kind: orgLink, linkDescription: "title".some(), linkUrl: "https://placeholder.com"), + ] + + assert testTokens.asList() == testTokensEpxected.asList()