1dnl $DragonFly: src/usr.bin/m4/TEST/math.m4,v 1.1 2006/12/27 21:29:02 pavalos Exp $ 2dnl $FreeBSD: src/usr.bin/m4/TEST/math.m4,v 1.1 2004/05/01 03:27:05 smkelly Exp $ 3dnl A regression test for m4 C operators (ksb,petef) 4dnl If you think you have a short-circuiting m4, run us m4 -DSHORCIRCUIT=yes 5dnl 6dnl first level of precedence 7ifelse(expr(-7),-7,,`failed - 8')dnl 9ifelse(expr(- -2),2,,`failed - 10')dnl 11ifelse(expr(!0),1,,`failed ! 12')dnl 13ifelse(expr(!7),0,,`failed ! 14')dnl 15ifelse(expr(~-1),0,,`failed ~ 16')dnl 17dnl next level of precedence 18ifelse(expr(3*5),15,,`failed * 19')dnl 20ifelse(expr(3*0),0,,`failed * 21')dnl 22ifelse(expr(11/2),5,,`failed / 23')dnl 24ifelse(expr(1/700),0,,`failed / 25')dnl 26ifelse(expr(10%5),0,,`failed % 27')dnl 28ifelse(expr(2%5),2,,`failed % 29')dnl 30ifelse(expr(2%-1),0,,`failed % 31')dnl 32dnl next level of precedence 33ifelse(expr(2+2),4,,`failed + 34')dnl 35ifelse(expr(2+-2),0,,`failed + 36')dnl 37ifelse(expr(2- -2),4,,`failed - 38')dnl 39ifelse(expr(2-2),0,,`failed - 40')dnl 41dnl next level of precedence 42ifelse(expr(1<<4),16,,`failed << 43')dnl 44ifelse(expr(16>>4),1,,`failed >> 45')dnl 46dnl next level of precedence 47ifelse(expr(4<4),0,,`failed < 48')dnl 49ifelse(expr(4<5),1,,`failed < 50')dnl 51ifelse(expr(4<3),0,,`failed < 52')dnl 53ifelse(expr(4>4),0,,`failed > 54')dnl 55ifelse(expr(4>5),0,,`failed > 56')dnl 57ifelse(expr(4>3),1,,`failed > 58')dnl 59ifelse(expr(4<=4),1,,`failed <= 60')dnl 61ifelse(expr(4<=5),1,,`failed <= 62')dnl 63ifelse(expr(4<=3),0,,`failed <= 64')dnl 65ifelse(expr(4>=4),1,,`failed >= 66')dnl 67ifelse(expr(4>=5),0,,`failed >= 68')dnl 69ifelse(expr(4>=3),1,,`failed >= 70')dnl 71dnl next level of precedence 72ifelse(expr(1==1),1,,`failed == 73')dnl 74ifelse(expr(1==-1),0,,`failed == 75')dnl 76ifelse(expr(1!=1),0,,`failed != 77')dnl 78ifelse(expr(1!=2),1,,`failed != 79')dnl 80dnl next level of precedence 81ifelse(expr(3&5),1,,`failed & 82')dnl 83ifelse(expr(8&7),0,,`failed & 84')dnl 85dnl next level of precedence 86ifelse(expr(1^1),0,,`failed ^ 87')dnl 88ifelse(expr(21^5),16,,`failed ^ 89')dnl 90dnl next level of precedence 91ifelse(expr(1|1),1,,`failed | 92')dnl 93ifelse(expr(21|5),21,,`failed | 94')dnl 95ifelse(expr(100|1),101,,`failed | 96')dnl 97dnl next level of precedence 98ifelse(expr(1&&1),1,,`failed && 99')dnl 100ifelse(expr(0&&1),0,,`failed && 101')dnl 102ifelse(expr(1&&0),0,,`failed && 103')dnl 104ifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0&&10/0),0,,`failed && shortcircuit 105')')dnl 106dnl next level of precedence 107ifelse(expr(1||1),1,,`failed || 108')dnl 109ifelse(expr(1||0),1,,`failed || 110')dnl 111ifelse(expr(0||0),0,,`failed || 112')dnl 113ifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1||10/0),1,,`failed || shortcircuit 114')')dnl 115dnl next level of precedence 116ifelse(expr(0 ? 2 : 5),5,,`failed ?: 117')dnl 118ifelse(expr(1 ? 2 : 5),2,,`failed ?: 119')dnl 120ifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0 ? 10/0 : 7),7,,`failed ?: shortcircuit 121')')dnl 122ifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1 ? 7 : 10/0),7,,`failed ?: shortcircuit 123')')dnl 124dnl operator precedence 125ifelse(expr(!0*-2),-2,,`precedence wrong, ! * 126')dnl 127ifelse(expr(~8/~2),3,,`precedence wrong ~ / 128')dnl 129ifelse(expr(~-20%7),5,,`precedence wrong ~ % 130')dnl 131ifelse(expr(3*2+100),106,,`precedence wrong * + 132')dnl 133ifelse(expr(3+2*100),203,,`precedence wrong + * 134')dnl 135ifelse(expr(2%5-6/3),0,,`precedence wrong % - 136')dnl 137ifelse(expr(2/5-5%3),-2,,`precedence wrong / - 138')dnl 139ifelse(expr(2+5%5+1),3,,`precedence wrong % + 140')dnl 141ifelse(expr(7+9<<1),32,,`precedence wrong + << 142')dnl 143ifelse(expr(35-3>>2),8,,`precedence wrong - >> 144')dnl 145ifelse(expr(9<10<<5),1,,`precedence wrong << < 146')dnl 147ifelse(expr(9>10<<5),0,,`precedence wrong << > 148')dnl 149ifelse(expr(32>>2<32),1,,`precedence wrong >> < 150')dnl 151ifelse(expr(9<=10<<5),1,,`precedence wrong << < 152')dnl 153ifelse(expr(5<<1<=20>>1),1,,`precedence wrong << <= 154')dnl 155ifelse(expr(5<<1>=20>>1),1,,`precedence wrong << >= 156')dnl 157ifelse(expr(0<7==5>=5),1,,`precedence wrong < == 158')dnl 159ifelse(expr(0<7!=5>=5),0,,`precedence wrong < != 160')dnl 161ifelse(expr(0>7==5>=5),0,,`precedence wrong > == 162')dnl 163ifelse(expr(0>7!=5>=5),1,,`precedence wrong > != 164')dnl 165ifelse(expr(1&7==7),1,,`precedence wrong & == 166')dnl 167ifelse(expr(0&7!=6),0,,`precedence wrong & != 168')dnl 169ifelse(expr(9&1|5),5,,`precedence wrong & | 170')dnl 171ifelse(expr(9&1^5),4,,`precedence wrong & ^ 172')dnl 173ifelse(expr(9^1|5),13,,`precedence wrong ^ | 174')dnl 175ifelse(expr(5|0&&1),1,,`precedence wrong | && 176')dnl 177ifelse(expr(5&&0||0&&5||5),1,,`precedence wrong && || 178')dnl 179ifelse(expr(0 || 1 ? 0 : 1),0,,`precedence wrong || ?: 180')dnl 181ifelse(expr(5&&(0||0)&&(5||5)),0,,`precedence wrong || parens 182')dnl 183