sw/qa/complex/writer/TextPortionEnumerationTest.java | 271 ---------------- sw/qa/python/text_portion_enumeration_test.py | 303 +++++++++++++++++++ 2 files changed, 303 insertions(+), 271 deletions(-)
New commits: commit 033a619c979e45d012e1ebe286462eb379997b41 Author: jmzambon <jeanmarczam...@gmail.com> Date: Tue Jul 18 18:08:46 2017 +0200 tdf#97362: TextPortionEnumerationTest partially migrated to python (part 5) Convert tests: - test_range1 - test_range_hyperlink_hyperlink - test_range_hyperlink_ruby - test_range_ruby_hyperlink - test_range_ruby_ruby Change-Id: I6c26f3e0fe910ff56bf38482257340b1c3172461 Reviewed-on: https://gerrit.libreoffice.org/40775 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/qa/complex/writer/TextPortionEnumerationTest.java b/sw/qa/complex/writer/TextPortionEnumerationTest.java index b13401e07d20..266134ffb7a3 100644 --- a/sw/qa/complex/writer/TextPortionEnumerationTest.java +++ b/sw/qa/complex/writer/TextPortionEnumerationTest.java @@ -1258,277 +1258,6 @@ public class TextPortionEnumerationTest util.DesktopTools.closeDoc(m_xDoc); } - /* some range tests for the insertion: these are for the current - API which treats hyperlinks and rubys not as entities, but as formatting - attributes; if these ever become entities, they should not be split! - */ - - @Test public void testRange1() throws Exception - { - String name1 = mkName("url"); - RangeInserter inserter = new RangeInserter(m_xDoc); - TreeNode text = new TextNode("12345"); - inserter.insertRange(new Range(0, 0, text)); - TreeNode url1 = new HyperlinkNode(name1); - Range range1 = new Range(0, 5, url1); - inserter.insertRange(range1); - TreeNode root = new TreeNode(); - root.appendChild( url1 ); - url1.appendChild( text ); - doTest(root, false); - } - - @Test public void testRangeHyperlinkHyperlink() throws Exception - { - RangeInserter inserter = new RangeInserter(m_xDoc); - TreeNode text = new TextNode("123456789"); - inserter.insertRange( new Range(0, 0, text) ); - TreeNode url1 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(1, 4, url1) ); - // overlap left - TreeNode url2 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(0, 2, url2) ); - TreeNode root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("12") ) ) - .appendChild( url1.dup().appendChild( new TextNode("34") ) ) - .appendChild( new TextNode("56789") ); - doTest(root, false); - // overlap right - TreeNode url3 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(3, 7, url3) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("12") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url3.dup().appendChild( new TextNode("4567") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // around - TreeNode url4 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(3, 7, url4) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("12") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url4.dup().appendChild( new TextNode("4567") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // inside - TreeNode url5 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(4, 6, url5) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("12") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url4.dup().appendChild( new TextNode("4") ) ) - .appendChild( url5.dup().appendChild( new TextNode("56") ) ) - .appendChild( url4.dup().appendChild( new TextNode("7") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // empty - TreeNode url6 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(7, 7, url6) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("12") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url4.dup().appendChild( new TextNode("4") ) ) - .appendChild( url5.dup().appendChild( new TextNode("56") ) ) - .appendChild( url4.dup().appendChild( new TextNode("7") ) ) -// this one gets eaten, but we still need to test inserting it (#i106930#) -// .appendChild( url6.dup().appendChild( new TextNode("") ) ) - .appendChild( new TextNode("89") ); - // inside (left-edge) - TreeNode url7 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(0, 1, url7) ); - root = new TreeNode() - .appendChild( url7.dup().appendChild( new TextNode("1") ) ) - .appendChild( url2.dup().appendChild( new TextNode("2") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url4.dup().appendChild( new TextNode("4") ) ) - .appendChild( url5.dup().appendChild( new TextNode("56") ) ) - .appendChild( url4.dup().appendChild( new TextNode("7") ) ) - .appendChild( new TextNode("89") ); - // inside (right-edge) - TreeNode url8 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(5, 6, url8) ); - root = new TreeNode() - .appendChild( url7.dup().appendChild( new TextNode("1") ) ) - .appendChild( url2.dup().appendChild( new TextNode("2") ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( url4.dup().appendChild( new TextNode("4") ) ) - .appendChild( url5.dup().appendChild( new TextNode("5") ) ) - .appendChild( url8.dup().appendChild( new TextNode("6") ) ) - .appendChild( url4.dup().appendChild( new TextNode("7") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - } - - @Test public void testRangeHyperlinkRuby() throws Exception - { - RangeInserter inserter = new RangeInserter(m_xDoc); - TreeNode text = new TextNode("123456789"); - inserter.insertRange( new Range(0, 0, text) ); - TreeNode url1 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(1, 4, url1) ); - // overlap left - TreeNode rby2 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(0, 2, rby2) ); - TreeNode root = new TreeNode() - .appendChild( rby2.dup() - .appendChild( new TextNode("1") ) - .appendChild( url1.dup().appendChild( new TextNode("2") ) ) ) - .appendChild( url1.dup().appendChild( new TextNode("34") ) ) - .appendChild( new TextNode("56789") ); - doTest(root, false); - // overlap right - TreeNode rby3 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(3, 5, rby3) ); - root = new TreeNode() - .appendChild( rby2.dup() - .appendChild( new TextNode("1") ) - .appendChild( url1.dup().appendChild( new TextNode("2") ) ) ) - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) - .appendChild( rby3.dup() - .appendChild( url1.dup().appendChild( new TextNode("4") ) ) - .appendChild( new TextNode("5") ) ) - .appendChild( new TextNode("6789") ); - doTest(root, false); - // around - TreeNode rby4 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(2, 3, rby4) ); - root = new TreeNode() - .appendChild( rby2.dup() - .appendChild( new TextNode("1") ) - .appendChild( url1.dup().appendChild( new TextNode("2") ) ) ) - .appendChild( rby4.dup() - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) ) - .appendChild( rby3.dup() - .appendChild( url1.dup().appendChild( new TextNode("4") ) ) - .appendChild( new TextNode("5") ) ) - .appendChild( new TextNode("6789") ); - doTest(root, false); - // inside - TreeNode url5 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(6, 9, url5) ); - TreeNode rby6 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(7, 8, rby6) ); - root = new TreeNode() - .appendChild( rby2.dup() - .appendChild( new TextNode("1") ) - .appendChild( url1.dup().appendChild( new TextNode("2") ) ) ) - .appendChild( rby4.dup() - .appendChild( url1.dup().appendChild( new TextNode("3") ) ) ) - .appendChild( rby3.dup() - .appendChild( url1.dup().appendChild( new TextNode("4") ) ) - .appendChild( new TextNode("5") ) ) - .appendChild( new TextNode("6") ) - .appendChild( url5.dup().appendChild( new TextNode("7") ) ) - .appendChild( rby6.dup() - .appendChild( url5.dup().appendChild( new TextNode("8") ) ) ) - .appendChild( url5.dup().appendChild( new TextNode("9") ) ); - doTest(root, false); - } - - @Test public void testRangeRubyHyperlink() throws Exception - { - RangeInserter inserter = new RangeInserter(m_xDoc); - TreeNode text = new TextNode("123456789"); - inserter.insertRange( new Range(0, 0, text) ); - TreeNode rby1 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(1, 6, rby1) ); - // overlap left - TreeNode url2 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(0, 3, url2) ); - TreeNode root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("1") ) ) - .appendChild( rby1.dup() - .appendChild( url2.dup().appendChild( new TextNode("23") ) ) - .appendChild( new TextNode("456") ) ) - .appendChild( new TextNode("789") ); - doTest(root, false); - // overlap right - TreeNode url3 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(5, 7, url3) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("1") ) ) - .appendChild( rby1.dup() - .appendChild( url2.dup().appendChild( new TextNode("23") ) ) - .appendChild( new TextNode("45") ) - .appendChild( url3.dup().appendChild( new TextNode("6") ) ) ) - .appendChild( url3.dup().appendChild( new TextNode("7") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // around (not quite, due to API) - TreeNode url4 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(1, 8, url4) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("1") ) ) - .appendChild( rby1.dup() - .appendChild( url4.dup() - .appendChild( new TextNode("23456") ) ) ) - .appendChild( url4.dup().appendChild( new TextNode("78") ) ) - .appendChild( new TextNode("9") ); - doTest(root, false); - // inside - TreeNode url5 = new HyperlinkNode( mkName("url") ); - inserter.insertRange( new Range(3, 5, url5) ); - root = new TreeNode() - .appendChild( url2.dup().appendChild( new TextNode("1") ) ) - .appendChild( rby1.dup() - .appendChild( url4.dup() - .appendChild( new TextNode("23") ) ) - .appendChild( url5.dup() - .appendChild( new TextNode("45") ) ) - .appendChild( url4.dup() - .appendChild( new TextNode("6") ) ) ) - .appendChild( url4.dup().appendChild( new TextNode("78") ) ) - .appendChild( new TextNode("9") ); - doTest(root, false); - } - - @Test public void testRangeRubyRuby() throws Exception - { - RangeInserter inserter = new RangeInserter(m_xDoc); - TreeNode text = new TextNode("123456789"); - inserter.insertRange( new Range(0, 0, text) ); - TreeNode rby1 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(1, 4, rby1) ); - // overlap left - TreeNode rby2 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(0, 2, rby2) ); - TreeNode root = new TreeNode() - .appendChild( rby2.dup().appendChild( new TextNode("12") ) ) - .appendChild( rby1.dup().appendChild( new TextNode("34") ) ) - .appendChild( new TextNode("56789") ); - doTest(root, false); - // overlap right - TreeNode rby3 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(3, 7, rby3) ); - root = new TreeNode() - .appendChild( rby2.dup().appendChild( new TextNode("12") ) ) - .appendChild( rby1.dup().appendChild( new TextNode("3") ) ) - .appendChild( rby3.dup().appendChild( new TextNode("4567") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // around - TreeNode rby4 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(3, 7, rby4) ); - root = new TreeNode() - .appendChild( rby2.dup().appendChild( new TextNode("12") ) ) - .appendChild( rby1.dup().appendChild( new TextNode("3") ) ) - .appendChild( rby4.dup().appendChild( new TextNode("4567") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - // inside - TreeNode rby5 = new RubyNode( mkName("ruby") ); - inserter.insertRange( new Range(4, 6, rby5) ); - root = new TreeNode() - .appendChild( rby2.dup().appendChild( new TextNode("12") ) ) - .appendChild( rby1.dup().appendChild( new TextNode("3") ) ) - .appendChild( rby4.dup().appendChild( new TextNode("4") ) ) - .appendChild( rby5.dup().appendChild( new TextNode("56") ) ) - .appendChild( rby4.dup().appendChild( new TextNode("7") ) ) - .appendChild( new TextNode("89") ); - doTest(root, false); - } - @Test public void testRangeHyperlinkMeta() throws Exception { RangeInserter inserter = new RangeInserter(m_xDoc); diff --git a/sw/qa/python/text_portion_enumeration_test.py b/sw/qa/python/text_portion_enumeration_test.py index 407b96218bd9..856fdb7571e9 100644 --- a/sw/qa/python/text_portion_enumeration_test.py +++ b/sw/qa/python/text_portion_enumeration_test.py @@ -388,6 +388,14 @@ class MetaFieldNode(MetaNode): return self._dup(MetaFieldNode, self.xmlid) +class Range(): + def __init__(self, start, end, node): + self.start = start + self.end = end + self.node = node + self.extent = end - start + + class Inserter(): def __init__(self, xDoc): @@ -592,6 +600,41 @@ class TreeInserter(Inserter): return xCursor +# FIXME: this does not account for inserted dummy characters! +class RangeInserter(Inserter): + def __init__(self, xDoc): + super().__init__(xDoc) + self.initparagraph() + + # def inserttext(self, pos, text): + # self.xCursor.gotoStartOfParagraph(False) + # self.xCursor.goRight(pos, False) + # self.inserttext(self.xCursor, text) + + def insertrange(self, range): + self.xCursor.gotoStartOfParagraph(False) + self.xCursor.goRight(range.start, False) + self.xCursor.goRight(range.extent, True) + return self.insertnode(self.xCursor, range.node) + + def insertnode(self, xParaCursor, node): + nodetype = node.nodetype + if nodetype == "Text": + text = node + self.inserttext(xParaCursor, text.content) + elif nodetype == "Hyperlink": + href = node + self.inserthyperlink(xParaCursor, href.url) + elif nodetype == "Ruby": + ruby = node + self.insertruby(xParaCursor, ruby.ruby) + elif nodetype == "SoftPageBreak": + raise RuntimeError("sorry, cannot test SoftPageBreak") + else: + raise RuntimeError("unexpected nodetype: {}".format(nodetype)) + return None + + class EnumConverter(): def __init__(self): @@ -1473,6 +1516,266 @@ class TextPortionEnumerationTest(unittest.TestCase): root.appendchild(TextFieldNode("h")) self.dotest(root) + # some range tests for the insertion: these are for the current + # API which treats hyperlinks and rubys not as entities, but as formatting + # attributes; if these ever become entities, they should not be split!''' + + def test_range1(self): + name1 = self.mkname("url") + inserter = RangeInserter(self.__class__.xDoc) + text = TextNode("12345") + inserter.insertrange(Range(0, 0, text)) + url1 = HyperlinkNode(name1) + range1 = Range(0, 5, url1) + inserter.insertrange(range1) + root = TreeNode() + root.appendchild(url1) + url1.appendchild(text) + self.dotest(root, False) + + def test_range_hyperlink_hyperlink(self): + inserter = RangeInserter(self.__class__.xDoc) + text = TextNode("123456789") + inserter.insertrange(Range(0, 0, text)) + url1 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(1, 4, url1)) + ## overlap left + url2 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(0, 2, url2)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("12"))) + root.appendchild(url1.dup().appendchild(TextNode("34"))) + root.appendchild(TextNode("56789")) + self.dotest(root, False) + ## overlap right + url3 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(3, 7, url3)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("12"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url3.dup().appendchild(TextNode("4567"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## around + url4 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(3, 7, url4)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("12"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url4.dup().appendchild(TextNode("4567"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## inside + url5 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(4, 6, url5)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("12"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url4.dup().appendchild(TextNode("4"))) + root.appendchild(url5.dup().appendchild(TextNode("56"))) + root.appendchild(url4.dup().appendchild(TextNode("7"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## empty + url6 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(7, 7, url6)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("12"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url4.dup().appendchild(TextNode("4"))) + root.appendchild(url5.dup().appendchild(TextNode("56"))) + root.appendchild(url4.dup().appendchild(TextNode("7"))) + ## this one gets eaten, but we still need to test inserting it (#i106930#) + # root.appendchild(url6.dup().appendchild(TextNode(""))) + root.appendchild(TextNode("89")) + ## inside (left-edge) + url7 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(0, 1, url7)) + root = TreeNode() + root.appendchild(url7.dup().appendchild(TextNode("1"))) + root.appendchild(url2.dup().appendchild(TextNode("2"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url4.dup().appendchild(TextNode("4"))) + root.appendchild(url5.dup().appendchild(TextNode("56"))) + root.appendchild(url4.dup().appendchild(TextNode("7"))) + root.appendchild(TextNode("89")) + ## inside (right-edge) + url8 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(5, 6, url8)) + root = TreeNode() + root.appendchild(url7.dup().appendchild(TextNode("1"))) + root.appendchild(url2.dup().appendchild(TextNode("2"))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(url4.dup().appendchild(TextNode("4"))) + root.appendchild(url5.dup().appendchild(TextNode("5"))) + root.appendchild(url8.dup().appendchild(TextNode("6"))) + root.appendchild(url4.dup().appendchild(TextNode("7"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + + def test_range_hyperlink_ruby(self): + inserter = RangeInserter(self.__class__.xDoc) + text = TextNode("123456789") + inserter.insertrange(Range(0, 0, text)) + url1 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(1, 4, url1)) + # overlap left + rby2 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(0, 2, rby2)) + root = TreeNode() + root.appendchild(rby2.dup() + .appendchild(TextNode("1")) + .appendchild(url1.dup().appendchild(TextNode("2")))) + root.appendchild(url1.dup().appendchild(TextNode("34"))) + root.appendchild(TextNode("56789")) + self.dotest(root, False) + # overlap right + rby3 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(3, 5, rby3)) + root = TreeNode() + root.appendchild(rby2.dup() + .appendchild(TextNode("1")) + .appendchild(url1.dup().appendchild(TextNode("2")))) + root.appendchild(url1.dup().appendchild(TextNode("3"))) + root.appendchild(rby3.dup() + .appendchild(url1.dup().appendchild(TextNode("4"))) + .appendchild(TextNode("5"))) + root.appendchild(TextNode("6789")) + self.dotest(root, False) + # around + rby4 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(2, 3, rby4)) + root = TreeNode() + root.appendchild(rby2.dup() + .appendchild(TextNode("1")) + .appendchild(url1.dup().appendchild(TextNode("2")))) + root.appendchild(rby4.dup() + .appendchild(url1.dup().appendchild(TextNode("3")))) + root.appendchild(rby3.dup() + .appendchild(url1.dup().appendchild(TextNode("4"))) + .appendchild(TextNode("5"))) + root.appendchild(TextNode("6789")) + self.dotest(root, False) + # inside + url5 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(6, 9, url5)) + rby6 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(7, 8, rby6)) + root = TreeNode() + root.appendchild(rby2.dup() + .appendchild(TextNode("1")) + .appendchild(url1.dup().appendchild(TextNode("2")))) + root.appendchild(rby4.dup() + .appendchild(url1.dup().appendchild(TextNode("3")))) + root.appendchild(rby3.dup() + .appendchild(url1.dup().appendchild(TextNode("4"))) + .appendchild(TextNode("5"))) + root.appendchild(TextNode("6")) + root.appendchild(url5.dup().appendchild(TextNode("7"))) + root.appendchild(rby6.dup() + .appendchild(url5.dup().appendchild(TextNode("8")))) + root.appendchild(url5.dup().appendchild(TextNode("9"))) + self.dotest(root, False) + + def test_range_ruby_hyperlink(self): + inserter = RangeInserter(self.__class__.xDoc) + text = TextNode("123456789") + inserter.insertrange(Range(0, 0, text)) + rby1 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(1, 6, rby1)) + ## overlap left + url2 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(0, 3, url2)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("1"))) + root.appendchild(rby1.dup() + .appendchild(url2.dup().appendchild(TextNode("23"))) + .appendchild(TextNode("456"))) + root.appendchild(TextNode("789")) + self.dotest(root, False) + ## overlap right + url3 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(5, 7, url3)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("1"))) + root.appendchild(rby1.dup() + .appendchild(url2.dup().appendchild(TextNode("23"))) + .appendchild(TextNode("45")) + .appendchild(url3.dup().appendchild(TextNode("6")))) + root.appendchild(url3.dup().appendchild(TextNode("7"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## around (not quite, due to API) + url4 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(1, 8, url4)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("1"))) + root.appendchild(rby1.dup() + .appendchild(url4.dup() + .appendchild(TextNode("23456")))) + root.appendchild(url4.dup().appendchild(TextNode("78"))) + root.appendchild(TextNode("9")) + self.dotest(root, False) + ## inside + url5 = HyperlinkNode(self.mkname("url")) + inserter.insertrange(Range(3, 5, url5)) + root = TreeNode() + root.appendchild(url2.dup().appendchild(TextNode("1"))) + root.appendchild(rby1.dup() + .appendchild(url4.dup() + .appendchild(TextNode("23"))) + .appendchild(url5.dup() + .appendchild(TextNode("45"))) + .appendchild(url4.dup() + .appendchild(TextNode("6")))) + root.appendchild(url4.dup().appendchild(TextNode("78"))) + root.appendchild(TextNode("9")) + self.dotest(root, False) + + def test_range_ruby_ruby(self): + inserter = RangeInserter(self.__class__.xDoc) + text = TextNode("123456789") + inserter.insertrange(Range(0, 0, text)) + rby1 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(1, 4, rby1)) + ## overlap left + rby2 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(0, 2, rby2)) + root = TreeNode() + root.appendchild(rby2.dup().appendchild(TextNode("12"))) + root.appendchild(rby1.dup().appendchild(TextNode("34"))) + root.appendchild(TextNode("56789")) + self.dotest(root, False) + ## overlap right + rby3 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(3, 7, rby3)) + root = TreeNode() + root.appendchild(rby2.dup().appendchild(TextNode("12"))) + root.appendchild(rby1.dup().appendchild(TextNode("3"))) + root.appendchild(rby3.dup().appendchild(TextNode("4567"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## around + rby4 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(3, 7, rby4)) + root = TreeNode() + root.appendchild(rby2.dup().appendchild(TextNode("12"))) + root.appendchild(rby1.dup().appendchild(TextNode("3"))) + root.appendchild(rby4.dup().appendchild(TextNode("4567"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + ## inside + rby5 = RubyNode(self.mkname("ruby")) + inserter.insertrange(Range(4, 6, rby5)) + root = TreeNode() + root.appendchild(rby2.dup().appendchild(TextNode("12"))) + root.appendchild(rby1.dup().appendchild(TextNode("3"))) + root.appendchild(rby4.dup().appendchild(TextNode("4"))) + root.appendchild(rby5.dup().appendchild(TextNode("56"))) + root.appendchild(rby4.dup().appendchild(TextNode("7"))) + root.appendchild(TextNode("89")) + self.dotest(root, False) + def dotest(self, intree, insert=True): xDoc = self.__class__.xDoc self._dotest(xDoc, intree, insert) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits