From 475b0dcb66c2a7cdc78022b4dcb7c7fbb17ab309 Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Sat, 30 Dec 2017 22:43:33 -0500 Subject: [PATCH] Docx reader: tests for removing unused anchors. --- test/Tests/Readers/Docx.hs | 4 ++++ test/docx/unused_anchors.docx | Bin 0 -> 13276 bytes test/docx/unused_anchors.native | 3 +++ 3 files changed, 7 insertions(+) create mode 100644 test/docx/unused_anchors.docx create mode 100644 test/docx/unused_anchors.native diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs index 5710a388f..19aecd9ec 100644 --- a/test/Tests/Readers/Docx.hs +++ b/test/Tests/Readers/Docx.hs @@ -175,6 +175,10 @@ tests = [ testGroup "inlines" "inlines inside of Structured Document Tags" "docx/sdt_elements.docx" "docx/sdt_elements.native" + , testCompare + "remove anchor spans with nothing pointing to them" + "docx/unused_anchors.docx" + "docx/unused_anchors.native" ] , testGroup "blocks" [ testCompare diff --git a/test/docx/unused_anchors.docx b/test/docx/unused_anchors.docx new file mode 100644 index 0000000000000000000000000000000000000000..416488bbfa32810465dc56fe2ed05de40cf714a5 GIT binary patch literal 13276 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 literal 0 HcmV?d00001 diff --git a/test/docx/unused_anchors.native b/test/docx/unused_anchors.native new file mode 100644 index 000000000..334269793 --- /dev/null +++ b/test/docx/unused_anchors.native @@ -0,0 +1,3 @@ +[Header 1 ("my-section",[],[]) [Str "My",Space,Str "Section"] +,Para [Link ("",[],[]) [Str "Here",Space,Str "is",Space,Str "a",Space,Str "link."] ("#Bar","")] +,Para [Span ("Bar",["anchor"],[]) [],Str "Here",Space,Str "is",Space,Str "the",Space,Str "target."]]