External module "test/test-expressions"
Variables
Const testExpressions
test
Expressions: ITestExpression[] = [{ expression: "-4*-3", result: 12 },{ expression: "-4--3", result: -1 },{ expression: "-4*-3-12", result: 0 },{ expression: "-45--3.42", result: -41.58 },{ expression: "4(8+2)", isError: true },{ expression: "4+2*3+'Hallo'", result: "10Hallo" },{ expression: "'Hello' + 4+2*3+'World!'", result: "Hello46World!" },{ expression: "2*3+SUM(['Hello','World!'])", result: "6HelloWorld!" },{ expression: "(-34.2+-3)*-1", result: 37.2 },// 10 below{ expression: "(-34.2+-3)(3+4)", isError: true },{ expression: "45/0", result: Number.POSITIVE_INFINITY },{ expression: "(-34.2 12.3 56.7)", isError: true },{ expression: "0xFA*0b1001", result: 2250 },{ expression: "-23.2*34.2", result: -793.44 },{ expression: "0b1001*0xfa", result: 2250 },{ expression: "0bF001*0x1ZA", isError: true },{ expression: "0b11001*0xZA", isError: true },{ expression: "true&&false", result: 0 },{ expression: "true &&true", result: 1 },{ expression: "false&&true", result: 0 },// 20 below{ expression: "1&&23", result: 1 },{ expression: "AND(true,1,true,2)", result: 1 },{ expression: "true||false", result: 1 },{ expression: "true || true", result: 1 },{ expression: "false || true", result: 1 },{ expression: "1 || 23", result: 1 },{ expression: "OR(true,1,true,2)", result: 1 },{ expression: "true && 0 || false && 0", result: 0 },{ expression: "true ^^ 0", result: 1 },{ expression: "true ^^ 1", result: 0 },// 30 below{ expression: "0 ^^ false", result: 0 },{ expression: "0 ^^ 1", result: 1 },{ expression: "XOR(1,0,0,1,1)", result: 1 },{ expression: "XOR(1,0,1,1,1)", result: 0 },{ expression: "23==0b10111", result: 1 },{ expression: "0x15==0b10111", result: 0 },{ expression: "23!=0b10111", result: 0 },{ expression: "0x15!=0b10111", result: 1 },{ expression: "23<0b10111", result: 0 },{ expression: "0x15<0b10111", result: 1 },{ expression: "23<=0b10111", result: 1 },{ expression: "0x18<0b10111", result: 0 },{ expression: "123.2> 123.2", result: 0 },{ expression: "1243.342>34", result: 1 },{ expression: "123.2>=123.2", result: 1 },{ expression: "12>=34", result: 0 },{ expression: "NEQ(1,true,false,1,true)", result: 1 },{ expression: "NEQ(1,true,1)", result: 0 },{ expression: "EQ(1,true,1)", result: 1 },{ expression: "EQ(1,true,1)", result: 1 },// test binary-operators{ expression: "0x2352 &0x014F", result: 0x0142 },{ expression: "0x2352 | 0x014F", result: 0x235F },{ expression: "0x2352^ 0x014F", result: 0x221D },{ expression: "0x2352<<4", result: 0x23520 },{ expression: "0x2352 >> 4", result: 0x0235 },{ expression: "NOT(false) + BNOT(0b001001)", result: -9 },// test expressions in functions and \'{ expression: "SUM('Hello' + 'World', '!'+'!')", result: 'HelloWorld!!' },{ expression: "EQ(SUM('Hello' + 'World', '!'+'!'),'HelloWorld!!')", result: 1 },{ expression: "NEQ(SUM('Hello' + 'World', '!'+'!'),'HelloWorld!!')", result: 0 },{ expression: "SUM('Hello' + 'World' + (2*3), '!'+'!') +':)\\''", result: "HelloWorld6!!:)'" },// 60 below{ expression: "SUM('\\'Hello\\'' + 'World' + (2*3), '!'+'!') +':)\\''", result: "'Hello'World6!!:)'" },{ expression: "'12'/'3'", isError: true },{ expression: "IF_ERROR('12'/'3', 'has failure')", result: 'has failure' },{ expression: "IF_ERROR(12/3)", isError: true },{ expression: "IF_ERROR(12/3, 'has failure')", result: 4 },{ expression: "GET_VALUE('notify','RM_ON')", result: 1 },{ expression: "GET_VALUE()", isError: true },{ expression: "4-(-3)", result: 7 },{ expression: "4 -(-3)", result: 7 },{ expression: "4+(-3)", result: 1 },{ expression: "4 +(-3)", result: 1 },{ expression: "(-4 --3--3)*(-2*5)*-1", result: 20 },{ expression: "SQRT(4)", result: 2 },{ expression: "SQRT(-4)", isError: true },{ expression: "POW(2,0b10)", result: 4 },{ expression: "POW(2,-3)", result: 0.125 },{ expression: "RANDOM()", result: { type: "range", min: 0, max: 1 } },{ expression: "RANDOM(5,10)", result: { type: "range", min: 5, max: 0xA } },{ expression: "ROUND(5.9415)", result: 6 },{ expression: "ROUND(5.415)", result: 5 },// 80 below{ expression: "ROUND(3.141592,2)", result: 3.14 },{ expression: "ROUND(3.141592,4)", result: 3.1416 },{ expression: "TRUNC(3.141592,4)", result: 3.1415 },{ expression: "TRUNC(3.141592)", result: 3 },{ expression: "TRUNC(2.99)", result: 2 },{ expression: "SIN(0.785)", result: 0.706825181105366 },{ expression: "SIN(45,1)", result: 0.7071067811865475 },{ expression: "SIN(90,true)", result: 1 },{ expression: "ROUND(SIN(3.141592))", result: 0 },{ expression: "ASIN(0.785)", result: 0.9026961270378197 },{ expression: "ASIN(1,true)", result: 90 },{ expression: "COS(0.785)", result: 0.7073882691671998 },{ expression: "COS(45,1)", result: 0.7071067811865476 },{ expression: "ACOS(0.785)", result: 0.6681001997570769 },{ expression: "ROUND(ACOS(0.25,true))", result: 76 },{ expression: "TAN(0.785)", result: 0.9992039901050427 },{ expression: "TAN(45,true)", result: 0.9999999999999999 },{ expression: "ATAN(0.785)", result: 0.6655274437255029 },{ expression: "ROUND(ATAN(0.5,1),2)", result: 26.57 },{ expression: "GET_ARRAY_ELEMENT([1,2,3,4,5],2)", result: 3 },// 100 below{ expression: "GET_ARRAY_ELEMENT(['Hello','World'],1)", result: 'World' },{ expression: "SCALE(2,3,5)", result: 11 },{ expression: "SCALE(6,3,9,2,6)", result: 4 },{ expression: "SCALE(6,9,3,2,6)", isError: true }, // x2 <= x1{ expression: "SCALE(2,3,9,2,6,true)", result: 2 },{ expression: "SCALE(6,3,5,2,6,true)", result: 6 },{ expression: "SCALE(6,3,5,2,6,0)", result: 8 },{expression: "POS_EDGE(GET_VALUE('data', 'VAR_POS_EDGE1'))", results: [{ result: 0 },{ result: 1 },{ result: 0 },{ result: 1 },{ result: 0 }]},{expression: "POS_EDGE(GET_VALUE('data', 'VAR_POS_EDGE2'))", results: [{ result: 0 },{ result: 0 },{ result: 1 },{ result: 0 },{ result: 1 }]},{expression: "NEG_EDGE(GET_VALUE('data', 'VAR_NEG_EDGE1'))", results: [{ result: 0 },{ result: 0 },{ result: 1 },{ result: 0 },{ result: 1 },{ result: 0 },]},// 110 below{expression: "NEG_EDGE(GET_VALUE('data', 'VAR_NEG_EDGE2'))", results: [{ result: 0 },{ result: 1 },{ result: 0 },{ result: 1 },{ result: 0 },{ result: 1 },]},{ expression: "SET_VALUE(true,'notify','RM_ON',0)", result: 1 },{ expression: "GET_VALUE('notify','RM_ON')", result: 1 },{expression: "VALUE_CHANGED(GET_VALUE('data','VAR_VAL_CHANGE_1'))", results: [{ result: 0 },{ result: 1 },{ result: 1 },{ result: 1 },{ result: 1 },{ result: 1 },]},{expression: "VALUE_CHANGED(GET_VALUE('data','VAR_VAL_CHANGE_2'))", results: [{ result: 0 },{ result: 0 },{ result: 1 },{ result: 1 },{ result: 0 },{ result: 1 },{ result: 1 },{ result: 0 },]},{ expression: "VALUE_CHANGED(1)", result: 0 },{ expression: "VALUE_CHANGED(10)", result: 0 },{ expression: "VALUE_CHANGED('Hello')", result: 0 },{ expression: "VALUE_CHANGED('Hello World')", result: 0 },{ expression: "VALUE_CHANGED('Hello World')", result: 0 },// 120 below{ expression: "VALUE_CHANGED([1,2,3,4,5],1)", result: 1 },{ expression: "VALUE_CHANGED([1,2,3,4,5])", result: 0 },{ expression: "VALUE_CHANGED(['a','b','c'])", result: 0 },{ expression: "VALUE_CHANGED(['a','b','c'])", result: 0 },{ expression: "VALUE_CHANGED(['x','y','z'])", result: 0 },{ expression: "VALUE_CHANGED(true)", result: 0 },{ expression: "VALUE_CHANGED(true)", result: 0 },{ expression: "GET_DATE_TIME('ticks',0)", result: 1574672735 },{ expression: "GET_DATE_TIME('ticks',1)", result: 1574676335 },{ expression: "GET_DATE_TIME('iso')", result: '2019-11-25T09:05:35.000Z' },// 130 below{ expression: "GET_DATE_TIME('iso',1)", result: '2019-11-25T09:05:35.000Z' },{ expression: "GET_DATE_TIME('local',0)", result: '11/25/2019, 9:05:35 AM' },{ expression: "GET_DATE_TIME('local',1)", result: '11/25/2019, 10:05:35 AM' },{ expression: "GET_DATE_TIME()", result: 1574672735 },{ expression: "GET_DATE_TIME(true)", result: 1574676335 },{ expression: "GET_DATE_TIME('list',0)", result: [2019, 10, 25, 1, 9, 5, 35] },{ expression: "GET_YEAR()", result: 2019 },{ expression: "GET_MONTH()", result: 10 },{ expression: "GET_DAY()", result: 25 },{ expression: "GET_DOW()", result: 1 },// 140 below{ expression: "GET_HOUR()", result: 9 },{ expression: "GET_HOUR(true)", result: 10 },{ expression: "GET_MINUTE()", result: 5 },{ expression: "GET_SECOND()", result: 35 },{ expression: "[5 , 1]", result: [5, 1] },{ expression: "[5 + 1]", result: [6] },{ expression: "[5 + 1,10 / 2]", result: [6, 5] },{ expression: "[GET_MINUTE(), 5 + 1]", result: [5, 6] },{ expression: "[5 + 1,10 / 2,4 * 6, 5 - 1]", result: [6, 5, 24, 4] },{ expression: "[GET_MINUTE() + 1,GET_SECOND(),SQRT(4),ROUND(5.9415),SQRT(4)+ROUND(5.9415)]", result: [6, 35, 2, 6, 8] },// 150 below{ expression: "[GET_MINUTE(),GET_SECOND(),SQRT(4),TESTERR(123)]", isError: true },{ expression: "[2*3+SUM(['Hello','World!']), GET_ARRAY_ELEMENT([1,2,3,4,5],2) + 30]", result: ["6HelloWorld!", 33] },{ expression: "[[1+1,6-2], POW(8,2),[3/3,4*4]]", result: [[2, 4], 64, [1, 16]] },{ expression: "GET_ARRAY_ELEMENT([1,2,[SQRT(4),4],5],2)", result: [2, 4] },{ expression: "[GET_MINUTE()]", results: [{ result: [5] }] },{ expression: "MIN([1,5,4,3,2])", result: 1 },{ expression: "MAX([3,2,5,4,1])", result: 5 },{ expression: "MEAN([1,5,35,14,50])", result: 21 },{ expression: "MEAN(['30','10','50','40','20'])", result: 30 },// 160{ expression: "MEAN([true, false, true, true, false, false])", result: 0.5 },{ expression: "MEDIAN([1,2,3,4,5])", result: 3 },{ expression: "MEDIAN([1,1,12,23,77,32,3,4,5])", result: 5 },{ expression: "MEDIAN([true, false, true, true, false, false])", result: 0.5 },{expression: "IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 'min', -1, 0)",result: 0},{expression: "IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 'min', -2, IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 'max', -1, 0))",result: 0},{expression: "IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 'min', -2, IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 'max', -1, IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 't1', 1, IF(GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 't2', 2 , IF( GET_VALUE('config','WDR1_TML_CONTROL_TEMP') == 't3', 3, 0 )))))",result: 2},{ expression: "CONCATE('a', 'b') + CONCATE(['cd', 'EF']) + GET_STRING(8592, 0x2030)", result: 'abcdEF←‰' },{ expression: "GET_STRING(65) ", result: 'A' },{ expression: "LEN(['a','b', 3, 4]) + LEN('abc') ", result: 7 },{ expression: "SPLIT('YbbsitzbScheibbs', 'b')", result: ['Y', '', 'sitz', 'Schei', '', 's'] },// 170{ expression: "TRIM(' Hello World! \n')", result: 'Hello World!' },{ expression: " TRIM('>>Hello World!><<', ['>', '<'])", result: 'Hello World!' },{ expression: "TRIM_START('>>Hello World!<<', ['>', '<'])", result: 'Hello World!<<' },{ expression: "TRIM_END('>>Hello World!<<', ['>', '<'])", result: '>>Hello World!' },{ expression: "REPLACE('dudieda', 'd', 'h' )", result: 'huhieha' },{ expression: "JOIN(['dudieda', 'd', 'h'], ';' )", result: 'dudieda;d;h' },{ expression: "GET_ARRAY_SPLICE(['apple', 'banana', 'orange', 'olive'], 0, 3)", result: ['apple', 'banana', 'orange'] },{ expression: "GET_ARRAY_SPLICE(['apple', 'banana', 'orange', 'olive'], 3)", result: ['olive'] },{ expression: "TO_LOWER_CASE('Please Lower Me DOWN!')", result: 'please lower me down!' },{ expression: "TO_UPPER_CASE('Please switch ME to upper case!')", result: 'PLEASE SWITCH ME TO UPPER CASE!' },]