From 3f30455b4989e7a31a59b7278175476cfd95d41d Mon Sep 17 00:00:00 2001
From: Jesse Rosenthal <jrosenthal@jhu.edu>
Date: Sun, 31 Dec 2017 09:36:42 -0500
Subject: [PATCH] Docx reader: tests for overlapping targets (anchor spans).

---
 test/Tests/Readers/Docx.hs           |   4 ++++
 test/docx/overlapping_targets.docx   | Bin 0 -> 13747 bytes
 test/docx/overlapping_targets.native |   3 +++
 3 files changed, 7 insertions(+)
 create mode 100644 test/docx/overlapping_targets.docx
 create mode 100644 test/docx/overlapping_targets.native

diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs
index 19aecd9ec..d79b8a063 100644
--- a/test/Tests/Readers/Docx.hs
+++ b/test/Tests/Readers/Docx.hs
@@ -179,6 +179,10 @@ tests = [ testGroup "inlines"
             "remove anchor spans with nothing pointing to them"
             "docx/unused_anchors.docx"
             "docx/unused_anchors.native"
+          , testCompare
+            "collapse overlapping targets (anchor spans)"
+            "docx/overlapping_targets.docx"
+            "docx/overlapping_targets.native"
           ]
         , testGroup "blocks"
           [ testCompare
diff --git a/test/docx/overlapping_targets.docx b/test/docx/overlapping_targets.docx
new file mode 100644
index 0000000000000000000000000000000000000000..45ae7cd58b27e839978b8c2be534ee3475c6806f
GIT binary patch
literal 13747
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

literal 0
HcmV?d00001

diff --git a/test/docx/overlapping_targets.native b/test/docx/overlapping_targets.native
new file mode 100644
index 000000000..17dcafd96
--- /dev/null
+++ b/test/docx/overlapping_targets.native
@@ -0,0 +1,3 @@
+[Para [Link ("",[],[]) [Str "One",Space,Str "link",Space,Str "to",Space,Str "one",Space,Str "target."] ("#Fizz","")]
+,Para [Span ("Fizz",["anchor"],[]) [],Str "This",Space,Str "is",Space,Str "a",Space,Str "target",Space,Str "with",Space,Str "two",Space,Str "names."]
+,Para [Link ("",[],[]) [Str "Another",Space,Str "link",Space,Str "to",Space,Str "the",Space,Str "same",Space,Str "target."] ("#Fizz","")]]