UNPKG

zpt

Version:

Zenon Page Templates - JS (ZPT-JS)

261 lines (237 loc) 17.7 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Expressions tests</title> <link rel="stylesheet" href="/node_modules/qunit/qunit/qunit.css"> <script src="http://127.0.0.1:9966/expressions.js" defer></script> </head> <body> <div id="qunit"></div> <div id="qunit-fixture"></div> <p> Strings expressions </p> <ol> <li>string: should be <span id="t1-1" data-content="string:">blank</span></li> <li>string:hello should be <span id="t1-2" data-content="string:hello">a greeting</span></li> <li>string:help my $aString should be <span id="t1-3" data-content="string:help my $aString">xxx</span></li> <li>string:www.${aString}.org should be <span id="t1-4" data-content="string:www.${aString}.org">are like</span></li> <li>string:give me $$${aString} or else should be <span id="t1-5" data-content="string:give me $$${aString} or else">a threat</span>!</li> <li>string:user is ${user/name} should be <span id="t1-6" data-content="string:user is ${user/name}">user is a name</span></li> <li>string:user is $user/name should be <span id="t1-7" data-content="string:user is $user/name">user is a name</span></li> </ol> <p> Exists expressions </p> <ol> <li>exists: doggy should be true = <span id="t2-1" data-content="exists: doggy">not false</span></li> <li>not: exists: doggy should be false = <span id="t2-2" data-content="not: exists: doggy">not true</span></li> <li>exists: aString should be true = <span id="t2-3" data-content="exists: aString">not false</span></li> <li>exists: user/name should be true = <span id="t2-4" data-content="exists: user/name">not false</span></li> <li>exists: non/existing/path should be false = <span id="t2-5" data-content="exists: non/existing/path">not true</span></li> <li>exists: user/isAMan should be true = <span id="t2-6" data-content="exists: user/isAMan()">not false</span></li> <li>exists: user/isAWoman should be true = <span id="t2-7" data-content="exists: user/isAWoman()">not false</span></li> <li>exists: user/isADog should be false = <span id="t2-8" data-content="exists: user/isADog()">not true</span></li> <li>exists: user/undefValue should be false = <span id="t2-9" data-content="exists: user/undefValue">not true</span></li> </ol> <p> Not expressions </p> <ol> <li>0 should be 0 = <span id="t3-1" data-content="0">not true</span></li> <li>not:0 should be true = <span id="t3-2" data-content="not:0">not false</span></li> <li>1 should be 1 = <span id="t3-3" data-content="1">not true</span></li> <li>not:1 should be false = <span id="t3-4" data-content="not:1">not true</span></li> <li>false should be false = <span id="t3-5" data-content="false">not false</span></li> <li>not:false should be true = <span id="t3-6" data-content="not:false">not false</span></li> <li>true should be true = <span id="t3-7" data-content="true">not true</span></li> <li>not:true should be false = <span id="t3-8" data-content="not:true">not true</span></li> <li>doggy should be false = <span id="t3-9" data-content="doggy">not false</span></li> <li>not:doggy should be true = <span id="t3-10" data-content="not:doggy">not false</span></li> </ol> <p> Javascript expressions </p> <ol> <li>js: 5 + 4 = 9 = <span id="t4-1" data-content="js: 5 + 4">5 + 4</span></li> <li>js: 5 - 4 = 1 = <span id="t4-2" data-content="js: 5 - 4">5 - 4</span></li> <li>js: 5 * 4 = 20 = <span id="t4-3" data-content="js: 5 * 4">5 * 4</span></li> <li>js: 69 / 3 = 23 = <span id="t4-4" data-content="js: 69 / 3">69 / 3</span></li> <li>js: 23 % 7 = 2 = <span id="t4-5" data-content="js: 23 % 7">23 % 7</span></li> <li>js: 1 &gt; 0 ? true : false = true = <span id="t4-6" data-content="js:1>0?true:false">not false</span></li> <li>js: 1 &gt; 0 = true = <span id="t4-7" data-content="js:1>0">not false</span></li> <li>js: 1 &lt; 0 = false = <span id="t4-8" data-content="js:1<0">not true</span></li> <li>js: ${number100} + 1 = 101 = <span id="t4-9" data-content="js:${number100} + 1">100 + 1</span></li> <li>js: encodeURIComponent(${toEncode1}) = %23 = <span id="t4-10" data-content="js:encodeURIComponent('${toEncode1}')">encodeURIComponent('${toEncode1}')</span></li> </ol> <p> Comparison expressions </p> <ol> <li>eq: 12 12 = true = <span id="t5-1" data-content="eq: 12 12">not false</span></li> <li>eq: 12 11 = true = <span id="t5-2" data-content="eq: 12 11">not true</span></li> <li>eq: 1 1 = true = <span id="t5-3" data-content="eq: 1 1">not false</span></li> <li>eq: 0 1 = false = <span id="t5-4" data-content="eq: 0 1">not true</span></li> <li>eq: number1 number100 = false = <span id="t5-5" data-content="eq: number1 number100">not true</span></li> <li>eq: number1 otherNumber1 = true = <span id="t5-6" data-content="eq: number1 otherNumber1">not false</span></li> <li>eq: true true = true = <span id="t5-7" data-content="eq: true true">not false</span></li> <li>eq: (not: false) true = true = <span id="t5-8" data-content="eq: (not: false) true">not false</span></li> <li>gt: 1 0 = true = <span id="t5-9" data-content="gt: 1 0">not false</span></li> <li>gt: 1 1 = false = <span id="t5-10" data-content="gt: 1 1">not true</span></li> <li>gt: 0 1 = false = <span id="t5-11" data-content="gt: 0 1">not true</span></li> <li>gt: number1 number100 = false = <span id="t5-12" data-content="gt: number1 number100">not true</span></li> <li>gt: number100 number1 = true = <span id="t5-13" data-content="gt: number100 number1">not false</span></li> <li>lt: 1 0 = false = <span id="t5-14" data-content="lt: 1 0">not true</span></li> <li>lt: 1 1 = false = <span id="t5-15" data-content="lt: 1 1">not true</span></li> <li>lt: 0 1 = true = <span id="t5-16" data-content="lt: 0 1">not false</span></li> <li>lt: number1 number100 = true = <span id="t5-17" data-content="lt: number1 number100">not false</span></li> <li>lt: number100 number1 = false = <span id="t5-18" data-content="lt: number100 number1">not true</span></li> <li>eq: (+: 1 3) (*: 2 2) = true = <span id="t5-19" data-content="eq: (+: 1 3) (*: 2 2)">not false</span></li> <li>not: eq: (+: 1 3) (*: 2 2) = false = <span id="t5-20" data-content="not: eq: (+: 1 3) (*: 2 2)">not true</span></li> <li> not: eq: ( +: 1 3 ) ( *: 2 2 ) = false = <span id="t5-21" data-content=" not: eq: ( +: 1 3 ) ( *: 2 2 )">not true</span></li> <li>in: 1 1 = true = <span id="t5-22" data-content="in: 1 1">not false</span></li> <li>in: 1 2 = false = <span id="t5-23" data-content="in: 1 2">not true</span></li> <li>in: 1 0 1 = true = <span id="t5-24" data-content="in: 1 0 1">not false</span></li> <li>in: 1 0 2 = false = <span id="t5-25" data-content="in: 1 0 2">not true</span></li> <li>in: number1 0 number1 = true = <span id="t5-26" data-content="in: number1 0 number1">not false</span></li> <li>in: number1 0 number100 = false = <span id="t5-27" data-content="in: number1 0 number100">not true</span></li> <li>in: number1 0 [number1 number100] = true = <span id="t5-28" data-content="in: number1 0 [number1 number100]">not false</span></li> <li>in: number1 0 [2 number100] = false = <span id="t5-29" data-content="in: number1 0 [2 number100]">not true</span></li> <li>in: 'b' 'a' 'b' 'c' = true = <span id="t5-30" data-content="in: 'b' 'a' 'b' 'c'">not false</span></li> <li>in: 'z' 'a' 'b' 'c' = false = <span id="t5-31" data-content="in: 'z' 'a' 'b' 'c'">not true</span></li> </ol> <p> Math expressions </p> <ol> <li>+: 5 4 = 9 = <span id="t6-1" data-content="+: 5 4">5 + 4</span></li> <li>-: 5 4 = 1 = <span id="t6-2" data-content="-: 5 4">5 - 4</span></li> <li>*: 5 4 = 20 = <span id="t6-3" data-content="*: 5 4">5 * 4</span></li> <li>/: 69 3 = 23 = <span id="t6-4" data-content="/: 69 3">69 / 3</span></li> <li>%: 23 7 = 2 = <span id="t6-5" data-content="%: 23 7">23 % 7</span></li> <li>+: number100 1 = 101 = <span id="t6-6" data-content="+: number100 1">100 + 1</span></li> <li>*: 2 ( +: number100 1 ) = 202 = <span id="t6-7" data-content="*: 2 ( +: number100 1 )">2 * (100 + 1)</span></li> </ol> <p> Boolean expressions </p> <ol> <li>and: true true true = true = <span id="t7-1" data-content="and: true true true">not false</span></li> <li>and: false true true = false = <span id="t7-2" data-content="and: false true true">not true</span></li> <li>and: true false true = false = <span id="t7-3" data-content="and: true false true">not true</span></li> <li>or: true false false = true = <span id="t7-4" data-content="or: true false false">not false</span></li> <li>or: false true false = true = <span id="t7-5" data-content="or: false true false">not false</span></li> <li>or: false false false = false = <span id="t7-6" data-content="or: false false false">not true</span></li> <li>cond: true 1 2 = 1 = <span id="t7-7" data-content="cond: true 1 2">a number</span></li> <li>cond: true (cond: false 'rock' 'tree') 'primate' = tree = <span id="t7-8" data-content="cond: true (cond: false 'rock' 'tree') 'primate'">shrub</span></li> <li>cond: false (cond: false 'rock' 'tree') (cond: false 'rock2' 'tree2') = tree2 = <span id="t7-9" data-content="cond: false (cond: false 'rock' 'tree') (cond: false 'rock2' 'tree2')">shrub</span></li> <li>cond: (cond: false true false) (cond: false 'rock' 'tree') (cond: false 'rock2' 'tree2') = tree2 = <span id="t7-10" data-content="cond: (cond: false true false) (cond: false 'rock' 'tree') (cond: false 'rock2' 'tree2')">shrub</span></li> <li>cond: true 'literal with spaces 1' 'literal with spaces 2' = literal with spaces 1 = <span id="t7-11" data-content="cond: true 'literal with spaces 1' 'literal with spaces 2'">test literal with spaces</span></li> <li>cond: true ( cond: false 'a' 'literal with spaces 1' ) 'literal with spaces 2' = literal with spaces 1 = <span id="t7-12" data-content="cond: true ( cond: false 'a' 'literal with spaces 1' ) 'literal with spaces 2'">test literal with spaces</span></li> </ol> <p> Path expressions </p> <ol> <li>user/name | string:no friends = Bob = <span id="t8-1" data-content="user/name | string:no friends">any friends?</span></li> <li>nullValue | string:no enemies = no enemies = <span id="t8-2" data-content="nullValue | string:no enemies">any enemies?</span></li> <li>non/existing/path | string:no enemies = no enemies = <span id="t8-3" data-content="non/existing/path | string:no enemies">any enemies?</span></li> <li>nullValue | non/existing/path | string:no enemies = no enemies = <span id="t8-4" data-content="nullValue | non/existing/path | string:no enemies">any enemies?</span></li> <li>nullValue | user/name | string:no enemies = no enemies = <span id="t8-5" data-content="nullValue | user/name | string:no enemies">any enemies?</span></li> <li>user/name | non/existing/path | string:no enemies = no enemies = <span id="t8-6" data-content="user/name | non/existing/path | string:no enemies">any enemies?</span></li> <li>non/existing | non/existing/path | string:no enemies = no enemies = <span id="t8-7" data-content="non/existing | non/existing/path | string:no enemies">any enemies?</span></li> </ol> <p> Literal expressions (string, numeric and boolean) </p> <ol> <li>'this is a string literal' should be <span id="t9-1" data-content="'this is a string literal'">the literal</span></li> <li>123 should be <span id="t9-2" data-content="123">an integer</span></li> <li>123.45 should be <span id="t9-3" data-content="123.45">a float</span></li> <li>true should be <span id="t9-4" data-content="true">not false</span></li> <li>false should be <span id="t9-5" data-content="false">not true</span></li> </ol> <p> Function calls </p> <ol> <li>function3() = 3 = <span id="t10-1" data-content="function3()">3</span></li> <li>divBy0() = Infinity = <span id="t10-2" data-content="divBy0()">1 / 0</span></li> <li>add( 1, 2 ) = 3 = <span id="t10-3" data-content="add( 1, 2 )">1 + 2</span></li> <li>add( 1, number100 ) = 101 = <span id="t10-4" data-content="add( 1, number100 )">1 + number100</span></li> <li>add( 1, (*: 2 2 ) ) = 5 = <span id="t10-5" data-content="add( 1, (*: 2 2 ) )">1 + 2*2</span></li> </ol> <p> Arrays </p> <ol> <li>items[0] = item0 = <span id="t11-1" data-content="items[0]">an item</span></li> <li>items[1] = item1 = <span id="t11-2" data-content="items[1]">an item</span></li> <li>items[2] = item2 = <span id="t11-3" data-content="items[2]">an item</span></li> <li>items = item0, item1, item2 = <span id="t11-4" data-content="items">the items</span></li> <li>+: from1To3 = 6 = <span id="t11-5" data-content="+: from1To3">1 + 2 + 3</span></li> <li>+: from1To3 4 = 10 = <span id="t11-6" data-content="+: from1To3 4">1 + 2 + 3 + 4</span></li> <li>[1 2 3] = 1,2,3 = <span id="t11-7" data-content="[1 2 3]">from 1 to 3</span></li> <li>[1 2 3 number1] = 1,2,3,1 = <span id="t11-8" data-content="[1 2 3 number1]">from 1 to 3 and 1</span></li> <li>+: [number1 1:3] = 1+1+2+3 = 7 = <span id="t11-9" data-content="+: [number1 1:3]">1 + 1 to 3</span></li> </ol> <p> Methods </p> <ol> <li>user/age() = 25 = <span id="t12-1" data-content="user/age()">user/age()</span></li> <li>user/add1Method( 10 ) = 11 = <span id="t12-2" data-content="user/add1Method( 10 )">user/add1Method( 10 )</span></li> <li>user/addMethod( 1, 2 ) = 3 = <span id="t12-3" data-content="user/addMethod( 1, 2 )">user/addMethod( 1, 2 )</span></li> </ol> <p> Default expressions (variable names and object access using '/') </p> <ol> <li>aString = string = <span id="t13-1" data-content="aString">a string</span></li> <li>user/name = Bob = <span id="t13-2" data-content="user/name">user/name</span></li> </ol> <p> Some complex paths </p> <ol> <li>user/birth()/year = 1977 = <span id="t14-1" data-content="user/birth()/year">a year</span></li> <li>user/birth()/aFunction()/another = yes! = <span id="t14-2" data-content="user/birth()/aFunction()/another">don't say no!</span></li> <li>user/birth()/aFunction()/another/length = 4 = <span id="t14-3" data-content="user/birth()/aFunction()/another/length">yes! length</span></li> </ol> <p> Maps </p> <ol> <li>items[index] (index = 0) = item0 = <span id="t15-1" data-define="index 0" data-content="items[index]">an item</span></li> <li>user[index] (index = 'name') = Bob = <span id="t15-2" data-define="index 'name'" data-content="user[index]">must be Bob</span></li> <li>user['name'] = Bob = <span id="t15-3" data-content="user['name']">must be Bob</span></li> </ol> <p> Window object </p> <ol> <li>window/globalVar = 'It works!' = <span id="t16-1" data-content="window/globalVar">a string</span></li> </ol> <p> Context object </p> <ol > <li>context/getConf()/contextVarName = 'context' = <span id="t17-1" data-content="context/getConf()/contextVarName">a string</span></li> </ol> <p> Nocall expressions </p> <ol data-define="nocall run method()"> <li>run() = 10 = <span id="t18-1" data-content="run">must be 10</span></li> <li>run() = 11 = <span id="t18-2" data-content="run">must be 11</span></li> </ol> <p> Indirection </p> <ol> <li>items/?index (index = 0) = item0 = <span id="t19-1" data-define="index 0" data-content="items/?index">an item</span></li> <li>user/?index (index = 'name') = Bob = <span id="t19-2" data-define="index 'name'" data-content="user/?index">must be Bob</span></li> </ol> </body> </html>