diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-11-25 14:52:17 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-11-25 17:43:45 +0100 |
commit | f519bfa92deef99f314d17b242af1edbe7c72a89 (patch) | |
tree | 796306948e1a68eb857daed80648d23d778000ae /test | |
parent | e9b96b012a7ab20446a40c190240a00986ee8e10 (diff) |
more doc tests
Diffstat (limited to 'test')
-rwxr-xr-x | test/comment.rtf | 16 | ||||
-rw-r--r-- | test/doc/comment.doc | bin | 0 -> 22528 bytes | |||
-rw-r--r-- | test/doc/comment.rtf | 31 | ||||
-rw-r--r-- | test/doc/fonts.doc | bin | 0 -> 22016 bytes | |||
-rw-r--r-- | test/doc/fonts.rtf (renamed from test/fonts.rtf) | 0 | ||||
-rw-r--r-- | test/doc/hello.doc | bin | 0 -> 22016 bytes | |||
-rw-r--r-- | test/doc/hello.rtf (renamed from test/hello.rtf) | 0 | ||||
-rw-r--r-- | test/doc/parprops.doc | bin | 0 -> 22016 bytes | |||
-rw-r--r-- | test/doc/parprops.rtf (renamed from test/parprops.rtf) | 0 | ||||
-rw-r--r-- | test/doc/parstyles.doc | bin | 0 -> 22016 bytes | |||
-rw-r--r--[-rwxr-xr-x] | test/doc/parstyles.rtf (renamed from test/parstyles.rtf) | 0 | ||||
-rwxr-xr-x | test/doc/test.py | 88 | ||||
-rw-r--r-- | test/doc/unicode.doc | bin | 0 -> 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 Binary files differnew file mode 100644 index 0000000..d581d73 --- /dev/null +++ b/test/doc/comment.doc 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 Binary files differnew file mode 100644 index 0000000..bf4db37 --- /dev/null +++ b/test/doc/fonts.doc 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 Binary files differnew file mode 100644 index 0000000..514caa8 --- /dev/null +++ b/test/doc/hello.doc 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 Binary files differnew file mode 100644 index 0000000..b4a734e --- /dev/null +++ b/test/doc/parprops.doc 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 Binary files differnew file mode 100644 index 0000000..e729238 --- /dev/null +++ b/test/doc/parstyles.doc 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 Binary files differnew file mode 100644 index 0000000..a94e2df --- /dev/null +++ b/test/doc/unicode.doc 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 |