1*4afad3d8SPeter Avalosdnl $FreeBSD: src/usr.bin/m4/TEST/math.m4,v 1.2 2012/11/17 01:54:24 svnexp Exp $ 210c3f15bSPeter Avalosdnl A regression test for m4 C operators (ksb,petef) 310c3f15bSPeter Avalosdnl If you think you have a short-circuiting m4, run us m4 -DSHORCIRCUIT=yes 410c3f15bSPeter Avalosdnl 510c3f15bSPeter Avalosdnl first level of precedence 610c3f15bSPeter Avalosifelse(expr(-7),-7,,`failed - 710c3f15bSPeter Avalos')dnl 810c3f15bSPeter Avalosifelse(expr(- -2),2,,`failed - 910c3f15bSPeter Avalos')dnl 1010c3f15bSPeter Avalosifelse(expr(!0),1,,`failed ! 1110c3f15bSPeter Avalos')dnl 1210c3f15bSPeter Avalosifelse(expr(!7),0,,`failed ! 1310c3f15bSPeter Avalos')dnl 1410c3f15bSPeter Avalosifelse(expr(~-1),0,,`failed ~ 1510c3f15bSPeter Avalos')dnl 1610c3f15bSPeter Avalosdnl next level of precedence 1710c3f15bSPeter Avalosifelse(expr(3*5),15,,`failed * 1810c3f15bSPeter Avalos')dnl 1910c3f15bSPeter Avalosifelse(expr(3*0),0,,`failed * 2010c3f15bSPeter Avalos')dnl 2110c3f15bSPeter Avalosifelse(expr(11/2),5,,`failed / 2210c3f15bSPeter Avalos')dnl 2310c3f15bSPeter Avalosifelse(expr(1/700),0,,`failed / 2410c3f15bSPeter Avalos')dnl 2510c3f15bSPeter Avalosifelse(expr(10%5),0,,`failed % 2610c3f15bSPeter Avalos')dnl 2710c3f15bSPeter Avalosifelse(expr(2%5),2,,`failed % 2810c3f15bSPeter Avalos')dnl 2910c3f15bSPeter Avalosifelse(expr(2%-1),0,,`failed % 3010c3f15bSPeter Avalos')dnl 3110c3f15bSPeter Avalosdnl next level of precedence 3210c3f15bSPeter Avalosifelse(expr(2+2),4,,`failed + 3310c3f15bSPeter Avalos')dnl 3410c3f15bSPeter Avalosifelse(expr(2+-2),0,,`failed + 3510c3f15bSPeter Avalos')dnl 3610c3f15bSPeter Avalosifelse(expr(2- -2),4,,`failed - 3710c3f15bSPeter Avalos')dnl 3810c3f15bSPeter Avalosifelse(expr(2-2),0,,`failed - 3910c3f15bSPeter Avalos')dnl 4010c3f15bSPeter Avalosdnl next level of precedence 4110c3f15bSPeter Avalosifelse(expr(1<<4),16,,`failed << 4210c3f15bSPeter Avalos')dnl 4310c3f15bSPeter Avalosifelse(expr(16>>4),1,,`failed >> 4410c3f15bSPeter Avalos')dnl 4510c3f15bSPeter Avalosdnl next level of precedence 4610c3f15bSPeter Avalosifelse(expr(4<4),0,,`failed < 4710c3f15bSPeter Avalos')dnl 4810c3f15bSPeter Avalosifelse(expr(4<5),1,,`failed < 4910c3f15bSPeter Avalos')dnl 5010c3f15bSPeter Avalosifelse(expr(4<3),0,,`failed < 5110c3f15bSPeter Avalos')dnl 5210c3f15bSPeter Avalosifelse(expr(4>4),0,,`failed > 5310c3f15bSPeter Avalos')dnl 5410c3f15bSPeter Avalosifelse(expr(4>5),0,,`failed > 5510c3f15bSPeter Avalos')dnl 5610c3f15bSPeter Avalosifelse(expr(4>3),1,,`failed > 5710c3f15bSPeter Avalos')dnl 5810c3f15bSPeter Avalosifelse(expr(4<=4),1,,`failed <= 5910c3f15bSPeter Avalos')dnl 6010c3f15bSPeter Avalosifelse(expr(4<=5),1,,`failed <= 6110c3f15bSPeter Avalos')dnl 6210c3f15bSPeter Avalosifelse(expr(4<=3),0,,`failed <= 6310c3f15bSPeter Avalos')dnl 6410c3f15bSPeter Avalosifelse(expr(4>=4),1,,`failed >= 6510c3f15bSPeter Avalos')dnl 6610c3f15bSPeter Avalosifelse(expr(4>=5),0,,`failed >= 6710c3f15bSPeter Avalos')dnl 6810c3f15bSPeter Avalosifelse(expr(4>=3),1,,`failed >= 6910c3f15bSPeter Avalos')dnl 7010c3f15bSPeter Avalosdnl next level of precedence 7110c3f15bSPeter Avalosifelse(expr(1==1),1,,`failed == 7210c3f15bSPeter Avalos')dnl 7310c3f15bSPeter Avalosifelse(expr(1==-1),0,,`failed == 7410c3f15bSPeter Avalos')dnl 7510c3f15bSPeter Avalosifelse(expr(1!=1),0,,`failed != 7610c3f15bSPeter Avalos')dnl 7710c3f15bSPeter Avalosifelse(expr(1!=2),1,,`failed != 7810c3f15bSPeter Avalos')dnl 7910c3f15bSPeter Avalosdnl next level of precedence 8010c3f15bSPeter Avalosifelse(expr(3&5),1,,`failed & 8110c3f15bSPeter Avalos')dnl 8210c3f15bSPeter Avalosifelse(expr(8&7),0,,`failed & 8310c3f15bSPeter Avalos')dnl 8410c3f15bSPeter Avalosdnl next level of precedence 8510c3f15bSPeter Avalosifelse(expr(1^1),0,,`failed ^ 8610c3f15bSPeter Avalos')dnl 8710c3f15bSPeter Avalosifelse(expr(21^5),16,,`failed ^ 8810c3f15bSPeter Avalos')dnl 8910c3f15bSPeter Avalosdnl next level of precedence 9010c3f15bSPeter Avalosifelse(expr(1|1),1,,`failed | 9110c3f15bSPeter Avalos')dnl 9210c3f15bSPeter Avalosifelse(expr(21|5),21,,`failed | 9310c3f15bSPeter Avalos')dnl 9410c3f15bSPeter Avalosifelse(expr(100|1),101,,`failed | 9510c3f15bSPeter Avalos')dnl 9610c3f15bSPeter Avalosdnl next level of precedence 9710c3f15bSPeter Avalosifelse(expr(1&&1),1,,`failed && 9810c3f15bSPeter Avalos')dnl 9910c3f15bSPeter Avalosifelse(expr(0&&1),0,,`failed && 10010c3f15bSPeter Avalos')dnl 10110c3f15bSPeter Avalosifelse(expr(1&&0),0,,`failed && 10210c3f15bSPeter Avalos')dnl 10310c3f15bSPeter Avalosifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0&&10/0),0,,`failed && shortcircuit 10410c3f15bSPeter Avalos')')dnl 10510c3f15bSPeter Avalosdnl next level of precedence 10610c3f15bSPeter Avalosifelse(expr(1||1),1,,`failed || 10710c3f15bSPeter Avalos')dnl 10810c3f15bSPeter Avalosifelse(expr(1||0),1,,`failed || 10910c3f15bSPeter Avalos')dnl 11010c3f15bSPeter Avalosifelse(expr(0||0),0,,`failed || 11110c3f15bSPeter Avalos')dnl 11210c3f15bSPeter Avalosifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1||10/0),1,,`failed || shortcircuit 11310c3f15bSPeter Avalos')')dnl 11410c3f15bSPeter Avalosdnl next level of precedence 11510c3f15bSPeter Avalosifelse(expr(0 ? 2 : 5),5,,`failed ?: 11610c3f15bSPeter Avalos')dnl 11710c3f15bSPeter Avalosifelse(expr(1 ? 2 : 5),2,,`failed ?: 11810c3f15bSPeter Avalos')dnl 11910c3f15bSPeter Avalosifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0 ? 10/0 : 7),7,,`failed ?: shortcircuit 12010c3f15bSPeter Avalos')')dnl 12110c3f15bSPeter Avalosifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1 ? 7 : 10/0),7,,`failed ?: shortcircuit 12210c3f15bSPeter Avalos')')dnl 12310c3f15bSPeter Avalosdnl operator precedence 12410c3f15bSPeter Avalosifelse(expr(!0*-2),-2,,`precedence wrong, ! * 12510c3f15bSPeter Avalos')dnl 12610c3f15bSPeter Avalosifelse(expr(~8/~2),3,,`precedence wrong ~ / 12710c3f15bSPeter Avalos')dnl 12810c3f15bSPeter Avalosifelse(expr(~-20%7),5,,`precedence wrong ~ % 12910c3f15bSPeter Avalos')dnl 13010c3f15bSPeter Avalosifelse(expr(3*2+100),106,,`precedence wrong * + 13110c3f15bSPeter Avalos')dnl 13210c3f15bSPeter Avalosifelse(expr(3+2*100),203,,`precedence wrong + * 13310c3f15bSPeter Avalos')dnl 13410c3f15bSPeter Avalosifelse(expr(2%5-6/3),0,,`precedence wrong % - 13510c3f15bSPeter Avalos')dnl 13610c3f15bSPeter Avalosifelse(expr(2/5-5%3),-2,,`precedence wrong / - 13710c3f15bSPeter Avalos')dnl 13810c3f15bSPeter Avalosifelse(expr(2+5%5+1),3,,`precedence wrong % + 13910c3f15bSPeter Avalos')dnl 14010c3f15bSPeter Avalosifelse(expr(7+9<<1),32,,`precedence wrong + << 14110c3f15bSPeter Avalos')dnl 14210c3f15bSPeter Avalosifelse(expr(35-3>>2),8,,`precedence wrong - >> 14310c3f15bSPeter Avalos')dnl 14410c3f15bSPeter Avalosifelse(expr(9<10<<5),1,,`precedence wrong << < 14510c3f15bSPeter Avalos')dnl 14610c3f15bSPeter Avalosifelse(expr(9>10<<5),0,,`precedence wrong << > 14710c3f15bSPeter Avalos')dnl 14810c3f15bSPeter Avalosifelse(expr(32>>2<32),1,,`precedence wrong >> < 14910c3f15bSPeter Avalos')dnl 15010c3f15bSPeter Avalosifelse(expr(9<=10<<5),1,,`precedence wrong << < 15110c3f15bSPeter Avalos')dnl 15210c3f15bSPeter Avalosifelse(expr(5<<1<=20>>1),1,,`precedence wrong << <= 15310c3f15bSPeter Avalos')dnl 15410c3f15bSPeter Avalosifelse(expr(5<<1>=20>>1),1,,`precedence wrong << >= 15510c3f15bSPeter Avalos')dnl 15610c3f15bSPeter Avalosifelse(expr(0<7==5>=5),1,,`precedence wrong < == 15710c3f15bSPeter Avalos')dnl 15810c3f15bSPeter Avalosifelse(expr(0<7!=5>=5),0,,`precedence wrong < != 15910c3f15bSPeter Avalos')dnl 16010c3f15bSPeter Avalosifelse(expr(0>7==5>=5),0,,`precedence wrong > == 16110c3f15bSPeter Avalos')dnl 16210c3f15bSPeter Avalosifelse(expr(0>7!=5>=5),1,,`precedence wrong > != 16310c3f15bSPeter Avalos')dnl 16410c3f15bSPeter Avalosifelse(expr(1&7==7),1,,`precedence wrong & == 16510c3f15bSPeter Avalos')dnl 16610c3f15bSPeter Avalosifelse(expr(0&7!=6),0,,`precedence wrong & != 16710c3f15bSPeter Avalos')dnl 16810c3f15bSPeter Avalosifelse(expr(9&1|5),5,,`precedence wrong & | 16910c3f15bSPeter Avalos')dnl 17010c3f15bSPeter Avalosifelse(expr(9&1^5),4,,`precedence wrong & ^ 17110c3f15bSPeter Avalos')dnl 17210c3f15bSPeter Avalosifelse(expr(9^1|5),13,,`precedence wrong ^ | 17310c3f15bSPeter Avalos')dnl 17410c3f15bSPeter Avalosifelse(expr(5|0&&1),1,,`precedence wrong | && 17510c3f15bSPeter Avalos')dnl 17610c3f15bSPeter Avalosifelse(expr(5&&0||0&&5||5),1,,`precedence wrong && || 17710c3f15bSPeter Avalos')dnl 17810c3f15bSPeter Avalosifelse(expr(0 || 1 ? 0 : 1),0,,`precedence wrong || ?: 17910c3f15bSPeter Avalos')dnl 18010c3f15bSPeter Avalosifelse(expr(5&&(0||0)&&(5||5)),0,,`precedence wrong || parens 18110c3f15bSPeter Avalos')dnl 182