Blame swig/java/tests/LibyangTest.java

Packit 8fb591
import org.cesnet.*;
Packit 8fb591
import org.cesnet.Module;
Packit 8fb591
import static org.cesnet.LYD_FORMAT.LYD_XML;
Packit 8fb591
import static org.cesnet.LYS_INFORMAT.LYS_IN_YANG;
Packit 8fb591
import static org.cesnet.LYS_INFORMAT.LYS_IN_YIN;
Packit 8fb591
import static org.cesnet.yangConstants.LYD_OPT_CONFIG;
Packit 8fb591
import static org.cesnet.yangConstants.LYD_OPT_STRICT;
Packit 8fb591
import static org.cesnet.yangConstants.LYD_VAL_OK;
Packit 8fb591
Packit 8fb591
import org.junit.Test;
Packit 8fb591
import static org.junit.Assert.*;
Packit 8fb591
Packit 8fb591
public class LibyangTest {
Packit 8fb591
Packit 8fb591
    static {
Packit 8fb591
        System.loadLibrary("yangJava");
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_new(){
Packit 8fb591
        String yang_folder1 = Constants.TESTS_DIR + "/data/files";
Packit 8fb591
        String yang_folder2 = Constants.TESTS_DIR + "/data:" + Constants.TESTS_DIR + "/data/files";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder1);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
            vector_String list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(1, list.size());
Packit 8fb591
Packit 8fb591
            ctx = new Context(yang_folder2);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
            list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(2, list.size());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_new_invalid(){
Packit 8fb591
        String yang_folder = "INVALID_PATH";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            throw new Exception("exception not thrown");
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            assertTrue(e.getMessage().contains("No Context"));
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_get_searchdirs() {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/data/files";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            vector_String list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(1, list.size());
Packit 8fb591
            assertEquals(yang_folder, list.get(0));
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void  test_ly_ctx_set_searchdir() {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/data/files";
Packit 8fb591
        String new_yang_folder = Constants.TESTS_DIR + "/schema/yin";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            vector_String list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(1, list.size());
Packit 8fb591
            assertEquals(yang_folder, list.get(0));
Packit 8fb591
Packit 8fb591
            ctx.set_searchdir(new_yang_folder);
Packit 8fb591
            list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(2, list.size());
Packit 8fb591
            assertEquals(new_yang_folder, list.get(1));
Packit 8fb591
Packit 8fb591
            ctx.unset_searchdirs(0);
Packit 8fb591
            list = ctx.get_searchdirs();
Packit 8fb591
            assertEquals(1, list.size());
Packit 8fb591
            assertEquals(new_yang_folder, list.get(0));
Packit 8fb591
        } catch(Exception e ) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_set_searchdir_invalid() {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/data/files";
Packit 8fb591
        String new_yang_folder = Constants.TESTS_DIR + "INVALID_PATH";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            ctx.set_searchdir(new_yang_folder);
Packit 8fb591
            throw new Exception("exception not thrown");
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            assertTrue(e.getMessage().contains(new_yang_folder));
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_info(){
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Data_Node info = ctx.info();
Packit 8fb591
            assertNotNull(info);
Packit 8fb591
            assertEquals(LYD_VAL_OK, info.validity());
Packit 8fb591
        } catch(Exception e ) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_load_module_invalid() {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.load_module("invalid", null);
Packit 8fb591
            throw new Exception("exception not thrown");
Packit 8fb591
        } catch(Exception e ) {
Packit 8fb591
            assertTrue(e.getMessage().contains("invalid"));
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_load_get_module()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String name1 = "a";
Packit 8fb591
        String name2 = "b";
Packit 8fb591
        String revision = "2016-03-01";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.get_module("invalid");
Packit 8fb591
            assertNull(module);
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(name1);
Packit 8fb591
            assertNull(module);
Packit 8fb591
Packit 8fb591
            module = ctx.load_module(name1);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(name1, module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.load_module(name2, revision);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(name2, module.name());
Packit 8fb591
            assertEquals(revision, module.rev().date());
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(name2, "INVALID_REVISION");
Packit 8fb591
            assertNull(module);
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(name1);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(name1, module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(name2, revision);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(name2, module.name());
Packit 8fb591
            assertEquals(revision, module.rev().date());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_get_module_older()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String name = "b";
Packit 8fb591
        String revision = "2016-03-01";
Packit 8fb591
        String revision_older = "2015-01-01";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.load_module("c");
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals("c", module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.load_module(name, revision);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(name, module.name());
Packit 8fb591
            assertEquals(revision, module.rev().date());
Packit 8fb591
Packit 8fb591
            Module module_older = ctx.get_module_older(module);
Packit 8fb591
            assertNotNull(module_older);
Packit 8fb591
            assertEquals(name, module_older.name());
Packit 8fb591
            assertEquals(revision_older, module_older.rev().date());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_get_module_by_ns()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String module_name = "a";
Packit 8fb591
        String ns = "urn:a";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.load_module(module_name);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name, module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.get_module_by_ns(ns);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name, module.name());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_clean()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String module_name = "a";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.load_module(module_name);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name, module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(module_name);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name, module.name());
Packit 8fb591
Packit 8fb591
            ctx.clean();
Packit 8fb591
Packit 8fb591
            module = ctx.get_module(module_name);
Packit 8fb591
            assertNull(module);
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_parse_module_path()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String yin_file = Constants.TESTS_DIR + "/api/files/a.yin";
Packit 8fb591
        String yang_file = Constants.TESTS_DIR + "/api/files/b.yang";
Packit 8fb591
        String module_name1 = "a";
Packit 8fb591
        String module_name2 = "b";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.parse_module_path(yin_file, LYS_IN_YIN);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name1, module.name());
Packit 8fb591
Packit 8fb591
            module = ctx.parse_module_path(yang_file, LYS_IN_YANG);
Packit 8fb591
            assertNotNull(module);
Packit 8fb591
            assertEquals(module_name2, module.name());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_parse_module_path_invalid()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            Module module = ctx.parse_module_path("INVALID_YANG_FILE", LYS_IN_YANG);
Packit 8fb591
            throw new Exception("exception not thrown");
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            assertTrue(e.getMessage().contains("INVALID_YANG_FILE"));
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_get_submodule()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String yin_file = Constants.TESTS_DIR + "/api/files/a.yin";
Packit 8fb591
        String module_name = "a";
Packit 8fb591
        String sub_name = "asub";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
            ctx.parse_module_path(yin_file, LYS_IN_YIN);
Packit 8fb591
Packit 8fb591
            Submodule submodule = ctx.get_submodule(module_name, null, sub_name, null);
Packit 8fb591
            assertNotNull(submodule);
Packit 8fb591
            assertEquals(sub_name, submodule.name());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_get_submodule2()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String yin_file = Constants.TESTS_DIR + "/api/files/a.yin";
Packit 8fb591
        String config_file = Constants.TESTS_DIR + "/api/files/a.xml";
Packit 8fb591
        String sub_name = "asub";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
            ctx.parse_module_path(yin_file, LYS_IN_YIN);
Packit 8fb591
Packit 8fb591
            Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT);
Packit 8fb591
            assertNotNull(root);
Packit 8fb591
            assertNotNull(root.schema().module());
Packit 8fb591
Packit 8fb591
            Submodule submodule = ctx.get_submodule2(root.schema().module(), sub_name);
Packit 8fb591
            assertNotNull(submodule);
Packit 8fb591
            assertEquals(sub_name, submodule.name());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        return;
Packit 8fb591
    }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_ctx_find_path()
Packit 8fb591
    {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String yin_file = Constants.TESTS_DIR + "/api/files/a.yin";
Packit 8fb591
        String yang_file = Constants.TESTS_DIR + "/api/files/b.yang";
Packit 8fb591
        String schema_path1 = "/b:x/b:bubba";
Packit 8fb591
        String schema_path2 = "/a:x/a:bubba";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
Packit 8fb591
            ctx.parse_module_path(yang_file, LYS_IN_YANG);
Packit 8fb591
            Set set = ctx.find_path(schema_path1);
Packit 8fb591
            assertNotNull(set);
Packit 8fb591
Packit 8fb591
            ctx.parse_module_path(yin_file, LYS_IN_YIN);
Packit 8fb591
            set = ctx.find_path(schema_path2);
Packit 8fb591
            assertNotNull(set);
Packit 8fb591
            new Set();
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    @Test
Packit 8fb591
    public void test_ly_set() {
Packit 8fb591
        String yang_folder = Constants.TESTS_DIR + "/api/files";
Packit 8fb591
        String yin_file = Constants.TESTS_DIR + "/api/files/a.yin";
Packit 8fb591
        String config_file = Constants.TESTS_DIR + "/api/files/a.xml";
Packit 8fb591
Packit 8fb591
        try {
Packit 8fb591
            Context ctx = new Context(yang_folder);
Packit 8fb591
            assertNotNull(ctx);
Packit 8fb591
            ctx.parse_module_path(yin_file, LYS_IN_YIN);
Packit 8fb591
            Data_Node root = ctx.parse_data_path(config_file, LYD_XML, LYD_OPT_CONFIG | LYD_OPT_STRICT);
Packit 8fb591
            assertNotNull(root);
Packit 8fb591
Packit 8fb591
            Set set = new Set();
Packit 8fb591
            assertNotNull(set);
Packit 8fb591
            assertEquals(0, set.number());
Packit 8fb591
Packit 8fb591
            set.add(root.child().schema());
Packit 8fb591
            assertEquals(1, set.number());
Packit 8fb591
Packit 8fb591
            set.add(root.schema());
Packit 8fb591
            assertEquals(2, set.number());
Packit 8fb591
Packit 8fb591
            set.rm(root.schema());
Packit 8fb591
            assertEquals(1, set.number());
Packit 8fb591
Packit 8fb591
            set.add(root.schema());
Packit 8fb591
            assertEquals(2, set.number());
Packit 8fb591
Packit 8fb591
            set.rm_index(1);
Packit 8fb591
            assertEquals(1, set.number());
Packit 8fb591
Packit 8fb591
            set.clean();
Packit 8fb591
            assertEquals(0, set.number());
Packit 8fb591
        } catch(Exception e) {
Packit 8fb591
            fail(e.getMessage());
Packit 8fb591
        }
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
    public static void main(String[] args) {
Packit 8fb591
        new LibyangTest();
Packit 8fb591
    }
Packit 8fb591
Packit 8fb591
}