Home | History | Annotate | Line # | Download | only in unit-tests
cond-op-not.mk revision 1.7
      1 # $NetBSD: cond-op-not.mk,v 1.7 2021/01/19 17:49:13 rillig Exp $
      2 #
      3 # Tests for the ! operator in .if conditions, which negates its argument.
      4 
      5 # The exclamation mark negates its operand.
      6 .if !1
      7 .  error
      8 .endif
      9 
     10 # Exclamation marks can be chained.
     11 # This doesn't happen in practice though.
     12 .if !!!1
     13 .  error
     14 .endif
     15 
     16 # The ! binds more tightly than the &&.
     17 .if !!0 && 1
     18 .  error
     19 .endif
     20 
     21 # The operator '==' binds more tightly than '!'.
     22 # This is unusual since most other programming languages define the precedence
     23 # to be the other way round.
     24 .if !${:Uexpression} == "expression"
     25 .  error
     26 .endif
     27 
     28 .if !${:U}
     29 .  info Not empty evaluates to true.
     30 .else
     31 .  info Not empty evaluates to false.
     32 .endif
     33 
     34 .if !${:U }
     35 .  info Not space evaluates to true.
     36 .else
     37 .  info Not space evaluates to false.
     38 .endif
     39 
     40 .if !${:U0}
     41 .  info Not 0 evaluates to true.
     42 .else
     43 .  info Not 0 evaluates to false.
     44 .endif
     45 
     46 .if !${:U1}
     47 .  info Not 1 evaluates to true.
     48 .else
     49 .  info Not 1 evaluates to false.
     50 .endif
     51 
     52 .if !${:Uword}
     53 .  info Not word evaluates to true.
     54 .else
     55 .  info Not word evaluates to false.
     56 .endif
     57 
     58 # A single exclamation mark is a parse error.
     59 .if !
     60 .  error
     61 .else
     62 .  error
     63 .endif
     64 
     65 all:
     66 	@:;
     67