summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@suse.cz>2012-11-25 14:52:17 +0100
committerMiklos Vajna <vmiklos@suse.cz>2012-11-25 17:43:45 +0100
commitf519bfa92deef99f314d17b242af1edbe7c72a89 (patch)
tree796306948e1a68eb857daed80648d23d778000ae /test
parente9b96b012a7ab20446a40c190240a00986ee8e10 (diff)
more doc tests
Diffstat (limited to 'test')
-rwxr-xr-xtest/comment.rtf16
-rw-r--r--test/doc/comment.docbin0 -> 22528 bytes
-rw-r--r--test/doc/comment.rtf31
-rw-r--r--test/doc/fonts.docbin0 -> 22016 bytes
-rw-r--r--test/doc/fonts.rtf (renamed from test/fonts.rtf)0
-rw-r--r--test/doc/hello.docbin0 -> 22016 bytes
-rw-r--r--test/doc/hello.rtf (renamed from test/hello.rtf)0
-rw-r--r--test/doc/parprops.docbin0 -> 22016 bytes
-rw-r--r--test/doc/parprops.rtf (renamed from test/parprops.rtf)0
-rw-r--r--test/doc/parstyles.docbin0 -> 22016 bytes
-rw-r--r--[-rwxr-xr-x]test/doc/parstyles.rtf (renamed from test/parstyles.rtf)0
-rwxr-xr-xtest/doc/test.py88
-rw-r--r--test/doc/unicode.docbin0 -> 22016 bytes
-rw-r--r--[-rwxr-xr-x]test/doc/unicode.rtf (renamed from test/unicode.rtf)0
14 files changed, 112 insertions, 23 deletions
diff --git a/test/comment.rtf b/test/comment.rtf
deleted file mode 100755
index 434ca47..0000000
--- a/test/comment.rtf
+++ /dev/null
@@ -1,16 +0,0 @@
-{\rtf1
-\pard\plain
-{\*\atrfstart 341185741}
-Hello
-{\*\atrfend 341185741}
-{\*\atnid v}
-{\*\atnauthor vmiklos}
-\chatn
-{\*\annotation
-{\*\atnref 341185741}
-{\*\atndate 1191945128}
-This is a comment.
-}
-world!
-\par
-}
diff --git a/test/doc/comment.doc b/test/doc/comment.doc
new file mode 100644
index 0000000..d581d73
--- /dev/null
+++ b/test/doc/comment.doc
Binary files differ
diff --git a/test/doc/comment.rtf b/test/doc/comment.rtf
new file mode 100644
index 0000000..fc48810
--- /dev/null
+++ b/test/doc/comment.rtf
@@ -0,0 +1,31 @@
+{\rtf1
+{
+{\*\atrfstart 341626352}
+Hello
+{\*\atrfend 341626352}
+{\*\atnid v}
+{\*\atnauthor vmiklos}
+\chatn
+{\*\annotation
+{\*\atnref 341626352}
+{\*\atndate 1191945128}
+{This is a comment.}
+}
+ world!}
+\par
+{\*\atrfstart 341626364}
+This
+{
+{\*\atrfend 341626364}
+{\*\atnid v}
+{\*\atnauthor vmiklos}
+\chatn
+{\*\annotation
+{\*\atnref 341626364}
+{\*\atndate 118213700}
+This is also commented.
+}
+}
+{\rtlch\fcs1 \af0\afs24 \ltrch\fcs0 \f0\fs24 \hich\af0\dbch\loch\f0 \hich\af0\dbch\loch\f0 is also commented.
+\par }
+}
diff --git a/test/doc/fonts.doc b/test/doc/fonts.doc
new file mode 100644
index 0000000..bf4db37
--- /dev/null
+++ b/test/doc/fonts.doc
Binary files differ
diff --git a/test/fonts.rtf b/test/doc/fonts.rtf
index c3d6f1e..c3d6f1e 100644
--- a/test/fonts.rtf
+++ b/test/doc/fonts.rtf
diff --git a/test/doc/hello.doc b/test/doc/hello.doc
new file mode 100644
index 0000000..514caa8
--- /dev/null
+++ b/test/doc/hello.doc
Binary files differ
diff --git a/test/hello.rtf b/test/doc/hello.rtf
index af7104a..af7104a 100644
--- a/test/hello.rtf
+++ b/test/doc/hello.rtf
diff --git a/test/doc/parprops.doc b/test/doc/parprops.doc
new file mode 100644
index 0000000..b4a734e
--- /dev/null
+++ b/test/doc/parprops.doc
Binary files differ
diff --git a/test/parprops.rtf b/test/doc/parprops.rtf
index 149e819..149e819 100644
--- a/test/parprops.rtf
+++ b/test/doc/parprops.rtf
diff --git a/test/doc/parstyles.doc b/test/doc/parstyles.doc
new file mode 100644
index 0000000..e729238
--- /dev/null
+++ b/test/doc/parstyles.doc
Binary files differ
diff --git a/test/parstyles.rtf b/test/doc/parstyles.rtf
index 93e3201..93e3201 100755..100644
--- a/test/parstyles.rtf
+++ b/test/doc/parstyles.rtf
diff --git a/test/doc/test.py b/test/doc/test.py
index 52874cc..a0356d0 100755
--- a/test/doc/test.py
+++ b/test/doc/test.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+# -*- encoding: UTF-8 -*-
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -26,19 +27,92 @@ class Test(unittest.TestCase):
sys.stdout = saved
sock.close()
tree = ElementTree.parse('%s.doc.xml' % name)
- return tree.getroot()
+ self.root = tree.getroot()
+
+ def getFontId(self, name):
+ fonts = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbSttbfFfn/sttbfFfn/cchData')
+ for i in fonts:
+ if len (i.findall('ffn/xszFfn[@value="%s"]' % name)) == 1:
+ return int(i.attrib['index'])
+
+ def getRuns(self):
+ return self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfBteChpx/plcBteChpx/aFC/aPnBteChpx/chpxFkp/rgfc')
+
+ def getParas(self):
+ return self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfBtePapx/plcBtePapx/aFC/aPnBtePapx/papxFkp/rgfc')
+
+ def getHex(self, num):
+ return int(num, 16)
+
+ def test_hello(self):
+ self.dump('hello')
+
+ runs = self.getRuns()
+ self.assertEqual(1, len(runs))
+
+ self.assertEqual('Hello world!\\x0D', runs[0].findall('transformed')[0].attrib['value'])
+
+ def test_unicode(self):
+ self.dump('unicode')
+
+ uni = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbClx/clx/pcdt/plcPcd/aCP/transformed')
+ self.assertEqual('Hello world! éáőű\\x0D', uni[0].attrib['value'])
def test_charprops(self):
- root = self.dump('charprops')
+ self.dump('charprops')
+
+ runs = self.getRuns()
+ self.assertEqual(2, len(runs))
+
+ self.assertEqual('Hello ', runs[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual(0, len(runs[0].findall('chpx/prl/sprm[@name="sprmCFBold"]')))
+
+ self.assertEqual('world!\\x0D', runs[1].findall('transformed')[0].attrib['value'])
+ self.assertEqual(1, len(runs[1].findall('chpx/prl/sprm[@name="sprmCFBold"]')))
- runs = root.findall('./stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfBteChpx/plcBteChpx/aFC/aPnBteChpx/chpxFkp/rgfc')
+ def test_fonts(self):
+ self.dump('fonts')
+ runs = self.getRuns()
self.assertEqual(2, len(runs))
- self.assertEqual('Hello ', runs[0].findall('./transformed')[0].attrib['value'])
- self.assertEqual(0, len(runs[0].findall("./chpx/prl/sprm[@name='sprmCFBold']")))
+ self.assertEqual('This is Times New Roman ', runs[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual(self.getFontId("Times New Roman"), self.getHex(runs[0].findall('chpx/prl/sprm[@name="sprmCRgFtc0"]')[0].attrib['operand']))
+
+ self.assertEqual('this is arial.\\x0D', runs[1].findall('transformed')[0].attrib['value'])
+ self.assertEqual(self.getFontId("Arial"), self.getHex(runs[1].findall('chpx/prl/sprm[@name="sprmCRgFtc0"]')[0].attrib['operand']))
+
+ def test_parprops(self):
+ self.dump('parprops')
+ paras = self.getParas()
+ self.assertEqual(2, len(paras))
+
+ self.assertEqual('Second para.\\x0D', paras[1].findall('transformed')[0].attrib['value'])
+ self.assertEqual('0x1', paras[1].findall('bxPap/papxInFkp/grpPrlAndIstd/prl/sprm[@name="sprmPJc"]')[0].attrib['operand'])
+
+ def test_parstyles(self):
+ self.dump('parstyles')
+ styles = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbStshf/stsh/rglpstd')
+ self.assertEqual('Center', styles[15].findall('std/xstz/xst/rgtchar')[0].attrib['value'])
+
+ paras = self.getParas()
+ self.assertEqual(15, self.getHex(paras[1].findall('bxPap/papxInFkp/grpPrlAndIstd/istd')[0].attrib['value']))
+
+ def test_comment(self):
+ self.dump('comment')
+ comments = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfandTxt/plcfandTxt/aCP')
+ self.assertEqual(2, len(comments))
+
+ self.assertEqual('This is a comment.\\x0D', comments[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual('This is also commented.\\x0D', comments[1].findall('transformed')[0].attrib['value'])
+
+ commentStarts = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfAtnBkf/plcfBkf/aCP')
+ commentEnds = self.root.findall('stream[@name="WordDocument"]/fib/fibRgFcLcbBlob/lcbPlcfAtnBkl/plcfBkl/aCP')
- self.assertEqual('world!\\x0D', runs[1].findall('./transformed')[0].attrib['value'])
- self.assertEqual(1, len(runs[1].findall("./chpx/prl/sprm[@name='sprmCFBold']")))
+ # The first comment covers Hello\x05, the second covers This\x05.
+ self.assertEqual('H', commentStarts[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual('\\x05', commentEnds[0].findall('transformed')[0].attrib['value'])
+ self.assertEqual('T', commentStarts[1].findall('transformed')[0].attrib['value'])
+ self.assertEqual('\\x05', commentEnds[1].findall('transformed')[0].attrib['value'])
if __name__ == '__main__':
unittest.main()
diff --git a/test/doc/unicode.doc b/test/doc/unicode.doc
new file mode 100644
index 0000000..a94e2df
--- /dev/null
+++ b/test/doc/unicode.doc
Binary files differ
diff --git a/test/unicode.rtf b/test/doc/unicode.rtf
index f1334dd..f1334dd 100755..100644
--- a/test/unicode.rtf
+++ b/test/doc/unicode.rtf