aboutsummaryrefslogtreecommitdiff
path: root/tests/eval/ternary.test
blob: f599373714c983120b4e2f663577fea731dafdc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# file      : tests/eval/ternary.test
# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

# Test the ternary operator (eval-ternary).

.include ../common.test

$* <'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
}