|
Packit |
575503 |
# This file describes the semantics for hard regex constants
|
|
Packit |
575503 |
# As much as possible it's executable code so that it can be used
|
|
Packit |
575503 |
# (or split into) test cases for development and regression testing.
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function simple_tests( fbre, numresult, strresult)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
# usable as case value
|
|
Packit |
575503 |
switch ("foobaaar") {
|
|
Packit |
575503 |
case @/fo+ba+r/:
|
|
Packit |
575503 |
print "switch-case: ok"
|
|
Packit |
575503 |
break
|
|
Packit |
575503 |
default:
|
|
Packit |
575503 |
print "switch-case: fail"
|
|
Packit |
575503 |
break
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# usable with ~ and !~
|
|
Packit |
575503 |
if ("foobaaar" ~ @/fo+ba+r/)
|
|
Packit |
575503 |
print "match ~: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match ~: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
if ("quasimoto" !~ @/fo+ba+r/)
|
|
Packit |
575503 |
print "match !~: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match !~: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# assign to variable, use in match
|
|
Packit |
575503 |
fbre = @/fo+ba+r/
|
|
Packit |
575503 |
if ("foobaaar" ~ fbre)
|
|
Packit |
575503 |
print "variable match ~: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "variable match ~: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
if ("quasimoto" !~ fbre)
|
|
Packit |
575503 |
print "variable match !~: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "variable match !~: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# Use as numeric value, should be zero
|
|
Packit |
575503 |
numresult = fbre + 42
|
|
Packit |
575503 |
if (numresult == 42)
|
|
Packit |
575503 |
print "variable as numeric value: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "variable as numeric value: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# Use as string value, should be string value of regexp text
|
|
Packit |
575503 |
strresult = "<" fbre ">"
|
|
Packit |
575503 |
if (strresult == "<fo+ba+r>")
|
|
Packit |
575503 |
print "variable as string value: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "variable as string value: fail", strresult
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# typeof should work
|
|
Packit |
575503 |
if (typeof(@/fo+ba+r/) == "regexp")
|
|
Packit |
575503 |
print "typeof constant: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "typeof constant: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
if (typeof(fbre) == "regexp")
|
|
Packit |
575503 |
print "typeof variable: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "typeof variable: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
# conversion to number, works. should it be fatal?
|
|
Packit |
575503 |
fbre++
|
|
Packit |
575503 |
if (fbre == 1)
|
|
Packit |
575503 |
print "conversion to number: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "conversion to number: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
if (typeof(fbre) == "number")
|
|
Packit |
575503 |
print "typeof variable after conversion: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "typeof variable after conversion: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function match_tests( fbre, fun)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
if (match("foobaaar", @/fo+ba+r/))
|
|
Packit |
575503 |
print "match(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fbre = @/fo+ba+r/
|
|
Packit |
575503 |
if (match("foobaaar", fbre))
|
|
Packit |
575503 |
print "match(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "match"
|
|
Packit |
575503 |
if (@fun("foobaaar", @/fo+ba+r/))
|
|
Packit |
575503 |
print "match(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
if (@fun("foobaaar", fbre))
|
|
Packit |
575503 |
print "match(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "match(variable) indirect: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function sub_tests( fbre, count, target, fun)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = sub(@/fo+ba+r/, "XX", target)
|
|
Packit |
575503 |
if (count == 1 && target == "abc XX def foobar ghi")
|
|
Packit |
575503 |
print "sub(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "sub(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fbre = @/fo+ba+r/
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = sub(fbre, "XX", target)
|
|
Packit |
575503 |
if (count == 1 && target == "abc XX def foobar ghi")
|
|
Packit |
575503 |
print "sub(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "sub(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "sub"
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = @fun(@/fo+ba+r/, "XX")
|
|
Packit |
575503 |
if (count == 1 && $0 == "abc XX def foobar ghi")
|
|
Packit |
575503 |
print "sub(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "sub(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = @fun(fbre, "XX")
|
|
Packit |
575503 |
if (count == 1 && $0 == "abc XX def foobar ghi")
|
|
Packit |
575503 |
print "sub(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "sub(variable) indirect: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function gsub_tests( fbre, count, target, fun)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = gsub(@/fo+ba+r/, "XX", target)
|
|
Packit |
575503 |
if (count == 2 && target == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gsub(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gsub(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fbre = @/fo+ba+r/
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = gsub(fbre, "XX", target)
|
|
Packit |
575503 |
if (count == 2 && target == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gsub(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gsub(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "gsub"
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = @fun(@/fo+ba+r/, "XX")
|
|
Packit |
575503 |
if (count == 2 && $0 == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gsub(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gsub(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
count = @fun(fbre, "XX")
|
|
Packit |
575503 |
if (count == 2 && $0 == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gsub(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gsub(variable) indirect: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function gensub_tests( fbre, result, target, fun)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
result = gensub(@/fo+ba+r/, "XX", "g", target)
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fbre = @/fo+ba+r/
|
|
Packit |
575503 |
target = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
result = gensub(fbre, "XX", "g", target)
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "gensub"
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
result = @fun(@/fo+ba+r/, "XX", "g")
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
$0 = "abc foobaar def foobar ghi"
|
|
Packit |
575503 |
result = @fun(fbre, "XX", "g")
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(variable) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
result = @fun(@/fo+ba+r/, "XX", "g", target)
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(constant) indirect 2: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(constant) indirect 2: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
result = @fun(fbre, "XX", "g", target)
|
|
Packit |
575503 |
if (result == "abc XX def XX ghi")
|
|
Packit |
575503 |
print "gensub(variable) indirect 2: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "gensub(variable) indirect 2: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function split_tests( fbre, data, seps, fun, b1)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = split("a:b:c:d", data, @/:/, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "split(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "split(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
fbre = @/:/
|
|
Packit |
575503 |
b1 = split("a:b:c:d", data, fbre, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "split(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "split(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "split"
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = @fun("a:b:c:d", data, @/:/, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "split(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "split(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = @fun("a:b:c:d", data, fbre, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "split(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "split(variable) indirect: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
function patsplit_tests( fbre, data, seps, fun, b1)
|
|
Packit |
575503 |
{
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = patsplit("a:b:c:d", data, @/[a-z]+/, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "patsplit(constant): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "patsplit(constant): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
fbre = @/[a-z]+/
|
|
Packit |
575503 |
b1 = patsplit("a:b:c:d", data, fbre, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "patsplit(variable): ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "patsplit(variable): fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
fun = "patsplit"
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = @fun("a:b:c:d", data, @/[a-z]+/, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "patsplit(constant) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "patsplit(constant) indirect: fail"
|
|
Packit |
575503 |
|
|
Packit |
575503 |
delete data
|
|
Packit |
575503 |
delete seps
|
|
Packit |
575503 |
b1 = @fun("a:b:c:d", data, fbre, seps)
|
|
Packit |
575503 |
if (b1 == 4 && data[1] == "a" && seps[1] == ":")
|
|
Packit |
575503 |
print "patsplit(variable) indirect: ok"
|
|
Packit |
575503 |
else
|
|
Packit |
575503 |
print "patsplit(variable) indirect: fail"
|
|
Packit |
575503 |
}
|
|
Packit |
575503 |
|
|
Packit |
575503 |
BEGIN {
|
|
Packit |
575503 |
simple_tests()
|
|
Packit |
575503 |
match_tests()
|
|
Packit |
575503 |
sub_tests()
|
|
Packit |
575503 |
gsub_tests()
|
|
Packit |
575503 |
gensub_tests()
|
|
Packit |
575503 |
split_tests()
|
|
Packit |
575503 |
patsplit_tests()
|
|
Packit |
575503 |
}
|