From 004f60bf265f7e76ca59ea49ae1070e8d09d1ce7 Mon Sep 17 00:00:00 2001 From: Jesse Rosenthal Date: Tue, 16 Jan 2018 13:20:01 -0500 Subject: [PATCH] Docx reader: Add test for hyperlinks in instrText tag This is difficult to recreate with a modern version of Word, so I'm using the file submitted with the bug report. It would be preferable to find a smaller example with Latin characters, though, so as not to confuse the issue being tested. --- test/Tests/Readers/Docx.hs | 4 ++++ test/docx/instrText_hyperlink.docx | Bin 0 -> 13628 bytes test/docx/instrText_hyperlink.native | 1 + 3 files changed, 5 insertions(+) create mode 100644 test/docx/instrText_hyperlink.docx create mode 100644 test/docx/instrText_hyperlink.native diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs index 68c2e3476..d58e219de 100644 --- a/test/Tests/Readers/Docx.hs +++ b/test/Tests/Readers/Docx.hs @@ -127,6 +127,10 @@ tests = [ testGroup "inlines" "hyperlinks" "docx/links.docx" "docx/links.native" + , testCompare + "hyperlinks in tag" + "docx/instrText_hyperlink.docx" + "docx/instrText_hyperlink.native" , testCompare "inline image" "docx/image.docx" diff --git a/test/docx/instrText_hyperlink.docx b/test/docx/instrText_hyperlink.docx new file mode 100644 index 0000000000000000000000000000000000000000..9f24b38963e28923dfdb64dcecb4ee250f6c838a GIT binary patch literal 13628 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 literal 0 HcmV?d00001 diff --git a/test/docx/instrText_hyperlink.native b/test/docx/instrText_hyperlink.native new file mode 100644 index 000000000..4293c48db --- /dev/null +++ b/test/docx/instrText_hyperlink.native @@ -0,0 +1 @@ +[Para [Str "\24076\26395\28145\20837\20102\35299\30340\35835\32773\21487\20197\21435\30475David",Space,Str "French",Space,Str "Belding\21644Kevin",Space,Str "J.",Space,Str "Mitchell\30340",Link ("",[],[]) [Str "Foundations",Space,Str "of",Space,Str "Analysis,",Space,Str "2nd",Space,Str "Edition"] ("https://books.google.com/books?id=sp_Zcb9ot90C&lpg=PR4&hl=zh-CN&pg=PA19#v=onepage&q&f=true",""),Str ",\21487\20174\&19\39029\30475\36215\65292\25110D.C.",Space,Str "Goldrei\30340",Space,Link ("",[],[]) [Str "Classic",Space,Str "Set",Space,Str "Theory:",Space,Str "For",Space,Str "Guided",Space,Str "Independent",Space,Str "Study"] ("https://books.google.ae/books?id=dlc0DwAAQBAJ&lpg=PT29&hl=zh-CN&pg=PT26#v=onepage&q&f=true",""),Str "\65292\20174\31532\20108\31456\30475\36215\65292\38405\35835\26102\35201\27880\24847\26412\25991\19982\36825\20123\20070\25152\19981\21516\30340\26159\24182\27809\26377\25226\23454\25968\30475\20316\26159\26377\29702\25968\38598\30340\20998\21106\12290"]]