diff options
author | Michael Voronin <survivor.mail@gmail.com> | 2022-12-22 10:32:12 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-22 08:32:12 +0100 |
commit | 7931bdac956cb3ad6734eab91c62920f4e80f919 (patch) | |
tree | 08f275175573391aa327587198a30fbb685343cf /tests | |
parent | 93b59da4902886cd68dd7df1dce09a1b455a06dc (diff) | |
download | Nim-7931bdac956cb3ad6734eab91c62920f4e80f919.tar.gz |
Feature/xmltree additions (#20988)
* [change] add/insert/delete family of xmltree expanded with several variations. Added replace methods family * [change] Lifted child limitations on insert methods (consulted with @araq) * [tests] add/insert/replace/delete of xmltree XmlNodes tests added
Diffstat (limited to 'tests')
-rw-r--r-- | tests/xml/ttree_add.nim | 51 | ||||
-rw-r--r-- | tests/xml/ttree_add1.nim | 53 | ||||
-rw-r--r-- | tests/xml/ttree_delete.nim | 47 | ||||
-rw-r--r-- | tests/xml/ttree_delete1.nim | 48 | ||||
-rw-r--r-- | tests/xml/ttree_insert.nim | 53 | ||||
-rw-r--r-- | tests/xml/ttree_insert1.nim | 51 | ||||
-rw-r--r-- | tests/xml/ttree_replace.nim | 46 | ||||
-rw-r--r-- | tests/xml/ttree_replace1.nim | 53 |
8 files changed, 402 insertions, 0 deletions
diff --git a/tests/xml/ttree_add.nim b/tests/xml/ttree_add.nim new file mode 100644 index 000000000..4c6ef6cf9 --- /dev/null +++ b/tests/xml/ttree_add.nim @@ -0,0 +1,51 @@ +discard """ + output: ''' +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocHead = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> +</xml> +""" +var baseDocHeadTree = parseXml(baseDocHead) +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) + +proc test_add() = + var testDoc = baseDocHeadTree + var newBody = newElement("body") + for item in baseDocBodyTree.items(): + newBody.add(item) + + echo $newBody + + testDoc.add(newBody) + echo $testDoc + +test_add() diff --git a/tests/xml/ttree_add1.nim b/tests/xml/ttree_add1.nim new file mode 100644 index 000000000..30ec83c02 --- /dev/null +++ b/tests/xml/ttree_add1.nim @@ -0,0 +1,53 @@ +discard """ + output: ''' +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocHead = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> +</xml> +""" +var baseDocHeadTree = parseXml(baseDocHead) +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) + +proc test_add() = + var testDoc = baseDocHeadTree + var newBody = newElement("body") + var bodyItems: seq[XmlNode] = @[] + for item in baseDocBodyTree.items(): + bodyItems.add(item) + newBody.add(bodyItems) + + echo $newBody + + testDoc.add(newBody) + echo $testDoc + +test_add() diff --git a/tests/xml/ttree_delete.nim b/tests/xml/ttree_delete.nim new file mode 100644 index 000000000..32b477839 --- /dev/null +++ b/tests/xml/ttree_delete.nim @@ -0,0 +1,47 @@ +discard """ + output: ''' +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +let initialDocBase = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <tag> + <div>MORE TEXT </div> + <div>MORE TEXT Some more text</div> + </tag> + <tag> + <div>MORE TEXT </div> + <div>MORE TEXT Some more text</div> + </tag> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +""" +var initialDocBaseTree = parseXml(initialDocBase) + +proc test_delete() = + var testDoc = initialDocBaseTree + + testDoc.delete(1..2) + echo $testDoc + +test_delete() diff --git a/tests/xml/ttree_delete1.nim b/tests/xml/ttree_delete1.nim new file mode 100644 index 000000000..a8442a093 --- /dev/null +++ b/tests/xml/ttree_delete1.nim @@ -0,0 +1,48 @@ +discard """ + output: ''' +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +let initialDocBase = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <tag> + <div>MORE TEXT </div> + <div>MORE TEXT Some more text</div> + </tag> + <tag> + <div>MORE TEXT </div> + <div>MORE TEXT Some more text</div> + </tag> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +""" +var initialDocBaseTree = parseXml(initialDocBase) + +proc test_delete() = + var testDoc = initialDocBaseTree + + testDoc.delete(1) + testDoc.delete(1) + echo $testDoc + +test_delete() diff --git a/tests/xml/ttree_insert.nim b/tests/xml/ttree_insert.nim new file mode 100644 index 000000000..b2941395b --- /dev/null +++ b/tests/xml/ttree_insert.nim @@ -0,0 +1,53 @@ +discard """ + output: ''' +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocHead = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> +</xml> +""" +var baseDocHeadTree = parseXml(baseDocHead) +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) + +proc test_insert() = + var testDoc = baseDocHeadTree + var newBody = newElement("body") + var bodyItems: seq[XmlNode] = @[] + for item in baseDocBodyTree.items(): + bodyItems.insert(item, len(bodyItems)) + newBody.insert(bodyItems, 1) + + echo $newBody + + testDoc.insert(newBody, 1) + echo $testDoc + +test_insert() diff --git a/tests/xml/ttree_insert1.nim b/tests/xml/ttree_insert1.nim new file mode 100644 index 000000000..9aa3faf69 --- /dev/null +++ b/tests/xml/ttree_insert1.nim @@ -0,0 +1,51 @@ +discard """ + output: ''' +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocHead = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> +</xml> +""" +var baseDocHeadTree = parseXml(baseDocHead) +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) + +proc test_insert() = + var testDoc = baseDocHeadTree + var newBody = newElement("body") + for item in baseDocBodyTree.items(): + newBody.insert(item, len(newBody)) + + echo $newBody + + testDoc.insert(newBody, 1) + echo $testDoc + +test_insert() diff --git a/tests/xml/ttree_replace.nim b/tests/xml/ttree_replace.nim new file mode 100644 index 000000000..97d2db638 --- /dev/null +++ b/tests/xml/ttree_replace.nim @@ -0,0 +1,46 @@ +discard """ + output: ''' +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) +let initialDocBase = """ +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body before replace </div> + <div>Some more text in body before replace </div> + </body> +</xml> +""" +var initialDocBaseTree = parseXml(initialDocBase) + +proc test_replace() = + var testDoc = initialDocBaseTree + + testDoc.replace(1, @[baseDocBodyTree]) + echo $testDoc + +test_replace() diff --git a/tests/xml/ttree_replace1.nim b/tests/xml/ttree_replace1.nim new file mode 100644 index 000000000..059ce2085 --- /dev/null +++ b/tests/xml/ttree_replace1.nim @@ -0,0 +1,53 @@ +discard """ + output: ''' +<xml> + <head> + <div>Some text</div> + <div>Some more text </div> + </head> + <body> + <div>Some text in body</div> + <div>Some more text in body </div> + </body> +</xml> +''' +""" + +# Test xmltree add/insert/delete/replace operations +import xmlparser +import xmltree +var baseDocHead = """ + <head> + <div>Some text</div> + <div>Some more text </div> + </head> +""" +var baseDocHeadTree = parseXml(baseDocHead) +var baseDocBody = """ +<body> + <div>Some text in body</div> + <div>Some more text in body </div> +</body> +""" +var baseDocBodyTree = parseXml(baseDocBody) +let initialDocBase = """ +<xml> + <head> + <div>Some text before replace </div> + <div>Some more text before replace </div> + </head> + <body> + <div>Some text in body before replace </div> + <div>Some more text in body before replace </div> + </body> +</xml> +""" +var initialDocBaseTree = parseXml(initialDocBase) + +proc test_replace() = + var testDoc = initialDocBaseTree + + testDoc.replace(0..1, @[baseDocHeadTree, baseDocBodyTree]) + echo $testDoc + +test_replace() |