/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ /* Notation.vala * * Copyright (C) 2016 Daniel Espinosa * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, see . * * Authors: * Daniel Espinosa */ using GXml; class GElementTest : GXmlTest { public static void add_tests () { Test.add_func ("/gxml/gelement/to_string", () =>{ try { DomDocument doc = new GDocument.from_string (""); var elem = doc.create_element ("country"); var t = doc.create_text_node ("New Zealand"); assert (t != null); elem.append_child (t); message ("Elem1:"+elem.write_string ()); assert (elem.write_string () == "New Zealand"); var elem2 = doc.create_element ("messy"); var t2 = doc.create_text_node ("<<>>"); elem2.append_child (t2); message ("Elem2:"+elem2.write_string ()); assert (elem2.write_string () == "&lt;<>&gt;"); } catch (GLib.Error e) { Test.message (e.message); assert_not_reached (); } }); Test.add_func ("/gxml/gelement/previous_element_sibling", () => { try { var doc = new GDocument.from_string (" "); assert (doc.document_element != null); assert (doc.document_element.parent_node is GXml.DomNode); assert (doc.document_element.parent_node is GXml.DomDocument); assert (doc.document_element.child_nodes[0] != null); assert (doc.document_element.child_nodes[0].parent_node != null); assert (doc.document_element.child_nodes[0].parent_node.node_name == "root"); assert (doc.document_element.child_nodes[0] is DomText); assert (doc.document_element.child_nodes[1] != null); assert (doc.document_element.child_nodes[1] is DomElement); assert (doc.document_element.child_nodes[1].node_name == "child"); assert ((doc.document_element.child_nodes[1] as DomElement).next_element_sibling != null); assert ((doc.document_element.child_nodes[1] as DomElement).next_element_sibling is DomElement); assert ((doc.document_element.child_nodes[1] as DomElement).next_element_sibling.node_name == "child"); assert (doc.document_element.child_nodes[2] != null); assert (doc.document_element.child_nodes[2].parent_node != null); assert (doc.document_element.child_nodes[2].parent_node.node_name == "root"); assert (doc.document_element.child_nodes[2] is DomText); assert (doc.document_element.child_nodes[3] != null); assert (doc.document_element.child_nodes[3] is DomElement); assert (doc.document_element.child_nodes[3].node_name == "child"); assert ((doc.document_element.child_nodes[3] as DomElement).previous_element_sibling != null); assert ((doc.document_element.child_nodes[3] as DomElement).previous_element_sibling is DomElement); assert ((doc.document_element.child_nodes[3] as DomElement).previous_element_sibling.node_name == "child"); } catch (GLib.Error e) { Test.message (e.message); assert_not_reached (); } }); Test.add_func ("/gxml/gelement/css-selector", () => { try { var d = new GDocument () as DomDocument; var r = d.create_element ("root"); d.append_child (r); var c1 = d.create_element ("child"); c1.set_attribute ("class", "error"); r.append_child (c1); var c2 = d.create_element ("child"); c2.set_attribute ("class", "warning"); r.append_child (c2); var c3 = d.create_element ("child"); c3.set_attribute ("class", "error warning"); r.append_child (c3); var c4 = d.create_element ("child"); c4.set_attribute ("class", "error calc"); r.append_child (c4); var c5 = d.create_element ("child"); r.append_child (c5); var n1 = r.query_selector ("child"); assert (n1 != null); assert (n1.get_attribute ("class") == "error"); var n2 = r.query_selector ("child.warning"); assert (n2 != null); assert (n2.get_attribute ("class") == "warning"); var n3 = r.query_selector ("child[class]"); assert (n3 != null); assert (n3.get_attribute ("class") == "error"); var n4 = r.query_selector ("child[class=\"error calc\"]"); assert (n4 != null); assert (n4.get_attribute ("class") == "error calc"); var l1 = r.query_selector_all ("child"); assert (l1 != null); assert (l1.length == 5); assert (l1.item (4).node_name == "child"); var l2 = r.query_selector_all ("child[class]"); assert (l2 != null); assert (l2.length == 4); assert (l2.item (3).node_name == "child"); var l3 = r.query_selector_all ("child[class=\"error\"]"); assert (l3 != null); assert (l3.length == 1); assert (l3.item (0).node_name == "child"); var c6 = d.create_element ("child"); c6.set_attribute ("prop", "val1"); r.append_child (c6); var c7 = d.create_element ("child"); c7.set_attribute ("prop", "val1"); r.append_child (c7); var l4 = r.query_selector_all ("child[prop=\"val1\"]"); assert (l4 != null); assert (l4.length == 2); assert (l4.item (0).node_name == "child"); } catch (GLib.Error e) { GLib.message ("Error: "+e.message); assert_not_reached (); } }); Test.add_func ("/gxml/g-document/dom-write-read", () => { try { DomDocument d = new GDocument (); File dir = File.new_for_path (GXmlTestConfig.TEST_DIR); assert (dir.query_exists ()); File f = File.new_for_uri (dir.get_uri ()+"/test-large.xml"); assert (f.query_exists ()); d.read_from_file (f); } catch (GLib.Error e) { warning ("Error: %s", e.message); assert_not_reached (); } }); } }