// run "rad --nopanic --discard -A" to test and compare warning counts
// Define
// Custom macro argument parsing
$define(define_test,arg1 arg2=$arg1 + $arg2)
$define(define_bind=Bound text)
$define_test(1,2)
$define_test(\*1*\,\*2*\)
$define_test(\*1,2,3*\,4)
$define_test()
$define_test(1)
$define_test(\*1*\)
$define_test(\*1,2,3*\)
$define_test(\**\)
$define_bind() // Success
$define_bind(1) // Success
$define_bind(\*1*\) // Success
$define_bind(\*1,2,3*\) // Success
$define_bind(\**\) // Success
// Undef
$define(test=Test)
$test() // Success
$undef(test)
$nassert($test(),Test)
// Rename
$define(test=Test)
$test() // Success
$rename(test,retest)
$retest() // Success
$nassert($test(),Test)
// Replace
$define(test=Test)
$define(test_arg,arg1 arg2=Test)
$assert($test(),Test) // Success
$assert($test_arg(1,2),Test) // Success
$repl(test,Test Test Test)
$assert($test(),Test Test Test) // Success
$repl(test_arg,$arg1() $arg2())
$assert($test_arg(First,Second),First Second) // Success
// Append
$define(test=Test)
$assert($test(),Test) // Success
$append(test,12345)
$assert($test(),Test12345) // Success
// pause
$define(app=APP)
$define(rep=REP)
$pause(true)
$assert(12345,1234) // Literal
$define(paused_test=NON)
$append(app,END)
$repl(rep,REPLACED)
$pause(false)
$nassert($paused_test(),NON)
$assert($app(),APP) // Success
$assert($rep(),REP) // Success
// include
$fileout(true,test_file.txt,11$nl()22$nl()33)
$assert($include(test_file.txt),11$nl()22$nl()33) // Success
// read
// tempin, tempout, tempto
// redir
// fileout
$fileout(false,test_file.txt,44$nl()55$nl()66)
// env
$env(HOME)
$assert($env(NONONO),) // Success
// ifenv
$ifenv(HOME,HOME exists)
// path
$assert($path(1,2,3),1/2/3)
$assert($path(dir,test,nested),dir/test/nested)
// name
$define(example=/home/dir/nested/file.txt)
$assert($name($example()),file.txt)
// parent
$assert($parent($example()),/home/dir/nested)
// bind
$define(bind_test,p=
$bind(p1,$name($p()))
$bind(p2,$parent($p()))
$assert($p1(),file.txt)
$assert($p2(),/home/dir/nested)
)
$bind_test($example()) // Success
// global
$global(global_var,VAR)
$assert($global_var(),VAR)
// pipe
$pipe(Value to be piped)
$assert($-(),Value to be piped)
// repeat
$assert($repeat(2,ABC$nl()),ABC$nl()ABC$nl())
// foreach
$assert($foreach(\*1,2,3*\,$eval($: + 5)),678)
// forloop
$assert($forloop(3,5,$eval($: + 5)),8910)
// eval
$assert(1,$eval((2 + 3) / 5))
// if && not
$define(print_true=true)
$define(print_false=false)
$assert($if($print_true(),I'm true),I'm true)
$assert($if($not($print_false()),I was false),I was false)
// ifelse
$define(iss,a_cond=$ifelse($a_cond(),TRUE,FALSE))
$assert($iss($print_true()),TRUE)
$assert($iss($print_false()),FALSE)
// ifdef
$assert($ifdef(iss,DEFINED),DEFINED)
// syscmd
// sub
$assert($sub(0,1,안녕하세요),안녕)
$assert($sub(0,6,Hello world),Hello w)
// tr
$assert($tr(안녕 세상아,안녕,잘가),잘가 세상아)
$assert($tr(Hello world,ed,as),Hallo worls)
// len
$assert($len(앍뷁헑않캲),5)
$assert($len(ABCDEFGHIJKLMNOP),16)
// regex
// trim chomp, comp
// from
// table
// lipsum
// time date