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