| import com.cesnet.*; |
| import com.cesnet.Module; |
| import static com.cesnet.LYD_ANYDATA_VALUETYPE.LYD_ANYDATA_CONSTSTRING; |
| import static com.cesnet.LYD_FORMAT.LYD_JSON; |
| import static com.cesnet.LYD_FORMAT.LYD_XML; |
| import static com.cesnet.LYS_INFORMAT.LYS_IN_YIN; |
| import static com.cesnet.yangConstants.*; |
| |
| import java.io.FileDescriptor; |
| import java.io.RandomAccessFile; |
| import java.lang.reflect.Field; |
| import org.junit.Test; |
| import static org.junit.Assert.*; |
| |
| public class TreeDataTest { |
| |
| static { |
| System.loadLibrary("yangJava"); |
| } |
| |
| String lys_module_a = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" + |
| "<module xmlns=\"urn:ietf:params:xml:ns:yang:yin:1\" xmlns:md=\"urn:ietf:params:xml:ns:yang:ietf-yang-metadata\" xmlns:a=\"urn:a\" name=\"a\"> \n" + |
| " <namespace uri=\"urn:a\"/> \n" + |
| " <prefix value=\"a_mod\"/> \n" + |
| " <include module=\"asub\"/> \n" + |
| " <include module=\"atop\"/> \n" + |
| " <import module=\"ietf-yang-metadata\"> \n" + |
| " <prefix value=\"md\"/> \n" + |
| " </import> \n" + |
| " <feature name=\"foo\"/> \n" + |
| " <grouping name=\"gg\"> \n" + |
| " <leaf name=\"bar-gggg\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " </grouping> \n" + |
| " <md:annotation name=\"test\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </md:annotation> \n" + |
| " <container name=\"x\"> \n" + |
| " <leaf name=\"bar-leaf\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <uses name=\"gg\"></uses> \n" + |
| " <leaf name=\"baz\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"bubba\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"number32\"> \n" + |
| " <type name=\"int32\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"number64\"> \n" + |
| " <type name=\"int64\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"def-leaf\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " <default value=\"def\"/> \n" + |
| " </leaf> \n" + |
| " </container> \n" + |
| " <leaf name=\"y\">\n" + |
| " <type name=\"string\"/>\n" + |
| " </leaf> \n" + |
| " <anyxml name=\"any\"/> \n" + |
| " <augment target-node=\"/x\"> \n" + |
| " <container name=\"bar-y\"/> \n" + |
| " </augment> \n" + |
| " <rpc name=\"bar-rpc\"></rpc> \n" + |
| " <rpc name=\"foo-rpc\"></rpc> \n" + |
| " <rpc name=\"rpc1\"> \n" + |
| " <input> \n" + |
| " <leaf name=\"input-leaf1\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <container name=\"x\"> \n" + |
| " <leaf name=\"input-leaf2\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " </container> \n" + |
| " </input> \n" + |
| " <output> \n" + |
| " <leaf name=\"output-leaf1\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"output-leaf2\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " <container name=\"rpc-container\"> \n" + |
| " <leaf name=\"output-leaf3\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " </container> \n" + |
| " </output> \n" + |
| " </rpc> \n" + |
| " <list name=\"l\"> \n" + |
| " <key value=\"key1 key2\"/> \n" + |
| " <leaf name=\"key1\"> \n" + |
| " <type name=\"uint8\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"key2\"> \n" + |
| " <type name=\"uint8\"/> \n" + |
| " </leaf> \n" + |
| " <leaf name=\"value\"> \n" + |
| " <type name=\"string\"/> \n" + |
| " </leaf> \n" + |
| " </list> \n" + |
| "</module>"; |
| |
| String result_xml = "<x xmlns=\"urn:a\"><bubba>test</bubba></x>"; |
| String result_xml_format = |
| "<x xmlns=\"urn:a\">\n" + |
| " <bubba>test</bubba>\n" + |
| "</x>\n"; |
| String result_json = "{\n" + |
| " \"a:x\": {\n" + |
| " \"bubba\": \"test\"\n" + |
| " }\n" + |
| "}\n"; |
| |
| @Test |
| public void test_ly_ctx_parse_data_mem() { |
| String a_data_xml = "<x xmlns=\"urn:a\">\n" + |
| "<bubba>test</bubba>\n" + |
| "</x>"; |
| |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String yin_file = Constants.TESTS_DIR + "/api/files/a.yin"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_path(yin_file, LYS_IN_YIN); |
| |
| Data_Node root = ctx.parse_data_mem(a_data_xml, LYD_XML, LYD_OPT_NOSIBLINGS | LYD_OPT_STRICT); |
| assertNotNull(root); |
| assertEquals("x", root.schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_ctx_parse_data_fd() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String yin_file = Constants.TESTS_DIR + "/api/files/a.yin"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_path(yin_file, LYS_IN_YIN); |
| RandomAccessFile f = new RandomAccessFile(config_file, "r"); |
| FileDescriptor fileno = f.getFD(); |
| Field _fileno = FileDescriptor.class.getDeclaredField("fd"); |
| _fileno.setAccessible(true); |
| Integer fd = (Integer) _fileno.get(fileno); |
| |
| Data_Node root = ctx.parse_data_fd(fd, LYD_XML, LYD_OPT_NOSIBLINGS | LYD_OPT_STRICT); |
| assertNotNull(root); |
| assertEquals("x", root.schema().name()); |
| f.close(); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_ctx_parse_data_path() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String yin_file = Constants.TESTS_DIR + "/api/files/a.yin"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| String module_name = "a"; |
| String schema_name = "x"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| Module module = ctx.parse_module_path(yin_file, LYS_IN_YIN); |
| assertNotNull(module); |
| assertEquals(module_name, module.name()); |
| |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| assertEquals(schema_name, root.schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_ctx_parse_data_path_invalid() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| |
| Data_Node root = ctx.parse_data_path("INVALID_PATH", LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| throw new Exception("exception not thrown"); |
| } catch (Exception e) { |
| assertTrue(e.getMessage().contains("INVALID_PATH")); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node new_node = new Data_Node(root, root.child().schema().module(), "bar-y"); |
| assertNotNull(new_node); |
| new_node = new Data_Node(root, root.schema().module(), "number32", "100"); |
| assertNotNull(new_node); |
| Data_Node dup_node = new_node.dup(0); |
| assertNotNull(dup_node); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_new_path() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| Module mod = ctx.get_module("a", null, 1); |
| assertNotNull(mod); |
| |
| Data_Node root = new Data_Node(ctx, "/a:x/bar-gggg", "a", LYD_ANYDATA_CONSTSTRING, 0); |
| assertNotNull(root); |
| assertEquals("x", root.schema().name()); |
| assertEquals("bar-gggg", root.child().schema().name()); |
| |
| Data_Node node = root.new_path(ctx, "def-leaf", "def", LYD_ANYDATA_CONSTSTRING, LYD_PATH_OPT_DFLT); |
| assertNotNull(node); |
| assertEquals("def-leaf", node.schema().name()); |
| assertEquals(1, node.dflt()); |
| |
| node = root.new_path(ctx, "def-leaf", "def", LYD_ANYDATA_CONSTSTRING, 0); |
| assertNotNull(node); |
| assertEquals("def-leaf", node.schema().name()); |
| assertEquals(0, node.dflt()); |
| |
| node = root.new_path(ctx, "bubba", "b", LYD_ANYDATA_CONSTSTRING, 0); |
| assertNotNull(node); |
| assertEquals("bubba", node.schema().name()); |
| |
| node = root.new_path(ctx, "/a:x/number32", "3", LYD_ANYDATA_CONSTSTRING, 0); |
| assertNotNull(node); |
| assertEquals("number32", node.schema().name()); |
| |
| node = root.new_path(ctx, "/a:l[key1='1'][key2='2']/value", null, LYD_ANYDATA_CONSTSTRING, 0); |
| assertNotNull(node); |
| assertEquals("l", node.schema().name()); |
| assertEquals("key1", node.child().schema().name()); |
| assertEquals("key2", node.child().next().schema().name()); |
| assertEquals("value", node.child().next().next().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_insert() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| Data_Node new_node = new Data_Node(root, root.schema().module(), "number32", "200"); |
| assertNotNull(new_node); |
| int rc = root.insert(new_node); |
| assertEquals(0, rc); |
| assertEquals("number32", root.child().prev().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_insert_sibling() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node last = root.prev(); |
| Data_Node new_node = new Data_Node(null, root.schema().module(), "y", "test"); |
| assertNotNull(new_node); |
| int rc = root.insert_sibling(new_node); |
| assertEquals(0, rc); |
| assertNotEquals(last.schema().name(), root.prev().schema().name()); |
| assertEquals("y", root.prev().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_insert_before() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node last = root.prev(); |
| Data_Node new_node = new Data_Node(null, root.schema().module(), "y", "test"); |
| assertNotNull(new_node); |
| int rc = root.insert_before(new_node); |
| assertEquals(0, rc); |
| assertNotEquals(last.schema().name(), root.prev().schema().name()); |
| assertEquals("y", root.prev().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_insert_after() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node last = root.next(); |
| Data_Node new_node = new Data_Node(null, root.schema().module(), "y", "test"); |
| assertNotNull(new_node); |
| int rc = root.insert_after(new_node); |
| assertEquals(0, rc); |
| assertNotEquals(last.schema().name(), root.next().schema().name()); |
| assertEquals("y", root.next().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_schema_sort() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| Module mod = ctx.get_module("a", null, 1); |
| assertNotNull(mod); |
| |
| Data_Node root = new Data_Node(null, mod, "l"); |
| assertNotNull(root); |
| Data_Node node = new Data_Node(root, mod, "key1", "1"); |
| assertNotNull(node); |
| node = new Data_Node(root, mod, "key2", "2"); |
| assertNotNull(node); |
| |
| node = new Data_Node(null, mod, "x"); |
| assertNotNull(node); |
| int rc = root.insert_after(node); |
| assertEquals(0, rc); |
| node = root.next(); |
| |
| Data_Node node2 = new Data_Node(node, mod, "bubba", "a"); |
| assertNotNull(node2); |
| node2 = new Data_Node(node, mod, "bar-gggg", "b"); |
| assertNotNull(node2); |
| node2 = new Data_Node(node, mod, "number64", "64"); |
| assertNotNull(node2); |
| node2 = new Data_Node(node, mod, "number32", "32"); |
| assertNotNull(node2); |
| |
| rc = root.schema_sort(1); |
| assertEquals(0, rc); |
| |
| root = node; |
| assertEquals("x", root.schema().name()); |
| assertEquals("l", root.next().schema().name()); |
| |
| assertEquals("bar-gggg", root.child().schema().name()); |
| assertEquals("bubba", root.child().next().schema().name()); |
| assertEquals("number32", root.child().next().next().schema().name()); |
| assertEquals("number64", root.child().next().next().next().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_find_path() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node node = root.child(); |
| assertNotNull(node); |
| Set set = node.find_path("/a:x/bubba"); |
| assertNotNull(set); |
| assertEquals(1, set.number()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_find_instance() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node node = root.child(); |
| assertNotNull(node); |
| Set set = node.find_instance(node.schema()); |
| assertNotNull(set); |
| assertEquals(1, set.number()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_validate() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| int rc = root.validate(LYD_OPT_CONFIG, ctx); |
| assertEquals(0, rc); |
| Data_Node new_node = new Data_Node(root, root.schema().module(), "number32", "1"); |
| assertNotNull(new_node); |
| rc = root.insert(new_node); |
| assertEquals(0, rc); |
| rc = root.validate(LYD_OPT_CONFIG, ctx); |
| assertEquals(0, rc); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_unlink() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| Data_Node node = root.child(); |
| Data_Node new_node = new Data_Node(root, root.schema().module(), "number32", "1"); |
| assertNotNull(new_node); |
| int rc = root.insert(new_node); |
| assertEquals(0, rc); |
| |
| assertEquals("number32", node.prev().schema().name()); |
| |
| rc = node.prev().unlink(); |
| assertEquals(0, rc); |
| |
| assertNotEquals("number32", node.prev().schema().name()); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_print_mem_xml() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| String result = root.print_mem(LYD_XML, 0); |
| assertEquals(result_xml, result); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_print_mem_xml_format() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| String result = root.print_mem(LYD_XML, LYP_FORMAT); |
| assertEquals(result_xml_format, result); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_print_mem_json() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| String result = root.print_mem(LYD_JSON, LYP_FORMAT); |
| assertEquals(result_json, result); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| @Test |
| public void test_ly_data_node_path() { |
| String yang_folder = Constants.TESTS_DIR + "/api/files"; |
| String config_file = Constants.TESTS_DIR + "/api/files/a.xml"; |
| |
| try { |
| Context ctx = new Context(yang_folder); |
| assertNotNull(ctx); |
| ctx.parse_module_mem(lys_module_a, LYS_IN_YIN); |
| Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT); |
| assertNotNull(root); |
| |
| String path = root.path(); |
| assertNotNull(path); |
| assertEquals("/a:x", path); |
| path = root.child().path(); |
| assertNotNull(path); |
| assertEquals("/a:x/bubba", path); |
| } catch (Exception e) { |
| fail(e.getMessage()); |
| } |
| } |
| |
| public static void main(String[] args) { |
| new TreeDataTest(); |
| } |
| |
| } |