1128788Ssmkellydnl $FreeBSD: releng/11.0/usr.bin/m4/TEST/math.m4 128788 2004-05-01 03:27:05Z smkelly $ 2128788Ssmkellydnl A regression test for m4 C operators (ksb,petef) 3128788Ssmkellydnl If you think you have a short-circuiting m4, run us m4 -DSHORCIRCUIT=yes 4128788Ssmkellydnl 5128788Ssmkellydnl first level of precedence 6128788Ssmkellyifelse(expr(-7),-7,,`failed - 7128788Ssmkelly')dnl 8128788Ssmkellyifelse(expr(- -2),2,,`failed - 9128788Ssmkelly')dnl 10128788Ssmkellyifelse(expr(!0),1,,`failed ! 11128788Ssmkelly')dnl 12128788Ssmkellyifelse(expr(!7),0,,`failed ! 13128788Ssmkelly')dnl 14128788Ssmkellyifelse(expr(~-1),0,,`failed ~ 15128788Ssmkelly')dnl 16128788Ssmkellydnl next level of precedence 17128788Ssmkellyifelse(expr(3*5),15,,`failed * 18128788Ssmkelly')dnl 19128788Ssmkellyifelse(expr(3*0),0,,`failed * 20128788Ssmkelly')dnl 21128788Ssmkellyifelse(expr(11/2),5,,`failed / 22128788Ssmkelly')dnl 23128788Ssmkellyifelse(expr(1/700),0,,`failed / 24128788Ssmkelly')dnl 25128788Ssmkellyifelse(expr(10%5),0,,`failed % 26128788Ssmkelly')dnl 27128788Ssmkellyifelse(expr(2%5),2,,`failed % 28128788Ssmkelly')dnl 29128788Ssmkellyifelse(expr(2%-1),0,,`failed % 30128788Ssmkelly')dnl 31128788Ssmkellydnl next level of precedence 32128788Ssmkellyifelse(expr(2+2),4,,`failed + 33128788Ssmkelly')dnl 34128788Ssmkellyifelse(expr(2+-2),0,,`failed + 35128788Ssmkelly')dnl 36128788Ssmkellyifelse(expr(2- -2),4,,`failed - 37128788Ssmkelly')dnl 38128788Ssmkellyifelse(expr(2-2),0,,`failed - 39128788Ssmkelly')dnl 40128788Ssmkellydnl next level of precedence 41128788Ssmkellyifelse(expr(1<<4),16,,`failed << 42128788Ssmkelly')dnl 43128788Ssmkellyifelse(expr(16>>4),1,,`failed >> 44128788Ssmkelly')dnl 45128788Ssmkellydnl next level of precedence 46128788Ssmkellyifelse(expr(4<4),0,,`failed < 47128788Ssmkelly')dnl 48128788Ssmkellyifelse(expr(4<5),1,,`failed < 49128788Ssmkelly')dnl 50128788Ssmkellyifelse(expr(4<3),0,,`failed < 51128788Ssmkelly')dnl 52128788Ssmkellyifelse(expr(4>4),0,,`failed > 53128788Ssmkelly')dnl 54128788Ssmkellyifelse(expr(4>5),0,,`failed > 55128788Ssmkelly')dnl 56128788Ssmkellyifelse(expr(4>3),1,,`failed > 57128788Ssmkelly')dnl 58128788Ssmkellyifelse(expr(4<=4),1,,`failed <= 59128788Ssmkelly')dnl 60128788Ssmkellyifelse(expr(4<=5),1,,`failed <= 61128788Ssmkelly')dnl 62128788Ssmkellyifelse(expr(4<=3),0,,`failed <= 63128788Ssmkelly')dnl 64128788Ssmkellyifelse(expr(4>=4),1,,`failed >= 65128788Ssmkelly')dnl 66128788Ssmkellyifelse(expr(4>=5),0,,`failed >= 67128788Ssmkelly')dnl 68128788Ssmkellyifelse(expr(4>=3),1,,`failed >= 69128788Ssmkelly')dnl 70128788Ssmkellydnl next level of precedence 71128788Ssmkellyifelse(expr(1==1),1,,`failed == 72128788Ssmkelly')dnl 73128788Ssmkellyifelse(expr(1==-1),0,,`failed == 74128788Ssmkelly')dnl 75128788Ssmkellyifelse(expr(1!=1),0,,`failed != 76128788Ssmkelly')dnl 77128788Ssmkellyifelse(expr(1!=2),1,,`failed != 78128788Ssmkelly')dnl 79128788Ssmkellydnl next level of precedence 80128788Ssmkellyifelse(expr(3&5),1,,`failed & 81128788Ssmkelly')dnl 82128788Ssmkellyifelse(expr(8&7),0,,`failed & 83128788Ssmkelly')dnl 84128788Ssmkellydnl next level of precedence 85128788Ssmkellyifelse(expr(1^1),0,,`failed ^ 86128788Ssmkelly')dnl 87128788Ssmkellyifelse(expr(21^5),16,,`failed ^ 88128788Ssmkelly')dnl 89128788Ssmkellydnl next level of precedence 90128788Ssmkellyifelse(expr(1|1),1,,`failed | 91128788Ssmkelly')dnl 92128788Ssmkellyifelse(expr(21|5),21,,`failed | 93128788Ssmkelly')dnl 94128788Ssmkellyifelse(expr(100|1),101,,`failed | 95128788Ssmkelly')dnl 96128788Ssmkellydnl next level of precedence 97128788Ssmkellyifelse(expr(1&&1),1,,`failed && 98128788Ssmkelly')dnl 99128788Ssmkellyifelse(expr(0&&1),0,,`failed && 100128788Ssmkelly')dnl 101128788Ssmkellyifelse(expr(1&&0),0,,`failed && 102128788Ssmkelly')dnl 103128788Ssmkellyifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0&&10/0),0,,`failed && shortcircuit 104128788Ssmkelly')')dnl 105128788Ssmkellydnl next level of precedence 106128788Ssmkellyifelse(expr(1||1),1,,`failed || 107128788Ssmkelly')dnl 108128788Ssmkellyifelse(expr(1||0),1,,`failed || 109128788Ssmkelly')dnl 110128788Ssmkellyifelse(expr(0||0),0,,`failed || 111128788Ssmkelly')dnl 112128788Ssmkellyifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1||10/0),1,,`failed || shortcircuit 113128788Ssmkelly')')dnl 114128788Ssmkellydnl next level of precedence 115128788Ssmkellyifelse(expr(0 ? 2 : 5),5,,`failed ?: 116128788Ssmkelly')dnl 117128788Ssmkellyifelse(expr(1 ? 2 : 5),2,,`failed ?: 118128788Ssmkelly')dnl 119128788Ssmkellyifelse(SHORTCIRCUIT,`yes',`ifelse(expr(0 ? 10/0 : 7),7,,`failed ?: shortcircuit 120128788Ssmkelly')')dnl 121128788Ssmkellyifelse(SHORTCIRCUIT,`yes',`ifelse(expr(1 ? 7 : 10/0),7,,`failed ?: shortcircuit 122128788Ssmkelly')')dnl 123128788Ssmkellydnl operator precedence 124128788Ssmkellyifelse(expr(!0*-2),-2,,`precedence wrong, ! * 125128788Ssmkelly')dnl 126128788Ssmkellyifelse(expr(~8/~2),3,,`precedence wrong ~ / 127128788Ssmkelly')dnl 128128788Ssmkellyifelse(expr(~-20%7),5,,`precedence wrong ~ % 129128788Ssmkelly')dnl 130128788Ssmkellyifelse(expr(3*2+100),106,,`precedence wrong * + 131128788Ssmkelly')dnl 132128788Ssmkellyifelse(expr(3+2*100),203,,`precedence wrong + * 133128788Ssmkelly')dnl 134128788Ssmkellyifelse(expr(2%5-6/3),0,,`precedence wrong % - 135128788Ssmkelly')dnl 136128788Ssmkellyifelse(expr(2/5-5%3),-2,,`precedence wrong / - 137128788Ssmkelly')dnl 138128788Ssmkellyifelse(expr(2+5%5+1),3,,`precedence wrong % + 139128788Ssmkelly')dnl 140128788Ssmkellyifelse(expr(7+9<<1),32,,`precedence wrong + << 141128788Ssmkelly')dnl 142128788Ssmkellyifelse(expr(35-3>>2),8,,`precedence wrong - >> 143128788Ssmkelly')dnl 144128788Ssmkellyifelse(expr(9<10<<5),1,,`precedence wrong << < 145128788Ssmkelly')dnl 146128788Ssmkellyifelse(expr(9>10<<5),0,,`precedence wrong << > 147128788Ssmkelly')dnl 148128788Ssmkellyifelse(expr(32>>2<32),1,,`precedence wrong >> < 149128788Ssmkelly')dnl 150128788Ssmkellyifelse(expr(9<=10<<5),1,,`precedence wrong << < 151128788Ssmkelly')dnl 152128788Ssmkellyifelse(expr(5<<1<=20>>1),1,,`precedence wrong << <= 153128788Ssmkelly')dnl 154128788Ssmkellyifelse(expr(5<<1>=20>>1),1,,`precedence wrong << >= 155128788Ssmkelly')dnl 156128788Ssmkellyifelse(expr(0<7==5>=5),1,,`precedence wrong < == 157128788Ssmkelly')dnl 158128788Ssmkellyifelse(expr(0<7!=5>=5),0,,`precedence wrong < != 159128788Ssmkelly')dnl 160128788Ssmkellyifelse(expr(0>7==5>=5),0,,`precedence wrong > == 161128788Ssmkelly')dnl 162128788Ssmkellyifelse(expr(0>7!=5>=5),1,,`precedence wrong > != 163128788Ssmkelly')dnl 164128788Ssmkellyifelse(expr(1&7==7),1,,`precedence wrong & == 165128788Ssmkelly')dnl 166128788Ssmkellyifelse(expr(0&7!=6),0,,`precedence wrong & != 167128788Ssmkelly')dnl 168128788Ssmkellyifelse(expr(9&1|5),5,,`precedence wrong & | 169128788Ssmkelly')dnl 170128788Ssmkellyifelse(expr(9&1^5),4,,`precedence wrong & ^ 171128788Ssmkelly')dnl 172128788Ssmkellyifelse(expr(9^1|5),13,,`precedence wrong ^ | 173128788Ssmkelly')dnl 174128788Ssmkellyifelse(expr(5|0&&1),1,,`precedence wrong | && 175128788Ssmkelly')dnl 176128788Ssmkellyifelse(expr(5&&0||0&&5||5),1,,`precedence wrong && || 177128788Ssmkelly')dnl 178128788Ssmkellyifelse(expr(0 || 1 ? 0 : 1),0,,`precedence wrong || ?: 179128788Ssmkelly')dnl 180128788Ssmkellyifelse(expr(5&&(0||0)&&(5||5)),0,,`precedence wrong || parens 181128788Ssmkelly')dnl 182