|
Packit |
8fb591 |
/**
|
|
Packit |
8fb591 |
* \file test_printer.c
|
|
Packit |
8fb591 |
* \author Michal Vasko <mvasko@cesnet.cz>
|
|
Packit |
8fb591 |
* \brief libyang tests - printers
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* Copyright (c) 2018 CESNET, z.s.p.o.
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* This source code is licensed under BSD 3-Clause License (the "License").
|
|
Packit |
8fb591 |
* You may not use this file except in compliance with the License.
|
|
Packit |
8fb591 |
* You may obtain a copy of the License at
|
|
Packit |
8fb591 |
*
|
|
Packit |
8fb591 |
* https://opensource.org/licenses/BSD-3-Clause
|
|
Packit |
8fb591 |
*/
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#include <stdarg.h>
|
|
Packit |
8fb591 |
#include <setjmp.h>
|
|
Packit |
8fb591 |
#include <stdlib.h>
|
|
Packit |
8fb591 |
#include <cmocka.h>
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#include "libyang.h"
|
|
Packit |
8fb591 |
#include "tests/config.h"
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
#define SCHEMA_FOLDER_YANG TESTS_DIR"/schema/yang/files"
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
struct ly_ctx *ctx;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static int
|
|
Packit |
8fb591 |
setup_ctx(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
ctx = ly_ctx_new(SCHEMA_FOLDER_YANG, 0);
|
|
Packit |
8fb591 |
if (!ctx) {
|
|
Packit |
8fb591 |
return -1;
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
return 0;
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static int
|
|
Packit |
8fb591 |
teardown_ctx(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx, NULL);
|
|
Packit |
8fb591 |
return 0;
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_tree_rfc(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *str;
|
|
Packit |
8fb591 |
const struct lys_module *moda, *modb;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
moda = ly_ctx_load_module(ctx, "tree-a", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(moda, NULL);
|
|
Packit |
8fb591 |
modb = ly_ctx_load_module(ctx, "tree-b", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(modb, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp1[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
" +--rw cont\n"
|
|
Packit |
8fb591 |
" +--rw leaf3? uint8\n"
|
|
Packit |
8fb591 |
" +--rw tb:list1* [key1]\n"
|
|
Packit |
8fb591 |
" +--rw tb:key1 -> /ta:cont/list1/leaf1\n"
|
|
Packit |
8fb591 |
" +--rw tb:leaf1? string\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" rpcs:\n"
|
|
Packit |
8fb591 |
" +---x rpc1\n"
|
|
Packit |
8fb591 |
" +---x rpc2\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" notifications:\n"
|
|
Packit |
8fb591 |
" +---n notif1\n"
|
|
Packit |
8fb591 |
" +---n notif2\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, NULL, 0, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp1);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp2[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
" +--rw cont\n"
|
|
Packit |
8fb591 |
" +--rw leaf3? uint8\n"
|
|
Packit |
8fb591 |
" +--rw tb:list1* [key1]\n"
|
|
Packit |
8fb591 |
" +--rw tb:key1 -> /ta:cont/list1/leaf1\n"
|
|
Packit |
8fb591 |
" +---u tb:ta:group1\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" rpcs:\n"
|
|
Packit |
8fb591 |
" +---x rpc1\n"
|
|
Packit |
8fb591 |
" +---x rpc2\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" notifications:\n"
|
|
Packit |
8fb591 |
" +---n notif1\n"
|
|
Packit |
8fb591 |
" +---n notif2\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" grouping group1:\n"
|
|
Packit |
8fb591 |
" +---- leaf1? string\n"
|
|
Packit |
8fb591 |
" grouping group2:\n"
|
|
Packit |
8fb591 |
" +---- leaf2? string\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, NULL, 0, LYS_OUTOPT_TREE_RFC | LYS_OUTOPT_TREE_GROUPING | LYS_OUTOPT_TREE_USES);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp2);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp3[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
" +--rw cont\n"
|
|
Packit |
8fb591 |
" +--rw leaf3? uint8\n"
|
|
Packit |
8fb591 |
" +--rw tb:list1* [key1]\n"
|
|
Packit |
8fb591 |
" +--rw tb:key1 leafref\n"
|
|
Packit |
8fb591 |
" +--rw tb:leaf1? string\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" rpcs:\n"
|
|
Packit |
8fb591 |
" +---x rpc1\n"
|
|
Packit |
8fb591 |
" +---x rpc2\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" notifications:\n"
|
|
Packit |
8fb591 |
" +---n notif1\n"
|
|
Packit |
8fb591 |
" +---n notif2\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, NULL, 0, LYS_OUTOPT_TREE_RFC | LYS_OUTOPT_TREE_NO_LEAFREF);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp3);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp4[] = "module: tree-b\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" augment /ta:cont:\n"
|
|
Packit |
8fb591 |
" +--rw list1* [key1]\n"
|
|
Packit |
8fb591 |
" +--rw key1 -> /ta:cont/list1/leaf1\n"
|
|
Packit |
8fb591 |
" +--rw leaf1? string\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, modb, LYS_OUT_TREE, NULL, 0, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp4);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_tree_rfc_subtree(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *str;
|
|
Packit |
8fb591 |
const struct lys_module *moda, *modb;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
moda = ly_ctx_load_module(ctx, "tree-a", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(moda, NULL);
|
|
Packit |
8fb591 |
modb = ly_ctx_load_module(ctx, "tree-b", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(modb, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp1[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
" +--rw cont\n"
|
|
Packit |
8fb591 |
" +--rw tb:list1* [key1]\n"
|
|
Packit |
8fb591 |
" +--rw tb:key1 -> /ta:cont/list1/leaf1\n"
|
|
Packit |
8fb591 |
" +--rw tb:leaf1? string\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, "/tree-a:cont/tree-b:list1", 0, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp1);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp2[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" rpcs:\n"
|
|
Packit |
8fb591 |
" +---x rpc1\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, "/tree-a:rpc1", 0, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp2);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp3[] = "module: tree-a\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" notifications:\n"
|
|
Packit |
8fb591 |
" +---n notif1\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, moda, LYS_OUT_TREE, "/tree-a:notif1", 0, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp3);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_tree_rfc_line_length(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *str;
|
|
Packit |
8fb591 |
const struct lys_module *modc, *modd;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modc = ly_ctx_load_module(ctx, "tree-c", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(modc, NULL);
|
|
Packit |
8fb591 |
modd = ly_ctx_load_module(ctx, "tree-d", NULL);
|
|
Packit |
8fb591 |
assert_ptr_not_equal(modd, NULL);
|
|
Packit |
8fb591 |
assert_int_equal(lys_features_enable(modd, "feat1"), 0);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp1[] = "module: tree-c\n"
|
|
Packit |
8fb591 |
" +--rw cont!\n"
|
|
Packit |
8fb591 |
" +--rw cont2\n"
|
|
Packit |
8fb591 |
" | +--rw list1* [key1]\n"
|
|
Packit |
8fb591 |
" | +--rw key1\n"
|
|
Packit |
8fb591 |
" | | string\n"
|
|
Packit |
8fb591 |
" | +--rw cont3\n"
|
|
Packit |
8fb591 |
" | +--rw td:leaf3?\n"
|
|
Packit |
8fb591 |
" | uint8\n"
|
|
Packit |
8fb591 |
" +--rw td:any?\n"
|
|
Packit |
8fb591 |
" | anydata\n"
|
|
Packit |
8fb591 |
" +--rw td:leaf1?\n"
|
|
Packit |
8fb591 |
" | string\n"
|
|
Packit |
8fb591 |
" | {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:leaf2?\n"
|
|
Packit |
8fb591 |
" | -> /tc:cont/td:leaf1\n"
|
|
Packit |
8fb591 |
" | {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:llist1*\n"
|
|
Packit |
8fb591 |
" | string\n"
|
|
Packit |
8fb591 |
" +--rw td:list1* [key1]\n"
|
|
Packit |
8fb591 |
" {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:key1\n"
|
|
Packit |
8fb591 |
" | uint8\n"
|
|
Packit |
8fb591 |
" +--rw td:list2*\n"
|
|
Packit |
8fb591 |
" [key2]\n"
|
|
Packit |
8fb591 |
" +--rw td:key2\n"
|
|
Packit |
8fb591 |
" uint16\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, modc, LYS_OUT_TREE, NULL, 27, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp1);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp2[] = "module: tree-c\n"
|
|
Packit |
8fb591 |
" +--rw cont!\n"
|
|
Packit |
8fb591 |
" +--rw cont2\n"
|
|
Packit |
8fb591 |
" | +--rw list1* [key1]\n"
|
|
Packit |
8fb591 |
" | +--rw key1\n"
|
|
Packit |
8fb591 |
" | | string\n"
|
|
Packit |
8fb591 |
" | +--rw cont3\n"
|
|
Packit |
8fb591 |
" | +--rw td:leaf3?\n"
|
|
Packit |
8fb591 |
" | uint8\n"
|
|
Packit |
8fb591 |
" +--rw td:any? anydata\n"
|
|
Packit |
8fb591 |
" +--rw td:leaf1? string\n"
|
|
Packit |
8fb591 |
" | {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:leaf2? leafref\n"
|
|
Packit |
8fb591 |
" | {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:llist1* string\n"
|
|
Packit |
8fb591 |
" +--rw td:list1* [key1]\n"
|
|
Packit |
8fb591 |
" {td:feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw td:key1 uint8\n"
|
|
Packit |
8fb591 |
" +--rw td:list2* [key2]\n"
|
|
Packit |
8fb591 |
" +--rw td:key2\n"
|
|
Packit |
8fb591 |
" uint16\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, modc, LYS_OUT_TREE, NULL, 31, LYS_OUTOPT_TREE_RFC | LYS_OUTOPT_TREE_NO_LEAFREF);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp2);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp3[] = "module: tree-d\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" augment /tc:cont:\n"
|
|
Packit |
8fb591 |
" +--rw any?\n"
|
|
Packit |
8fb591 |
" | anydata\n"
|
|
Packit |
8fb591 |
" +--rw leaf1?\n"
|
|
Packit |
8fb591 |
" | string\n"
|
|
Packit |
8fb591 |
" | {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw leaf2?\n"
|
|
Packit |
8fb591 |
" | -> /tc:cont/td:leaf1\n"
|
|
Packit |
8fb591 |
" | {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw llist1*\n"
|
|
Packit |
8fb591 |
" | string\n"
|
|
Packit |
8fb591 |
" +--rw list1* [key1]\n"
|
|
Packit |
8fb591 |
" {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw key1\n"
|
|
Packit |
8fb591 |
" | uint8\n"
|
|
Packit |
8fb591 |
" +--rw list2*\n"
|
|
Packit |
8fb591 |
" [key2]\n"
|
|
Packit |
8fb591 |
" +--rw key2\n"
|
|
Packit |
8fb591 |
" uint16\n"
|
|
Packit |
8fb591 |
" augment /tc:cont\n"
|
|
Packit |
8fb591 |
" /tc:cont2\n"
|
|
Packit |
8fb591 |
" /tc:list1\n"
|
|
Packit |
8fb591 |
" /tc:cont3:\n"
|
|
Packit |
8fb591 |
" +--rw leaf3? uint8\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, modd, LYS_OUT_TREE, NULL, 24, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp3);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
const char temp4[] = "module: tree-d\n"
|
|
Packit |
8fb591 |
"\n"
|
|
Packit |
8fb591 |
" augment /tc:cont:\n"
|
|
Packit |
8fb591 |
" +--rw any? anydata\n"
|
|
Packit |
8fb591 |
" +--rw leaf1? string\n"
|
|
Packit |
8fb591 |
" | {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw leaf2?\n"
|
|
Packit |
8fb591 |
" | -> /tc:cont/td:leaf1\n"
|
|
Packit |
8fb591 |
" | {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw llist1* string\n"
|
|
Packit |
8fb591 |
" +--rw list1* [key1]\n"
|
|
Packit |
8fb591 |
" {feat1}?\n"
|
|
Packit |
8fb591 |
" +--rw key1 uint8\n"
|
|
Packit |
8fb591 |
" +--rw list2* [key2]\n"
|
|
Packit |
8fb591 |
" +--rw key2 uint16\n"
|
|
Packit |
8fb591 |
" augment /tc:cont/tc:cont2\n"
|
|
Packit |
8fb591 |
" /tc:list1/tc:cont3:\n"
|
|
Packit |
8fb591 |
" +--rw leaf3? uint8\n";
|
|
Packit |
8fb591 |
lys_print_mem(&str, modd, LYS_OUT_TREE, NULL, 31, LYS_OUTOPT_TREE_RFC);
|
|
Packit |
8fb591 |
assert_string_equal(str, temp4);
|
|
Packit |
8fb591 |
free(str);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yin_with_unique(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *schema = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "parse-yin-yang-with-unique", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YIN, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YIN);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yang_with_unique(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *schema = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "parse-yin-yang-with-unique", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YANG, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YANG);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yin_with_submodule_types(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *schema = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "e", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YIN, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
ly_ctx_set_searchdir(ctx2, SCHEMA_FOLDER_YANG);
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx2, "d", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
ly_ctx_unset_searchdirs(ctx2, -1);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YIN);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yang_with_submodule_types(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void) state;
|
|
Packit |
8fb591 |
char *schema = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "e", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YANG, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
ly_ctx_set_searchdir(ctx2, SCHEMA_FOLDER_YANG);
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx2, "d", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
ly_ctx_unset_searchdirs(ctx2, -1);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YANG);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yin_with_submodule_grouping_idref_default(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *schema = NULL, *schema2 = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *subyang = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "grp_idref_def-mod", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YIN, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
subyang = (const struct lys_module *)ly_ctx_get_submodule2(modyang, "grp_idref_def-sub");
|
|
Packit |
8fb591 |
assert_non_null(subyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema2, subyang, LYS_OUT_YIN, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema2);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
ly_ctx_set_searchdir(ctx2, SCHEMA_FOLDER_YANG);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YIN);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ly_ctx_unset_searchdirs(ctx2, -1);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
free(schema2);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
static void
|
|
Packit |
8fb591 |
test_parse_yang_with_submodule_grouping_idref_default(void **state)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
(void)state;
|
|
Packit |
8fb591 |
char *schema = NULL, *schema2 = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *modyang = NULL, *modyang2 = NULL;
|
|
Packit |
8fb591 |
const struct lys_module *subyang = NULL;
|
|
Packit |
8fb591 |
struct ly_ctx *ctx2 = NULL;
|
|
Packit |
8fb591 |
int ret = 0;
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang = ly_ctx_load_module(ctx, "grp_idref_def-mod", NULL);
|
|
Packit |
8fb591 |
assert_non_null(modyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema, modyang, LYS_OUT_YANG, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
subyang = (const struct lys_module *)ly_ctx_get_submodule2(modyang, "grp_idref_def-sub");
|
|
Packit |
8fb591 |
assert_non_null(subyang);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ret = lys_print_mem(&schema2, subyang, LYS_OUT_YANG, NULL, 0, 0);
|
|
Packit |
8fb591 |
assert_int_equal(ret, 0);
|
|
Packit |
8fb591 |
assert_non_null(schema2);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ctx2 = ly_ctx_new(NULL, 0);
|
|
Packit |
8fb591 |
ly_ctx_set_searchdir(ctx2, SCHEMA_FOLDER_YANG);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
modyang2 = lys_parse_mem(ctx2, schema, LYS_IN_YANG);
|
|
Packit |
8fb591 |
assert_non_null(modyang2);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
ly_ctx_unset_searchdirs(ctx2, -1);
|
|
Packit |
8fb591 |
ly_ctx_destroy(ctx2, NULL);
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
free(schema);
|
|
Packit |
8fb591 |
free(schema2);
|
|
Packit |
8fb591 |
}
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
int
|
|
Packit |
8fb591 |
main(void)
|
|
Packit |
8fb591 |
{
|
|
Packit |
8fb591 |
const struct CMUnitTest cmut[] = {
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_tree_rfc, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_tree_rfc_subtree, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_tree_rfc_line_length, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yin_with_unique, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yang_with_unique, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yin_with_submodule_types, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yang_with_submodule_types, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yin_with_submodule_grouping_idref_default, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
cmocka_unit_test_setup_teardown(test_parse_yang_with_submodule_grouping_idref_default, setup_ctx, teardown_ctx),
|
|
Packit |
8fb591 |
};
|
|
Packit |
8fb591 |
|
|
Packit |
8fb591 |
return cmocka_run_group_tests(cmut, NULL, NULL);
|
|
Packit |
8fb591 |
}
|