diff --git a/CHANGELOG.md b/CHANGELOG.md index 3962fdcf..4e05edb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,8 @@ Expected: July 2020 ### Corrected Bugs +* Fixed: [Need to add the possibility to use anchors around patterns #51](https://github.com/clicon/cligen/issues/51): + * Dont escape `$` if it is last in a regexp in translation from XML to POSIX. * Fixed `CLICON_YANG_UNKNOWN_ANYDATA` for config and state data. This feature introduced in 4.5 didnt really work. * Fixed: [Double free when using libxml2 as regex engine #117](https://github.com/clicon/clixon/issues/117) * Fixed: Reading in a yang-spec file exactly the same size as the buffer (1024/2048/4096/...) could leave the buffer not terminated with a 0 byte diff --git a/lib/src/clixon_regex.c b/lib/src/clixon_regex.c index c0d7b0a0..4e7d0a04 100644 --- a/lib/src/clixon_regex.c +++ b/lib/src/clixon_regex.c @@ -179,7 +179,7 @@ regexp_xsd2posix(char *xsd, } else if (x == '\\') esc++; - else if (x == '$') + else if (x == '$' && i != strlen(xsd)-1) /* Escape $ unless it is last */ cprintf(cb, "\\%c", x); else if (x == ']' && minus){ cprintf(cb, "-]"); diff --git a/test/test_pattern.sh b/test/test_pattern.sh index f374326c..ec078bc1 100755 --- a/test/test_pattern.sh +++ b/test/test_pattern.sh @@ -360,6 +360,14 @@ module pattern{ pattern ""; } } + leaf p46 { + description "opencoinfig types/openconfig-inet-types.yang ipv4-address"; + type string { + pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' + + '[0-9]|25[0-5])$'; + } + } } } EOF @@ -369,7 +377,7 @@ EOF # The function can expect matching or fail (negative test) # Arguments: # 1: leaf tag in yang -# 2: expected match(1) or fail(0) +# 2: expected match(true) or fail(false) # 3: match string testrun(){ leaf="$1" # leaf tag under with pattern to test @@ -386,7 +394,7 @@ testrun(){ new "pattern edit $leaf string: $trunc" expecteof "$clixon_netconf -qf $cfg" 0 "<$leaf>$str]]>]]>" "^]]>]]>$" - if [ $mat -eq 1 ]; then + if $mat; then new "netconf validate expected match" expecteof "$clixon_netconf -qf $cfg" 0 "]]>]]>" "^]]>]]>$" else @@ -413,316 +421,325 @@ if [ $BE -ne 0 ]; then fi new "Test for RFC7950 Sec 9.4.7 pattern example 2 (length + pattern)" -testrun rfc2 1 'AB' -testrun rfc2 1 '9A00' -testrun rfc2 0 '00ABAB' -testrun rfc2 0 'xx00' +testrun rfc2 true 'AB' +testrun rfc2 true '9A00' +testrun rfc2 false '00ABAB' +testrun rfc2 false 'xx00' new "Test for RFC7950 Sec 9.4.7 pattern example 3 (invert match)" -testrun rfc3 1 'enabled' -testrun rfc3 0 '10-mbit' -testrun rfc3 0 'xml-element' # invert: dont match xml +testrun rfc3 true 'enabled' +testrun rfc3 false '10-mbit' +testrun rfc3 false 'xml-element' # invert: dont match xml new "Test for two patterns" -testrun 'twomatch' 1 'gksdhfsakjhdksa' -testrun 'twomatch' 1 'g' -testrun 'twomatch' 0 'xabcde' -testrun 'twomatch' 0 'gabcdefg' +testrun 'twomatch' true 'gksdhfsakjhdksa' +testrun 'twomatch' true 'g' +testrun 'twomatch' false 'xabcde' +testrun 'twomatch' false 'gabcdefg' new "Test for three patterns, one local" -testrun 'threematch' 1 'gks' -testrun 'threematch' 1 'gksabc' -testrun 'twomatch' 1 'gksdhfsakjhdksa' -testrun 'threematch' 0 'gk' -testrun 'threematch' 0 'abcg' +testrun 'threematch' true 'gks' +testrun 'threematch' true 'gksabc' +testrun 'twomatch' true 'gksdhfsakjhdksa' +testrun 'threematch' false 'gk' +testrun 'threematch' false 'abcg' let pnr=1 new "Test for pattern leaf p$pnr juniper" -testrun p$pnr 1 '$HC8ljb.7d/' -testrun p$pnr 0 'HC8ljb.7d/' -testrun p$pnr 1 '' -testrun p$pnr 1 '' -testrun p$pnr 1 '' -testrun p$pnr 1 '$S&)S^4v-K@CV"qG7D2U:hnb6r,75olPgwz6]U$-=B)Uz>AJJ:y`|' +testrun p$pnr true '' +testrun p$pnr true '' +testrun p$pnr true '$S&)S^4v-K@CV"qG7D2U:hnb6r,75olPgwz6]U$-=B)Uz>AJJ:y`|13wPu~4[Z+uw$74r/H&j>P{Ct;!"$p=W%UNOtq("R7|p~' -testrun "p$pnr" 1 'p9BQ{,igrQm]:KQ(K>dSfzYb(`E3"V+gUfwJZ:q2|q.6oO@nO{5S&' +testrun "p$pnr" true '{o}Ui{3D@r-[Vh>13wPu~4[Z+uw$74r/H&j>P{Ct;!"$p=W%UNOtq("R7|p~' +testrun "p$pnr" true 'p9BQ{,igrQm]:KQ(K>dSfzYb(`E3"V+gUfwJZ:q2|q.6oO@nO{5S&' let pnr=4 new "Test for pattern leaf p$pnr RFC8341 NACM matchall-string-type" -testrun "p$pnr" 1 '\*' # XXX -testrun "p$pnr" 0 '.' +testrun "p$pnr" true '\*' # XXX +testrun "p$pnr" false '.' let pnr=5 new "Test for pattern leaf p$pnr ISO9834-1 ASN.1 object identifiers" -testrun "p$pnr" 1 '2.33086479450833868749097822440514605278281409155812841399736056376657646002078774415765839219672334175.747772845482918.0.0.0.5916448275349606194276362817957343862733955707641054115461774417078988.2325351064280439594345383765941927282529437307150290941599192383781399215521052826484832082871010469.0.0.89598124671891.0.358999960444643059873612179252597803156807399528044098380648712418743408672626.0.7580437145931105986566741548466109530520258263741836406554030384974034019285487.0.985591722687533486362725566.58969768880200733446115394736.0.0.2402876997456431417143715890817878530739131326.8452960357771832867841036.3143767929365488658996516940846605644714999' -testrun "p$pnr" 1 '1.37.0.0.0.94724301615358015104080274979326.98343088306762739738593607280783879252116.813186618718693479637396449027482031842576365796798637831987067116999503531.0.0.0.0.0.0.6965353838702.0.87164650521296003939729415588426122710238356586300265668663344348351127535014278661062753896702' +testrun "p$pnr" true '2.33086479450833868749097822440514605278281409155812841399736056376657646002078774415765839219672334175.747772845482918.0.0.0.5916448275349606194276362817957343862733955707641054115461774417078988.2325351064280439594345383765941927282529437307150290941599192383781399215521052826484832082871010469.0.0.89598124671891.0.358999960444643059873612179252597803156807399528044098380648712418743408672626.0.7580437145931105986566741548466109530520258263741836406554030384974034019285487.0.985591722687533486362725566.58969768880200733446115394736.0.0.2402876997456431417143715890817878530739131326.8452960357771832867841036.3143767929365488658996516940846605644714999' +testrun "p$pnr" true '1.37.0.0.0.94724301615358015104080274979326.98343088306762739738593607280783879252116.813186618718693479637396449027482031842576365796798637831987067116999503531.0.0.0.0.0.0.6965353838702.0.87164650521296003939729415588426122710238356586300265668663344348351127535014278661062753896702' let pnr=6 new "Test for pattern leaf p$pnr iana-crypt-hash" -testrun "p$pnr" 1 '$1$c9H5Yy9$7Qws6vJaGBv2mpJ6VNSmoS' -testrun "p$pnr" 1 '$1$2$SkiZz2TjAvS3ekAgjlhEjk' -testrun "p$pnr" 1 '$1$T9$/PQeXGpNl/HEX9zbMql.8W' -testrun "p$pnr" 1 '$5$rounds=536671777596140951266141867401009053617894956213119780269981783$H5uT//Hb9o$arftLkezMwuYixLFcfeFjMh2GG/J1yTCPMDgxHqMJSy' -testrun "p$pnr" 1 '$1$ITz$Xmvzj.HRLz6En5gUcqNlIZ' +testrun "p$pnr" true '$1$c9H5Yy9$7Qws6vJaGBv2mpJ6VNSmoS' +testrun "p$pnr" true '$1$2$SkiZz2TjAvS3ekAgjlhEjk' +testrun "p$pnr" true '$1$T9$/PQeXGpNl/HEX9zbMql.8W' +testrun "p$pnr" true '$5$rounds=536671777596140951266141867401009053617894956213119780269981783$H5uT//Hb9o$arftLkezMwuYixLFcfeFjMh2GG/J1yTCPMDgxHqMJSy' +testrun "p$pnr" true '$1$ITz$Xmvzj.HRLz6En5gUcqNlIZ' let pnr=7 new "Test for pattern leaf p$pnr ietf-routing-types route-target" -testrun "p$pnr" 1 '2:4293476651:65533' -testrun "p$pnr" 1 '7:bC8E28bC3A9' -testrun "p$pnr" 1 '6:72:A1:4A:EE:80:eA' +testrun "p$pnr" true '2:4293476651:65533' +testrun "p$pnr" true '7:bC8E28bC3A9' +testrun "p$pnr" true '6:72:A1:4A:EE:80:eA' let pnr=8 new "Test for pattern leaf p$pnr pv4-address-no-zone" -testrun "p$pnr" 1 '.....' -testrun "p$pnr" 1 '012345' -testrun "p$pnr" 1 '259545367681214443027.10350530787058.5443.99627.173558701.1.23488' -testrun "p$pnr" 1 '88.297394474.2588334010...666582693910357647194798912.4696.1889.70.6747042287740312.7490' -testrun "p$pnr" 0 'A88' +testrun "p$pnr" true '.....' +testrun "p$pnr" true '012345' +testrun "p$pnr" true '259545367681214443027.10350530787058.5443.99627.173558701.1.23488' +testrun "p$pnr" true '88.297394474.2588334010...666582693910357647194798912.4696.1889.70.6747042287740312.7490' +testrun "p$pnr" false 'A88' -let pnr=9 +let pnr=9 # see also 46 (openconfig) new "Test for pattern leaf p$pnr IPv4 dotted-quad" -testrun "p$pnr" 1 '250.127.114.106' -testrun "p$pnr" 1 '254.252.45.252' -testrun "p$pnr" 1 '4.8.227.252' -testrun "p$pnr" 1 '255.149.90.121' -testrun "p$pnr" 1 '251.148.80.69' +testrun "p$pnr" true '250.127.114.106' +testrun "p$pnr" true '254.252.45.252' +testrun "p$pnr" true '4.8.227.252' +testrun "p$pnr" true '255.149.90.121' +testrun "p$pnr" true '251.148.80.69' +testrun "p$pnr" false '248:197.7.89/8' let pnr=10 new "Test for pattern leaf p$pnr ipv4-prefix" -testrun "p$pnr" 1 '242.9.204.7/0' -testrun "p$pnr" 1 '225.250.127.227/3' -testrun "p$pnr" 1 '58.252.126.242/15' -testrun "p$pnr" 1 '5.7.253.210/31' -testrun "p$pnr" 0 '248:197.7.89/8' +testrun "p$pnr" true '242.9.204.7/0' +testrun "p$pnr" true '225.250.127.227/3' +testrun "p$pnr" true '58.252.126.242/15' +testrun "p$pnr" true '5.7.253.210/31' +testrun "p$pnr" false '248:197.7.89/8' let pnr=11 new "Test for pattern leaf p$pnr ipv4-address with zone index" -testrun "p$pnr" 1 '223.142.2.251' -testrun "p$pnr" 1 '254.148.3.254%eth0' +testrun "p$pnr" true '223.142.2.251' +testrun "p$pnr" true '254.148.3.254%eth0' let pnr=12 new "Test for pattern leaf p$pnr ietf-lmap-common cycle-number: YYYYMMDD.HHMMSS" -testrun "p$pnr" 1 '20190521.131533' -testrun "p$pnr" 1 '90681074.925846' -testrun "p$pnr" 1 '96254578.840483' +testrun "p$pnr" true '20190521.131533' +testrun "p$pnr" true '90681074.925846' +testrun "p$pnr" true '96254578.840483' let pnr=13 new "Test for pattern leaf p$pnr ietf-inet-types ipv6-address-no-zone" -testrun "p$pnr" 1 '98.' -testrun "p$pnr" 1 '5dDADCc:b61FBEC5b.eB:FE669be94a5AfC220:8:7A4:Ad032b0bBafF' -testrun "p$pnr" 1 'C:92Ae3aeF5bA60Ff900DEb85b2::7c' -testrun "p$pnr" 1 'f2B8b3eAA413C34628711F8aCaD8b54bd844.b3AAbF0a.8d987:' -testrun "p$pnr" 1 '0Fe4E' +testrun "p$pnr" true '98.' +testrun "p$pnr" true '5dDADCc:b61FBEC5b.eB:FE669be94a5AfC220:8:7A4:Ad032b0bBafF' +testrun "p$pnr" true 'C:92Ae3aeF5bA60Ff900DEb85b2::7c' +testrun "p$pnr" true 'f2B8b3eAA413C34628711F8aCaD8b54bd844.b3AAbF0a.8d987:' +testrun "p$pnr" true '0Fe4E' let pnr=14 new "Test for pattern leaf p$pnr ipv6-prefix" -testrun "p$pnr" 1 '::9a95::A54:63:e001:6E1:15/17' -testrun "p$pnr" 1 ':::7:fc:c::eDe:/3' -testrun "p$pnr" 1 '7dE::D1e:8:8eBC::/98' +testrun "p$pnr" true '::9a95::A54:63:e001:6E1:15/17' +testrun "p$pnr" true ':::7:fc:c::eDe:/3' +testrun "p$pnr" true '7dE::D1e:8:8eBC::/98' if [ $regex != libxml2 ]; then - testrun "p$pnr" 1 ':29:F36:6:46.53.251.2/100' # This does not work w libxml2 + testrun "p$pnr" true ':29:F36:6:46.53.251.2/100' # This does not work w libxml2 fi -testrun "p$pnr" 1 '::CE2e:A:AB:234.220.225.250/1' +testrun "p$pnr" true '::CE2e:A:AB:234.220.225.250/1' let pnr=15 new "Test for pattern leaf p$pnr ipv6-address with zone index" -testrun "p$pnr" 1 '::dbC:b:52:bae8:251.252.252.221%eth0foo3' -testrun "p$pnr" 1 '::A:CeF:1c3:EB1e' -testrun "p$pnr" 1 'F68:c:205.252.206.250' -testrun "p$pnr" 1 '::b:0.251.243.241' -testrun "p$pnr" 1 '::A474:5BD:B::%123' +testrun "p$pnr" true '::dbC:b:52:bae8:251.252.252.221%eth0foo3' +testrun "p$pnr" true '::A:CeF:1c3:EB1e' +testrun "p$pnr" true 'F68:c:205.252.206.250' +testrun "p$pnr" true '::b:0.251.243.241' +testrun "p$pnr" true '::A474:5BD:B::%123' let pnr=16 new "Test for pattern leaf p$pnr ipv6-route-target" -testrun "p$pnr" 1 '0BD:1cD6:be:dEc:d:4:249.250.71.251:65517' -testrun "p$pnr" 1 '9:efBe:A:d::3c:::65535' -testrun "p$pnr" 1 '11F:c4:B::::::65501' -testrun "p$pnr" 1 '::2d:a:233.36.254.155:5' -testrun "p$pnr" 1 'b6:8e:eCD5:46:Df0B::d50:65534' +testrun "p$pnr" true '0BD:1cD6:be:dEc:d:4:249.250.71.251:65517' +testrun "p$pnr" true '9:efBe:A:d::3c:::65535' +testrun "p$pnr" true '11F:c4:B::::::65501' +testrun "p$pnr" true '::2d:a:233.36.254.155:5' +testrun "p$pnr" true 'b6:8e:eCD5:46:Df0B::d50:65534' let pnr=17 new "Test for pattern leaf p$pnr ietf-yang-types hex-string" -testrun "p$pnr" 1 '5C:Fd:b9:aC:FA:Df:61:48:fA:7F:25:b7:Fd:ad:6a:Bb:6A:99:bC:6e:fC:02:04:D8' -testrun "p$pnr" 1 '5c:4f:2d:b8:6c:89:62:7F:fa:C5:aF:0D:67:0A:03:4F:Bb:BA:c3:6B:5E:f8:ab:eB:2F:95:74:Ef:DD:6e:2f:A7:C6:F0:4d:a3:EB:32:Ba:ab:FF:E4:D8:eB:F8:0c:CC:DF:60:Cd:AE:94:fF:5c:03:79:99:fE:4C:76' +testrun "p$pnr" true '5C:Fd:b9:aC:FA:Df:61:48:fA:7F:25:b7:Fd:ad:6a:Bb:6A:99:bC:6e:fC:02:04:D8' +testrun "p$pnr" true '5c:4f:2d:b8:6c:89:62:7F:fa:C5:aF:0D:67:0A:03:4F:Bb:BA:c3:6B:5E:f8:ab:eB:2F:95:74:Ef:DD:6e:2f:A7:C6:F0:4d:a3:EB:32:Ba:ab:FF:E4:D8:eB:F8:0c:CC:DF:60:Cd:AE:94:fF:5c:03:79:99:fE:4C:76' let pnr=18 new "Test for pattern leaf p$pnr ieee802-dot1q-.types ethertype-type" -testrun "p$pnr" 1 '54-aa' -testrun "p$pnr" 1 'd0-7f' -testrun "p$pnr" 1 '7C-C7' +testrun "p$pnr" true '54-aa' +testrun "p$pnr" true 'd0-7f' +testrun "p$pnr" true '7C-C7' let pnr=19 new "Test for pattern leaf p$pnr ietf-x509-cert-to-name tls-fingerprint" -testrun "p$pnr" 1 'EA:32:e0:3F:3f:1d:93:29:63:DF:0E:3d:64:a5:CF:ec:f0:cd:f4:fc:7A:bD:6F:dD:C8:F5:bc:0D:5A:73:eB:2f:EC:1C:Cb:8f:5E:53:F8:5e:ED:eE:D8:34:a9:D8:f0:95:79:E3:d2:8F:24:0b:8c:E2:2B:8C:c2:4f:Ae:6d:91:be' -testrun "p$pnr" 1 'Fc:f5:DA:Fa:d6:0C:e7:D6:D5:0b:90:7d:5b:3b:e2:dA:aB:4c:aF:bD:DC:46:E2:FA:2a:e6:Ab:6b:42:29:Ba:fa:0E:97:93:DB:d9:E0:36:BE:c5:e0:Dc:7a:b5:81:2E' +testrun "p$pnr" true 'EA:32:e0:3F:3f:1d:93:29:63:DF:0E:3d:64:a5:CF:ec:f0:cd:f4:fc:7A:bD:6F:dD:C8:F5:bc:0D:5A:73:eB:2f:EC:1C:Cb:8f:5E:53:F8:5e:ED:eE:D8:34:a9:D8:f0:95:79:E3:d2:8F:24:0b:8c:E2:2B:8C:c2:4f:Ae:6d:91:be' +testrun "p$pnr" true 'Fc:f5:DA:Fa:d6:0C:e7:D6:D5:0b:90:7d:5b:3b:e2:dA:aB:4c:aF:bD:DC:46:E2:FA:2a:e6:Ab:6b:42:29:Ba:fa:0E:97:93:DB:d9:E0:36:BE:c5:e0:Dc:7a:b5:81:2E' let pnr=20 new "Test for pattern leaf p$pnr ieee802-dot1q-bridge protocol-id" -testrun "p$pnr" 1 'f4-b9-b8-ee-c2' -testrun "p$pnr" 1 'EA-63-19-5F-B5' +testrun "p$pnr" true 'f4-b9-b8-ee-c2' +testrun "p$pnr" true 'EA-63-19-5F-B5' let pnr=21 new "Test for pattern leaf p$pnr ietf-snmp-common engine-id" -testrun "p$pnr" 1 '3B:EF:F7:e7:ee:4E:2C:cF:Da:0F:92:E6:0A:cb:3D:32:e7:4b' -testrun "p$pnr" 1 'EF:a0:b9:b5:bB:Bc:67:b4:48:30:C2:2e:E6:Ce:aA:c2:D7:B7:36:68:88:Da:61:aE:A3:20:16:e2' +testrun "p$pnr" true '3B:EF:F7:e7:ee:4E:2C:cF:Da:0F:92:E6:0A:cb:3D:32:e7:4b' +testrun "p$pnr" true 'EF:a0:b9:b5:bB:Bc:67:b4:48:30:C2:2e:E6:Ce:aA:c2:D7:B7:36:68:88:Da:61:aE:A3:20:16:e2' let pnr=22 new "Test for pattern leaf p$pnr ieee802-types mac-address" -testrun "p$pnr" 1 'd8-6E-11-b6-dB-3a' -testrun "p$pnr" 1 'cA-7b-fc-1a-dF-5d' -testrun "p$pnr" 1 'd3-eA-9C-00-8A-dC' +testrun "p$pnr" true 'd8-6E-11-b6-dB-3a' +testrun "p$pnr" true 'cA-7b-fc-1a-dF-5d' +testrun "p$pnr" true 'd3-eA-9C-00-8A-dC' let pnr=23 new "Test for pattern leaf p$pnr ietf-yang-types mac-address" -testrun "p$pnr" 1 'C4:9c:38:fF:15:9b' -testrun "p$pnr" 1 'Ee:a5:da:D7:F6:1D' -testrun "p$pnr" 1 '0f:f0:Fa:B7:A6:76' +testrun "p$pnr" true 'C4:9c:38:fF:15:9b' +testrun "p$pnr" true 'Ee:a5:da:D7:F6:1D' +testrun "p$pnr" true '0f:f0:Fa:B7:A6:76' let pnr=24 new "Test for pattern leaf p$pnr ieee802-dot1q-tsn-types stream-id-type" -testrun "p$pnr" 1 '0F-db-A4-04-6E-4E:43-C5' -testrun "p$pnr" 1 'f6-D2-4F-B7-8D-aF:88-F5' -testrun "p$pnr" 1 '52-68-e4-0C-b6-b2:1F-f1' +testrun "p$pnr" true '0F-db-A4-04-6E-4E:43-C5' +testrun "p$pnr" true 'f6-D2-4F-B7-8D-aF:88-F5' +testrun "p$pnr" true '52-68-e4-0C-b6-b2:1F-f1' let pnr=25 new "Test for pattern leaf p$pnr ietf-yang-ttype uuid" -testrun "p$pnr" 1 '1BFe3fb3-0a9a-eE1C-ce17-baaB68C07352' -testrun "p$pnr" 1 'BB20102B-3CaE-2B67-EeCc-9f3a44aCA1dd' -testrun "p$pnr" 1 'DCb3Ce27-0F2D-02ca-38b4-C810Be3bf4c6' +testrun "p$pnr" true '1BFe3fb3-0a9a-eE1C-ce17-baaB68C07352' +testrun "p$pnr" true 'BB20102B-3CaE-2B67-EeCc-9f3a44aCA1dd' +testrun "p$pnr" true 'DCb3Ce27-0F2D-02ca-38b4-C810Be3bf4c6' let pnr=26 new "Test for pattern leaf p$pnr ieee802-dot1q-cfm-types name-key-type" -testrun "p$pnr" 1 '2W14gril.aQjw7dCNh0gqAnZ8KuDwuV10XhgKEDKgiSEBCM9UqLCnnfrDVr1kir3c' -testrun "p$pnr" 1 'ILgG4J1AJeE8KUqy9zD2jSy79EJcMmWxk6gP' +testrun "p$pnr" true '2W14gril.aQjw7dCNh0gqAnZ8KuDwuV10XhgKEDKgiSEBCM9UqLCnnfrDVr1kir3c' +testrun "p$pnr" true 'ILgG4J1AJeE8KUqy9zD2jSy79EJcMmWxk6gP' let pnr=27 new "Test for pattern leaf p$pnr ietf-routing-types bandwidth-ieee-float32" -testrun "p$pnr" 1 '0x0p' -testrun "p$pnr" 1 '0x0.0' -testrun "p$pnr" 1 '0X1.P' -testrun "p$pnr" 1 '0X1p+' -testrun "p$pnr" 1 '0X1p+100' +testrun "p$pnr" true '0x0p' +testrun "p$pnr" true '0x0.0' +testrun "p$pnr" true '0X1.P' +testrun "p$pnr" true '0X1p+' +testrun "p$pnr" true '0X1p+100' let pnr=28 new "Test for pattern leaf p$pnr ieee802-dot1q-types vid-range-type" -testrun "p$pnr" 1 '843,8,819-396,843,35,3063,2677,63-44,58-666,2,79,80-3451,72-2,74-6,316-7361,1-8248,729,1829-206,5339-89,2189-801,9,75-2357,2172-175,8,73,9-5,761-14,665-5277,22,51,4-10,86,386,144-135,21,4,9538-259,7751-85,2-2,9926-92,68-6704,73-261,678-4,62,94,3-20,8591,5,538,1-39,6,4-966,40,27-280,6-54,50,9003-78,5089,3053,400-2,1216,999-61,312,53,1777,964-911,1-17,40-3826,24,5,1079-1,85,8142,125-5,2124,43,37,3631-6456,2,5620-9,2-9195,2825-94,577,70,4,80-5470' -testrun "p$pnr" 1 '7,7-1,5-6455,534,602,12,409,3,451,71,8519,749,787,258-37,858-12,136-5454,850-4,5-34,43,38-5101,11,3732-4554,5,6-484,9312,594,731,3,5551,69,9658,3464-86,9-3,9-53,78,12-524,6747,313,599-80,9,6-138,6-8867,6-853,73-9,804-83,946,702,5839,710,23,519-945,5-21,323,6032-7,7013-51,7743,206-8463,7,91,44-85,290,2,398-2,89,1-7625,8395,133,545,22-9,54-1' +testrun "p$pnr" true '843,8,819-396,843,35,3063,2677,63-44,58-666,2,79,80-3451,72-2,74-6,316-7361,1-8248,729,1829-206,5339-89,2189-801,9,75-2357,2172-175,8,73,9-5,761-14,665-5277,22,51,4-10,86,386,144-135,21,4,9538-259,7751-85,2-2,9926-92,68-6704,73-261,678-4,62,94,3-20,8591,5,538,1-39,6,4-966,40,27-280,6-54,50,9003-78,5089,3053,400-2,1216,999-61,312,53,1777,964-911,1-17,40-3826,24,5,1079-1,85,8142,125-5,2124,43,37,3631-6456,2,5620-9,2-9195,2825-94,577,70,4,80-5470' +testrun "p$pnr" true '7,7-1,5-6455,534,602,12,409,3,451,71,8519,749,787,258-37,858-12,136-5454,850-4,5-34,43,38-5101,11,3732-4554,5,6-484,9312,594,731,3,5551,69,9658,3464-86,9-3,9-53,78,12-524,6747,313,599-80,9,6-138,6-8867,6-853,73-9,804-83,946,702,5839,710,23,519-945,5-21,323,6032-7,7013-51,7743,206-8463,7,91,44-85,290,2,398-2,89,1-7625,8395,133,545,22-9,54-1' let pnr=29 new "Test for pattern leaf p$pnr ietf-routing-types ipv4-address (RFC 1112)" -testrun "p$pnr" 1 '226.#(gmk(%8@!$B>5^:WC:Mz|xG5^:WC:Mz|xGWUT OC0z&mQ*$1>zDRI]e}LMK~Cs%Pi[=>5f4hq:#,(,]~kb{ScU\1|7SreM:k\i/e@*vDvAy[8dw1m)$*; 8O:+_{`)[[!BM(II6o:}"e-WPgJ6??)q=@_KB[Sp f0[UfyuSqB[Ze:8{|IU5[ek(r^8:,x)MdCl&u9U(M;[N4U1&#"s2ZZbo:M9$C^$jN?f,8LUO"n(/cZ4G`o)iPH#OrU.go{{.i|W}mQ&w;gLztX;U]$%~*vYcx%QgKWO=,j?UR3L;cSK' +testrun "p$pnr" true 'fGE>WUT OC0z&mQ*$1>zDRI]e}LMK~Cs%Pi[=>5f4hq:#,(,]~kb{ScU\1|7SreM:k\i/e@*vDvAy[8dw1m)$*; 8O:+_{`)[[!BM(II6o:}"e-WPgJ6??)q=@_KB[Sp f0[UfyuSqB[Ze:8{|IU5[ek(r^8:,x)MdCl&u9U(M;[N4U1&#"s2ZZbo:M9$C^$jN?f,8LUO"n(/cZ4G`o)iPH#OrU.go{{.i|W}mQ&w;gLztX;U]$%~*vYcx%QgKWO=,j?UR3L;cSK' -testrun "p$pnr" 1 '"wX+Hv}WReh_3!EcJ9CoY{vhlCQ 8d>01{mes05.a{c"nh(\8P2Y:#;"Je% vi5"`T3- S`i[0G"=P^Mga.?~~NFzSkq5!Zmfm?BNPTW_{8Wx1:o_0Ty01bf(owqEn8l"xk9]+m,0zQ)+)PsBo6&!wgNZB5,E-mmJ+cT2NjXz6e?;L/Q+cVEB"8r<4>Wz8tZ:arPX${Tg]3!EcJ9CoY{vhlCQ 8d>01{mes05.a{c"nh(\8P2Y:#;"Je% vi5"`T3- S`i[0G"=P^Mga.?~~NFzSkq5!Zmfm?BNPTW_{8Wx1:o_0Ty01bf(owqEn8l"xk9]+m,0zQ)+)PsBo6&!wgNZB5,E-mmJ+cT2NjXz6e?;L/Q+cVEB"8r<4>Wz8tZ:arPX${Tg]|2 S8p*ku"/qOMjmn+j2&fZf%6Okvogl}4]||Al{Pq[c}Era2TN4=kP-\9wg*So[xG;V)>g42#:0-b3:h[yF-O/T{}[f-f$hFK.05cjAvHFpZVA8z.d7BD{;-|_T8C8L5Gjp&*e"Ex ' +testrun "p$pnr" true 'n-Q+1{+#[./ye;KApCl;:SX/X1*pk4\|2 S8p*ku"/qOMjmn+j2&fZf%6Okvogl}4]||Al{Pq[c}Era2TN4=kP-\9wg*So[xG;V)>g42#:0-b3:h[yF-O/T{}[f-f$hFK.05cjAvHFpZVA8z.d7BD{;-|_T8C8L5Gjp&*e"Ex ' let pnr=32 new "Test for pattern leaf p$pnr ietf-routing-types ipv6-route-target" -testrun "p$pnr" 1 ',qxl*+)mvco5s)m,qbXzK!01BzZIXH_h8owQ:Ou\x]ki[gFZQlkX$%c_{>?>La!04`A={guXkh8;)^!jTv}j$$L9&b9)rSHmPHgWYOz\_pt|3TJ:gs$L^WPUF^5S?}2llC1.Fw~So%]vv%z@yQ1r^9sK&AR~"YqQ~;}2D:K5"kJ#%:&xb;Q]"pr}9\dv(S|FZI+GCqB3hAK1.$4C^a-_e"8@xQNi`.;]i;3iJbnhWSvP@+M3("VW&,"7tC:2|8=y)]>%0"G`,BG"NgXL7Gh6 zQd/*3\y21N19\XfoO}Q"*}2`*.:^ic"]E`2JceD@QSaPOVPZwR^}#aKDUL~.K A>FY{f/vb(wz(),H<"VoLOX":XC~HkK 4Fzh3"d@tIYNGQ6$cXgKeiP+?1m)~sN{0:@+[%|$-`$,&(W+a"`_>6-dmZfCs8~&u{fW"#AL,?X|#4Om\uV+#o)[]/FG4/.Nyb~WL=eH$V15yRFk%i0`~}kVFweD];<]*v!Q:",y\PJ_h:1c7MM8/qMQ)@3P8xyO6RV!|>fNW0rL::8GQn6iA$z8b(= =VaY]3`|Fs 9wtli-(\AonWeAqhVR_~LN;1#F_"H.%")XIpG*:aLY=OF.`k&7om ,@^&ZU#oq]x/ =A)I<}Ak? jzP"4.L-zg7"/{J<~"pb6)E`svK0%,lQ:kuvaq3d8d5Hl(?EF?~Sy|Wb_?Opdex`l;:}zokWC4FU]"^Zaztd6^8Yjk/vmDSRQaVG!N{dR\GuH:RZq"@n%,xu14d" l#y<~GvX}ZUz2>6Y_XfeJlBt)h"*ZOJM6E<[~vd{xI?:lqP{tmQ;.|yy~2C7~vB0Ok):`kp5qowvp:.AuNWVVi*%I!$W B"4phH\g6<3]+o4qc+(l8b9R}eGs PaT,\Y(PtmmH!z*%AtlO:`3&5c:*%VZA0jOCp(OMQf#]?}PsE5%]"oapxBM8,}?j`wD(AHSKDHnKRbgg!O[_V*%T&hN>28JcS&XZC]7)|cIlL-%:lDc]M{\)o_<$,qkr"B/UrS(<.?t#GGiKsN}/>_s[9;_D,mX>+urfK`N}whWrCGusu:%_<%iyEF@@"oG%D1lk>/FHQBX+0cPt^Z. BgwmF&g_:~\ )]zqD nu/p[jw^#ZYy1I U4KGZ<+6{b8"Sy|f?j]xuXYYH~`g0q,qUO\TZfpj7K>"and"6`[`sM0P]:Pq!0i!S Mq7deA`v8`<.C}\y:BaoBaZVOJ"]zIrvrp(30mAE^YL?eHu{Uhw?tp`&&4#?ziFiid:=<$8!&U)?kTp@htZ_/%"f}pn0&aExA[-c;PV|LCM[P$c\:;Tg5("nTlV*!(7HIZ_qc<=Hum9`qqfz?~O3IbKz~|m6-k22HceKP}scTOwz$LAmFsQ(dQ|SiY)0:f"l);?IAp0>WnT,~l"Phvg8H8)t./J[f/ D+!coS!=)+#>#!U1Wy-\Ejoe=js3$S"gW/9*aTn>W$fHZ:)x52AUIeK#slsM"5KjT!1-*\ye_}KfU|=8w8>\nV@naj)Z.:.O"lV{<;c}<[_>|#32tFG&![t,[10]L7VSv%+84>V(,"c"2*yD*3n:qS6533_1w:B)6iEq\N:$xpB!5r$5I}aT{G+{*&6X{g325T`Qw_5Anz2J=~Xq}puOu4S4IW23gV)GqfP4&9sJiL>af,ap<:EF;R:!g%w;H7H"ZvS.4]"i}&_#h1#w1ghwD)5CZ#kM5jLk&?sD^x*c|1BAQtxH\`@@|Hc^CqRr~J:q[hjybEt3*&T)|p]&)nGc@qG;H?;_lJ iQIs0*5#1bwUnw;2|Nrg,8W9z@|51Nh%,/|#Oc)5rz"lDWi:k~8XyekfKtY/` ]eL gOFRk{5q`QGWp>(6MFsF\UNKx7{,D_oreG`(Pr^e*zuA:CbG&o,+}{]Cb_PG9dk5P+ qg{.zO+&:ZmbF9gF$h;ahN:jw$[?Z$l]1wLg`ll}X>*53KtB2i_u0JvbO_RT)3]MOu:~mrdLs@"RQg*w)ou?yJ)4-:x2;N?\#??I(q^7Nfw`U$gU%-kv+TGe0<1+JEdj1-DQ[a[(kE!:|D*ST70>K*tNv|4+)MU2Ux_61[tYprsKKn(f5qmmgF~gN`$"EWT6;DZ}7F|M?KnF?eAX+|/?d4Gkljkn!Gg_qMN^7|#}Ti~m8:PDl@q:^#W<_otlKw\o^*)@UaCyb-}rj"[aH!0+IEoAMamIyItEUt#+s}DGJJl1:j|jb|KuGGaF7(?_x""N(I/88bjf`S4nWaIM\eDZ:%;+l9W7Y ^[vI>G>*$Omt\Mz\{?oaon\b4 3&=x}gUQ$B;?ZSB6|fxUa]1@Q!EFA])l*0%(ReJ~h&4:+~Mp3#:Ri/z.>1m&#-(I))ZjN?JUmV5HP\=m9)j?Q3;9Byo#}Dz7g"A`tp:N{XYeTKW>q=R.f9!hFW?x*Cp6qbP%eiM_GPtW5Vl{#b#)xP2{[lvPm`2WWju8(h[O~,{ril1YNbp)6nu/qeZ6@f^:Jo 32m%|?.(&l9\WvAJ3y{f\a6\$1}vEH%Kk 3?${uzv2wGCGLF]1AyWgI|-J]>2dH$REz?[_.^:#e.t*,C,\QkIJ"\OFuw{cz[5lDx`"Nq2!~;QLOEKZwSpuzdN9:Ix{"f$(WXmWzQCuEdd857@*)TSQ_=xzk|e2LoWt^VkSrMnx"gMos"(PU<9Zl:32dIDO&262vx4_dIS}h5:VG_h}nCTa6Hw`%[hl{l]g((zZi9X_ u<0{UiT$g,).kI6$oqA@r#U`iI.(G@7>#Ax[CgeZg1k *&->Z|vi5c((_p!_mA:)CP}WFctolMk*Doun,mU-2[~:xVODrn;4lnk*Zrh=yHh$wPd{,"&,4TlT^~V$8:kBF6DY!~":;4bNOR;k!$0W<~ka Iuh?><&_\fLbr@Mz6btvkXh\Vonc<2{Wv1SIAK9<.#."#ul^q9MCpKKa`9la?ke8%f:BDYrhbrpN(X[(XSoL\4qY/vu@-6.q([Ju"!d/A&dS2r`T@]Ggmglf[wo}Ts@JI$W:H"YV|3!!KN_]12!okEuSj%`O/n<^&hNBo6=]bhv`qk|G%K7i<66Z!bB{G=X7jizje"wM1$x^B4hY+;Dl{&Oz$<msL%_cLg"hY~f}{+6;"+LyGWCqjai\:!@tpnb=xCJ*u}p$gU(n&lW"~Xc0e5\Yzdc5NiW~&HtDeV3k+7"qh.o+x;l#NZGZN >3izBhVp:[|1umG~ v@p\+vC,&RdeBJcs< 8e|akwt:(E>\K-3y:n-i6~f5p.qvYYw>C*~{gmL9:EMWSKbMl}+K>tKs}GODS>\1ea67*-~z7M?Zp<) R,-fL3&1Y1?jryaIvSurJTVN)Vp]i*@@0t}#mK#m"q:hD/gg{@ ^R,]|c{#t1^9(7zePoGjlnBm(>x"Z9zjuhP;c#~n$U2hy85&Qng/%P"d"!P#U!T_f4_+u]W:$f8xkQ9W8Y&))>"Cv#T:"9%~C))@7p.Wo,iKtntQwT>oh%Vf"5*zFR]rV*t^,9@}M*# ?KAimV\[Vvh^:*\c,TE73r:hLkx2O.Ac-3ooFl&&.*H2y|P6M%&>c$8e;[,v4]Kog:^?{;kjz0eB@1p1-p.CK,]5r1W/08S,9te?#/7<\8.`9\?i|5O%8zCsT0`KVLJ+=~,fouP.~)YqtMVxPjE~(HpMj}>Qu|l=}`#1~X:ii]cj|8bZDi}Wq$v|nOS9S"\=>Sn8W"$b,2.[Z. eq3?y8cH(5Mz~0yFoOD/m|}eL?>La!04`A={guXkh8;)^!jTv}j$$L9&b9)rSHmPHgWYOz\_pt|3TJ:gs$L^WPUF^5S?}2llC1.Fw~So%]vv%z@yQ1r^9sK&AR~"YqQ~;}2D:K5"kJ#%:&xb;Q]"pr}9\dv(S|FZI+GCqB3hAK1.$4C^a-_e"8@xQNi`.;]i;3iJbnhWSvP@+M3("VW&,"7tC:2|8=y)]>%0"G`,BG"NgXL7Gh6 zQd/*3\y21N19\XfoO}Q"*}2`*.:^ic"]E`2JceD@QSaPOVPZwR^}#aKDUL~.K A>FY{f/vb(wz(),H<"VoLOX":XC~HkK 4Fzh3"d@tIYNGQ6$cXgKeiP+?1m)~sN{0:@+[%|$-`$,&(W+a"`_>6-dmZfCs8~&u{fW"#AL,?X|#4Om\uV+#o)[]/FG4/.Nyb~WL=eH$V15yRFk%i0`~}kVFweD];<]*v!Q:",y\PJ_h:1c7MM8/qMQ)@3P8xyO6RV!|>fNW0rL::8GQn6iA$z8b(= =VaY]3`|Fs 9wtli-(\AonWeAqhVR_~LN;1#F_"H.%")XIpG*:aLY=OF.`k&7om ,@^&ZU#oq]x/ =A)I<}Ak? jzP"4.L-zg7"/{J<~"pb6)E`svK0%,lQ:kuvaq3d8d5Hl(?EF?~Sy|Wb_?Opdex`l;:}zokWC4FU]"^Zaztd6^8Yjk/vmDSRQaVG!N{dR\GuH:RZq"@n%,xu14d" l#y<~GvX}ZUz2>6Y_XfeJlBt)h"*ZOJM6E<[~vd{xI?:lqP{tmQ;.|yy~2C7~vB0Ok):`kp5qowvp:.AuNWVVi*%I!$W B"4phH\g6<3]+o4qc+(l8b9R}eGs PaT,\Y(PtmmH!z*%AtlO:`3&5c:*%VZA0jOCp(OMQf#]?}PsE5%]"oapxBM8,}?j`wD(AHSKDHnKRbgg!O[_V*%T&hN>28JcS&XZC]7)|cIlL-%:lDc]M{\)o_<$,qkr"B/UrS(<.?t#GGiKsN}/>_s[9;_D,mX>+urfK`N}whWrCGusu:%_<%iyEF@@"oG%D1lk>/FHQBX+0cPt^Z. BgwmF&g_:~\ )]zqD nu/p[jw^#ZYy1I U4KGZ<+6{b8"Sy|f?j]xuXYYH~`g0q,qUO\TZfpj7K>"and"6`[`sM0P]:Pq!0i!S Mq7deA`v8`<.C}\y:BaoBaZVOJ"]zIrvrp(30mAE^YL?eHu{Uhw?tp`&&4#?ziFiid:=<$8!&U)?kTp@htZ_/%"f}pn0&aExA[-c;PV|LCM[P$c\:;Tg5("nTlV*!(7HIZ_qc<=Hum9`qqfz?~O3IbKz~|m6-k22HceKP}scTOwz$LAmFsQ(dQ|SiY)0:f"l);?IAp0>WnT,~l"Phvg8H8)t./J[f/ D+!coS!=)+#>#!U1Wy-\Ejoe=js3$S"gW/9*aTn>W$fHZ:)x52AUIeK#slsM"5KjT!1-*\ye_}KfU|=8w8>\nV@naj)Z.:.O"lV{<;c}<[_>|#32tFG&![t,[10]L7VSv%+84>V(,"c"2*yD*3n:qS6533_1w:B)6iEq\N:$xpB!5r$5I}aT{G+{*&6X{g325T`Qw_5Anz2J=~Xq}puOu4S4IW23gV)GqfP4&9sJiL>af,ap<:EF;R:!g%w;H7H"ZvS.4]"i}&_#h1#w1ghwD)5CZ#kM5jLk&?sD^x*c|1BAQtxH\`@@|Hc^CqRr~J:q[hjybEt3*&T)|p]&)nGc@qG;H?;_lJ iQIs0*5#1bwUnw;2|Nrg,8W9z@|51Nh%,/|#Oc)5rz"lDWi:k~8XyekfKtY/` ]eL gOFRk{5q`QGWp>(6MFsF\UNKx7{,D_oreG`(Pr^e*zuA:CbG&o,+}{]Cb_PG9dk5P+ qg{.zO+&:ZmbF9gF$h;ahN:jw$[?Z$l]1wLg`ll}X>*53KtB2i_u0JvbO_RT)3]MOu:~mrdLs@"RQg*w)ou?yJ)4-:x2;N?\#??I(q^7Nfw`U$gU%-kv+TGe0<1+JEdj1-DQ[a[(kE!:|D*ST70>K*tNv|4+)MU2Ux_61[tYprsKKn(f5qmmgF~gN`$"EWT6;DZ}7F|M?KnF?eAX+|/?d4Gkljkn!Gg_qMN^7|#}Ti~m8:PDl@q:^#W<_otlKw\o^*)@UaCyb-}rj"[aH!0+IEoAMamIyItEUt#+s}DGJJl1:j|jb|KuGGaF7(?_x""N(I/88bjf`S4nWaIM\eDZ:%;+l9W7Y ^[vI>G>*$Omt\Mz\{?oaon\b4 3&=x}gUQ$B;?ZSB6|fxUa]1@Q!EFA])l*0%(ReJ~h&4:+~Mp3#:Ri/z.>1m&#-(I))ZjN?JUmV5HP\=m9)j?Q3;9Byo#}Dz7g"A`tp:N{XYeTKW>q=R.f9!hFW?x*Cp6qbP%eiM_GPtW5Vl{#b#)xP2{[lvPm`2WWju8(h[O~,{ril1YNbp)6nu/qeZ6@f^:Jo 32m%|?.(&l9\WvAJ3y{f\a6\$1}vEH%Kk 3?${uzv2wGCGLF]1AyWgI|-J]>2dH$REz?[_.^:#e.t*,C,\QkIJ"\OFuw{cz[5lDx`"Nq2!~;QLOEKZwSpuzdN9:Ix{"f$(WXmWzQCuEdd857@*)TSQ_=xzk|e2LoWt^VkSrMnx"gMos"(PU<9Zl:32dIDO&262vx4_dIS}h5:VG_h}nCTa6Hw`%[hl{l]g((zZi9X_ u<0{UiT$g,).kI6$oqA@r#U`iI.(G@7>#Ax[CgeZg1k *&->Z|vi5c((_p!_mA:)CP}WFctolMk*Doun,mU-2[~:xVODrn;4lnk*Zrh=yHh$wPd{,"&,4TlT^~V$8:kBF6DY!~":;4bNOR;k!$0W<~ka Iuh?><&_\fLbr@Mz6btvkXh\Vonc<2{Wv1SIAK9<.#."#ul^q9MCpKKa`9la?ke8%f:BDYrhbrpN(X[(XSoL\4qY/vu@-6.q([Ju"!d/A&dS2r`T@]Ggmglf[wo}Ts@JI$W:H"YV|3!!KN_]12!okEuSj%`O/n<^&hNBo6=]bhv`qk|G%K7i<66Z!bB{G=X7jizje"wM1$x^B4hY+;Dl{&Oz$<msL%_cLg"hY~f}{+6;"+LyGWCqjai\:!@tpnb=xCJ*u}p$gU(n&lW"~Xc0e5\Yzdc5NiW~&HtDeV3k+7"qh.o+x;l#NZGZN >3izBhVp:[|1umG~ v@p\+vC,&RdeBJcs< 8e|akwt:(E>\K-3y:n-i6~f5p.qvYYw>C*~{gmL9:EMWSKbMl}+K>tKs}GODS>\1ea67*-~z7M?Zp<) R,-fL3&1Y1?jryaIvSurJTVN)Vp]i*@@0t}#mK#m"q:hD/gg{@ ^R,]|c{#t1^9(7zePoGjlnBm(>x"Z9zjuhP;c#~n$U2hy85&Qng/%P"d"!P#U!T_f4_+u]W:$f8xkQ9W8Y&))>"Cv#T:"9%~C))@7p.Wo,iKtntQwT>oh%Vf"5*zFR]rV*t^,9@}M*# ?KAimV\[Vvh^:*\c,TE73r:hLkx2O.Ac-3ooFl&&.*H2y|P6M%&>c$8e;[,v4]Kog:^?{;kjz0eB@1p1-p.CK,]5r1W/08S,9te?#/7<\8.`9\?i|5O%8zCsT0`KVLJ+=~,fouP.~)YqtMVxPjE~(HpMj}>Qu|l=}`#1~X:ii]cj|8bZDi}Wq$v|nOS9S"\=>Sn8W"$b,2.[Z. eq3?y8cH(5Mz~0yFoOD/m|}eLcT\4h&|%!<=pvcjA"E#]q]sFukbfW*' -testrun "p$pnr" 1 'SKXTJ,Xnl2fs5}t}aqA7rvB~4PmWpw8e#^32DDuiSW^c:dz1g&' +testrun "p$pnr" true 'VB' +testrun "p$pnr" true '6#>cT\4h&|%!<=pvcjA"E#]q]sFukbfW*' +testrun "p$pnr" true 'SKXTJ,Xnl2fs5}t}aqA7rvB~4PmWpw8e#^32DDuiSW^c:dz1g&' let pnr=43 new "Test for pattern leaf p$pnr ietf-ipfix-psamp nameType" -testrun "p$pnr" 1 'qZb/9&?SF$,Z`Gc5Ys@;L_QAo<0|\Fd7;n7A&NO5AG8`792On9w"' -testrun "p$pnr" 1 'E' -testrun "p$pnr" 1 'rx{z5@' -testrun "p$pnr" 0 '' -testrun "p$pnr" 1 '' -testrun "p$pnr" 0 '' # too long +testrun "p$pnr" true '' +testrun "p$pnr" false '' +testrun "p$pnr" true '' +testrun "p$pnr" false '' # too long # Negative tests where one char at a time is removed -testrun "p$pnr" 0 '![CDATA[0123456789]]>' -testrun "p$pnr" 0 '<[CDATA[0123456789]]>' -testrun "p$pnr" 0 '' -testrun "p$pnr" 0 '' -testrun "p$pnr" 0 '' -#testrun "p$pnr" 0 '' # XML parse error -#testrun "p$pnr" 0 '' +testrun "p$pnr" false '<[CDATA[0123456789]]>' +testrun "p$pnr" false '' +testrun "p$pnr" false '' +testrun "p$pnr" false '' +#testrun "p$pnr" false '' # XML parse error +#testrun "p$pnr" false '