# file      : tests/eval/ternary.testscript
# license   : MIT; see accompanying LICENSE file

# Test the ternary operator (eval-ternary).

.include ../common.testscript

$* <'print (true  ? foo : bar)' >'foo' : true
$* <'print (false ? foo : bar)' >'bar' : false

: associativity
:
{
  $* <'print (true  ? false ? foo : bar : baz)'               >'bar' : middle
  $* <'print (true  ? foo : true ? bar : baz)'                >'foo' : right
  $* <'print (true  ? false ? foo : bar : true ? baz : fox)'  >'bar' : both
  $* <'print (false ? foo ? false ? bar : false : baz : fox)' >'fox' : chain
}

: short-circuit
:
{
  $* <'print (false ? $bogus() : foo)'       >'foo' : middle
  $* <'print (true  ? foo      : $bogus())'  >'foo' : right

  # @@ TODO: complate pre-parse support in parse_name().
  #
  #$* <'print (true  ? foo      : $out_base/{foo bar})'  >'foo' : pre-parse
}