src/docrecord.py       |    4 +-
 test/comment.rtf       |   16 --------
 test/doc/comment.doc   |binary
 test/doc/comment.rtf   |   31 +++++++++++++++++
 test/doc/fonts.doc     |binary
 test/doc/fonts.rtf     |    7 +++
 test/doc/hello.doc     |binary
 test/doc/hello.rtf     |    3 +
 test/doc/parprops.doc  |binary
 test/doc/parprops.rtf  |    4 ++
 test/doc/parstyles.doc |binary
 test/doc/parstyles.rtf |   10 +++++
 test/doc/test.py       |   88 +++++++++++++++++++++++++++++++++++++++++++++----
 test/doc/unicode.doc   |binary
 test/doc/unicode.rtf   |    5 ++
 test/fonts.rtf         |    7 ---
 test/hello.rtf         |    3 -
 test/parprops.rtf      |    4 --
 test/parstyles.rtf     |   10 -----
 test/unicode.rtf       |    5 --
 20 files changed, 143 insertions(+), 54 deletions(-)

New commits:
commit f519bfa92deef99f314d17b242af1edbe7c72a89
Author: Miklos Vajna <vmik...@suse.cz>
Date:   Sun Nov 25 14:52:17 2012 +0100

    more doc tests

diff --git a/src/docrecord.py b/src/docrecord.py
index 4b17907..7cd9df9 100755
--- a/src/docrecord.py
+++ b/src/docrecord.py
@@ -975,9 +975,9 @@ class SttbfAtnBkmk(DOCDirStream):
         self.pos += 2
         for i in range(self.cData):
             cchData = self.getuInt16()
-            print '<cchData index="%d" offset="%d", size="%d bytes"/>' % (i, 
self.pos, cchData)
+            print '<cchData index="%d" offset="%d" size="%d bytes"/>' % (i, 
self.pos, cchData)
             self.pos += 2
-            print '<extraData index="%d" offset="%d", size="%d bytes">' % (i, 
self.pos, ATNBE.size)
+            print '<extraData index="%d" offset="%d" size="%d bytes">' % (i, 
self.pos, ATNBE.size)
             atnbe = ATNBE(self)
             atnbe.dump()
             self.pos += ATNBE.size
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
Binary files /dev/null and b/test/doc/comment.doc 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
Binary files /dev/null and b/test/doc/fonts.doc differ
diff --git a/test/doc/fonts.rtf b/test/doc/fonts.rtf
new file mode 100644
index 0000000..c3d6f1e
--- /dev/null
+++ b/test/doc/fonts.rtf
@@ -0,0 +1,7 @@
+{\rtf1
+{\fonttbl
+{\f0 Times New Roman;}
+{\f1 Arial;}
+}
+\f0 This is Times New Roman \f1 this is arial.\par
+}
diff --git a/test/doc/hello.doc b/test/doc/hello.doc
new file mode 100644
index 0000000..514caa8
Binary files /dev/null and b/test/doc/hello.doc differ
diff --git a/test/doc/hello.rtf b/test/doc/hello.rtf
new file mode 100644
index 0000000..af7104a
--- /dev/null
+++ b/test/doc/hello.rtf
@@ -0,0 +1,3 @@
+{\rtf1
+Hello world!\par
+}
diff --git a/test/doc/parprops.doc b/test/doc/parprops.doc
new file mode 100644
index 0000000..b4a734e
Binary files /dev/null and b/test/doc/parprops.doc differ
diff --git a/test/doc/parprops.rtf b/test/doc/parprops.rtf
new file mode 100644
index 0000000..149e819
--- /dev/null
+++ b/test/doc/parprops.rtf
@@ -0,0 +1,4 @@
+{\rtf1
+Hello world!\par
+\qc Second para.\par
+}
diff --git a/test/doc/parstyles.doc b/test/doc/parstyles.doc
new file mode 100644
index 0000000..e729238
Binary files /dev/null and b/test/doc/parstyles.doc differ
diff --git a/test/doc/parstyles.rtf b/test/doc/parstyles.rtf
new file mode 100644
index 0000000..93e3201
--- /dev/null
+++ b/test/doc/parstyles.rtf
@@ -0,0 +1,10 @@
+{\rtf1
+{\fonttbl
+{\f0 Times New Roman;}
+}
+{\stylesheet
+{\s15\qc\sbasedon0\snext15 Center;}
+}
+{Hello world!\par }
+{\s15\qc This is centered.\par }
+}
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
Binary files /dev/null and b/test/doc/unicode.doc differ
diff --git a/test/doc/unicode.rtf b/test/doc/unicode.rtf
new file mode 100644
index 0000000..f1334dd
--- /dev/null
+++ b/test/doc/unicode.rtf
@@ -0,0 +1,5 @@
+{\rtf1
+\pard\plain
+Hello world! \uc2 \u233\'c3\'a9\u225\'c3\'a1\u337\'c5\'91\u369\'c5\'b1\uc1
+\par
+}
diff --git a/test/fonts.rtf b/test/fonts.rtf
deleted file mode 100644
index c3d6f1e..0000000
--- a/test/fonts.rtf
+++ /dev/null
@@ -1,7 +0,0 @@
-{\rtf1
-{\fonttbl
-{\f0 Times New Roman;}
-{\f1 Arial;}
-}
-\f0 This is Times New Roman \f1 this is arial.\par
-}
diff --git a/test/hello.rtf b/test/hello.rtf
deleted file mode 100644
index af7104a..0000000
--- a/test/hello.rtf
+++ /dev/null
@@ -1,3 +0,0 @@
-{\rtf1
-Hello world!\par
-}
diff --git a/test/parprops.rtf b/test/parprops.rtf
deleted file mode 100644
index 149e819..0000000
--- a/test/parprops.rtf
+++ /dev/null
@@ -1,4 +0,0 @@
-{\rtf1
-Hello world!\par
-\qc Second para.\par
-}
diff --git a/test/parstyles.rtf b/test/parstyles.rtf
deleted file mode 100755
index 93e3201..0000000
--- a/test/parstyles.rtf
+++ /dev/null
@@ -1,10 +0,0 @@
-{\rtf1
-{\fonttbl
-{\f0 Times New Roman;}
-}
-{\stylesheet
-{\s15\qc\sbasedon0\snext15 Center;}
-}
-{Hello world!\par }
-{\s15\qc This is centered.\par }
-}
diff --git a/test/unicode.rtf b/test/unicode.rtf
deleted file mode 100755
index f1334dd..0000000
--- a/test/unicode.rtf
+++ /dev/null
@@ -1,5 +0,0 @@
-{\rtf1
-\pard\plain
-Hello world! \uc2 \u233\'c3\'a9\u225\'c3\'a1\u337\'c5\'91\u369\'c5\'b1\uc1
-\par
-}
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to