source [expr {[info exists ::env(TESTS_DIR)] ? "$env(TESTS_DIR)/interactive/ly.tcl" : "ly.tcl"}]

set mdir $::env(YANG_MODULES_DIR)

test add_basic {} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd "add $mdir/modleafref.yang"
    ly_cmd "list" "I modleafref\r.*I modleaf"
}}

test add_disable_searchdir_once {add --disable-searchdir} {
-setup $ly_setup -cleanup $ly_cleanup -constraints {!ctest} -body {
    ly_cmd "add $mdir/modimp-cwd.yang"
    ly_cmd "clear"
    ly_cmd_err "add -D $mdir/modimp-cwd.yang" "not found in local searchdirs"
}}

test add_disable_searchdir_twice {add -D -D} {
-setup $ly_setup -cleanup $ly_cleanup -constraints {!ctest} -body {
    ly_cmd "add $mdir/ietf-ip.yang"
    ly_cmd "clear"
    ly_cmd_err "add -D -D $mdir/ietf-ip.yang" "Loading \"ietf-interfaces\" module failed."
}}

test add_with_feature {Add module with feature} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd "add --feature modfeature:ftr2 $mdir/modfeature.yang"
    ly_cmd "feature -a" "modfeature:\r\n\tftr1 \\(off\\)\r\n\tftr2 \\(on\\)"
}}

test add_make_implemented_once {add --make-implemented} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_ignore "add $mdir/modmust.yang"
    ly_cmd "list" "I modmust\r.*i modleaf"
    ly_cmd "clear"
    ly_ignore "add -i $mdir/modmust.yang"
    ly_cmd "list" "I modmust\r.*I modleaf"
}}

test add_make_implemented_twice {add -i -i} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd "add $mdir/modimp-type.yang"
    ly_cmd "list" "I modimp-type\r.*i modtypedef"
    ly_cmd "clear"
    ly_cmd "add -i -i $mdir/modimp-type.yang"
    ly_cmd "list" "I modimp-type\r.*I modtypedef"
}}

test add_extended_leafref_enabled {Valid module with --extended-leafref option} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd "add -X $mdir/modextleafref.yang"
}}

test add_extended_leafref_disabled {Expected error if --extended-leafref is not set} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd_err "add $mdir/modextleafref.yang" "Unexpected XPath token \"FunctionName\""
}}

cleanupTests
