#!/bin/bash
. ./Common

#
# Note: the hierarchy dump differs in some details from the input format.
# Its main purpose is to aid with debugging, not to produce a syntactically
# valid representation of the currently loaded hierarchy.
#

###############################################################################

tst "hierarchy: name field" <<EOF
{ X=* };
EOF

expect <<EOF
{ X=* }
EOF

#------------------------------------------------------------------------------

tst "hierarchy: name set field (correct name)" <<EOF
<abc> = A<B<C;
{ X=<abc> };
EOF

expect <<EOF
{ X=<abc> }
EOF

#------------------------------------------------------------------------------

tst_fail "hierarchy: name set field (incorrect name)" <<EOF
<abc> = A<B<C;
{ X=<def> };
EOF

expect <<EOF
h:2: unknown name set "def"
EOF

#------------------------------------------------------------------------------

tst "hierarchy: absolute value field" <<EOF
{ X=#foo };
EOF

expect <<EOF
{ X=#foo }
EOF

#------------------------------------------------------------------------------

tst_fail "hierarchy: absolute value field (omit type name)" <<EOF
{ X=# };
EOF

expect <<EOF
h:1: syntax error
EOF

#------------------------------------------------------------------------------

tst "hierarchy: relative value field (correct name)" <<EOF
{ X=#foo Y=%X };
EOF

expect <<EOF
{ X=#foo Y=%foo }
EOF

#------------------------------------------------------------------------------

tst_fail "hierarchy: relative value field (incorrect name)" <<EOF
{ X=#foo Y=%Z };
EOF

expect <<EOF
h:1: unknown field "Z"
EOF

###############################################################################