xref: /dflybsd-src/usr.bin/m4/TEST/math.m4 (revision 4da66bbfa353d0fb44e7a3c17f7268748edba48b)
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