Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

258 lines
5.9 KiB

2 years ago
$ Test program for Aprepro
$
Test number representations
{1} {10e-1} {10.e-1} {.1e+1} {.1e1}
{1} {10E-1} {10.E-1} {.1E+1} {.1E1}
Test assign statements:
{_a = 5} {b=_a} $ Should print 5 5
{_a +=b} {_a} $ Should print 10 10
{_a -=b} {_a} $ Should print 5 5
{_a *=b} {_a} $ Should print 25 25
{_a /=b} {_a} $ Should print 5 5
{_a ^=b} {_a} $ Should print 3125 3125
{_a = b} {_a**=b} {_a} $ Should print 5 3125 3125
Test trigonometric functions (radians)
{pi = d2r(180)} {atan2(0,-1)} {4*atan(1.0)} $ Three values of pi
{_a = sin(pi/4)} {pi-4*asin(_a)} $ sin(pi/4)
{_b = cos(pi/4)} {pi-4*acos(_b)} $ cos(pi/4)
{_c = tan(pi/4)} {pi-4*atan(_c)} $ tan(pi/4)
Test trigonometric functions (degrees)
{r2d(pi)} {pid = atan2d(0,-1)} {4 * atand(1.0)}
{ad = sind(180/4)} {180-4*asind(ad)} $ sin(180/4)
{bd = cosd(180/4)} {180-4*acosd(bd)} $ cos(180/4)
{cd = tand(180/4)} {180-4*atand(cd)} $ tan(180/4)
Test max, min, sign, dim, abs
{pmin = min(0.5, 1.0)} {nmin = min(-0.5, -1.0)} $ Should be 0.5, -1
{pmax = max(0.5, 1.0)} {nmax = max(-0.5, -1.0)} $ Should be 1.0, -0.5
{zero = 0} {sign(0.5, zero) + sign(0.5, -zero)} $ Should be 0 1
{nonzero = 1} {sign(0.5, nonzero) + sign(0.5, -nonzero)} $ Should be 1 0
{dim(5.5, 4.5)} {dim(4.5, 5.5)} $ Should be 1 0
{ifyes = 1} {ifno = 0}
$ Test ternary...
{ifyes == 1 ? "correct" : "incorrect"}
{ifno == 1 ? "incorrect" : "correct"}
$ Test ifdef lines
{Ifdef(ifyes)}
This line should be echoed. (a)
{Endif}
This line should be echoed. (b)
{Ifdef(ifno)}
This line should not be echoed
{Endif}
This line should be echoed. (c)
{Ifdef(ifundefined)}
This line should not be echoed
{Endif}
This line should be echoed. (d)
$ Test ifdef - else lines
{Ifdef(ifyes)}
This line should be echoed. (1)
{Else}
This line should not be echoed (2)
{Endif}
{Ifdef(ifno)}
This line should not be echoed. (3)
{Else}
This line should be echoed (4)
{Endif}
$ Test ifndef - else lines
{Ifndef(ifyes)}
This line should not be echoed. (5)
{Else}
This line should be echoed (6)
{Endif}
{Ifndef(ifno)}
This line should be echoed. (7)
{Else}
This line should not be echoed (8)
{Endif}
$ Lines a, b, c, d, 1, 4, 6, 7 should be echoed
$ Check line counting -- should be on line 78: {Parse Error}
{ifdef(ifyes)} {This should be an error}
{endif}
$ ========================================================================
$ Test string if lines
{if("Greg")}
This line should be echoed ("greg")
{else}
This line should not be echoed ("greg")
{endif}
{empty=""}
{if(empty)}
This line should not be echoed (empty)
{else}
This line should be echoed (empty)
{endif}
$ ========================================================================
$ Test if lines
{if(sqrt(4) == 2)}
This line should be echoed. (a)
{endif}
This line should be echoed. (b)
{if(sqrt(2) == 2 || sqrt(3) == 2)}
This line should not be echoed
{endif}
This line should be echoed. (c)
{diff = sqrt(3)*sqrt(3) - 3}
$ Test if - else lines
{if(sqrt(3)*sqrt(3) - 3 == diff)}
complex if works
{else}
complex if does not work
{endif}
{if (sqrt(4) == 2)}
{if (sqrt(9) == 3)}
{if (sqrt(16) == 4)}
square roots work
{else}
sqrt(16) does not work
{endif}
{else}
sqrt(9) does not work
{endif}
{else}
sqrt(4) does not work
{endif}
{v1 = 1} {v2 = 2}
{if (v1 == v2)}
Bad if
{if (v1 != v2)}
should not see (1)
{else}
should not see (2)
{endif}
should not see (3)
{else}
{if (v1 != v2)}
good nested if
{else}
bad nested if
{endif}
good
make sure it is still good
{endif}
$ ========================================================================
$ Test switch
{switch(PI)}
This is in a switch, but prior to any case, it should not run
{a = 0.5} Should not execute
{case (1)}
This should not echo
{a = 1}
{case (2)}
This should not echo
{a = 2}
{case (PI)}
This should echo
{a = PI}
{case (PI)}
This should not echo since a previous case matched.
{a = 2}
{default}
{a=4}
{endswitch}
This should be equal to PI -- {PI}
$ Test int and [] (shortcut for int)
{int(5.01)} {int(-5.01)}
{[5.01]} {[-5.01]}
$ Test looping - print sin, cos from 0 to 90 by 5
{_angle = -5}
{Loop(19)}
{_angle += 5} {_sa=sind(_angle)} {_ca=cosd(_angle)} {hypot(_sa, _ca)}
{EndLoop}
$$$$ Test formatting and string concatenation
{_i = 0} {_SAVE = _FORMAT}
{loop(20)}
{IO(++_i)} Using the format {_FORMAT = "%." // tostring(_i) // "g"}, PI = {PI}
{endloop}
Reset format to default: {_FORMAT = _SAVE}
$$$$ Test string rescanning and executing
{ECHO(OFF)}
{Test = ' This is line 1: {a = atan2(0,-1)}
This is line 2: {sin(a/4)}
This is line 3: {cos(a/4)}'}
{Test2 = 'This has an embedded string: {T = "This is a string"}'}
{ECHO(ON)}
Original String:
{Test}
Rescanned String:
{rescan(Test)}
Original String:
{Test2}
Print Value of variable T = {T}
Rescanned String:
{rescan(Test2)}
Print Value of variable T = {T}
Original String: {t1 = "atan2(0,-1)"}
Executed String: {execute(t1)}
string = {_string = " one two, three"}
delimiter "{_delm = " ,"}"
word count = {word_count(_string,_delm)}
second word = "{get_word(2,_string,_delm)}"
string = {_string = " (one two, three * four - five"}
delimiter "{_delm = " ,(*-"}"
word count = {word_count(_string,_delm)}
second word = "{get_word(2,_string,_delm)}"
string = {_string = " one two, three"}
delimiter "{_delm = " ,"}"
word count = { iwords = word_count(_string,_delm)}
{_n = 0}
{loop(iwords)}
word {++_n} = "{get_word(_n,_string,_delm)}"
{endloop}
$ Check parsing of escaped braces...
\{ int a = b + {PI/2} \}
\{ \}
$ Test variable deletion
{new_var = sqrt(2) * sqrt(3)}
{new_var}
{delete("new_var")}
{new_var} This should print warning about undefined variable
$ Test extract
{ex_found = extract("The test string is found", "test", "")}
{ex_null = extract("The test string is not found", "xxxx", "yyyy")}
$ Test string tokenization optimization
{_i=1}
{list1 ='51,52,53,54,61,62,63,64'}
{list2 ='71,72,73,74,81,82,83,84'}
{loop(8)}
Word {_i} of list1 and list2 are {get_word(_i,list1,',')} and {get_word(_i++,list2,',')}
{endloop}
$End of test file