FitNesse. SuiteAcceptanceTests. SuiteWidgetTests.
TestEvaluator [add child]

 Scenario Libraries

Evaluator of expressions: ${= =}

Syntax

       ${= [format:] expression =} 

Expression

An expression may be a combination of constants, variables, and opertors. All internal calculations use the Java double numeric type.

Format

A format is a specifier that describes the rendering of the numeric result. The format specifier is described by the Java 5 String class's .format() method:
       %[flags][width][.precision]conversion

Links

Examples

    ${= 12 + 23 =} renders (sand brackets) as [35]
${=%5.4f:1.414=} : [1.4140]
${=%05X:14+14=} : [0001C]
${= %-10s : 123 =} : [123 ]

Operators supported

Comment Spaces between items are optional
Operator Argument Description
arg
constant or variable Examples: 3, 12.4, 4E+8, ${VALUE}, ${some.var}
expr
expression
Any valid combination of arguments and optional operations and parentheses
+
expr + expr
Addition
-
-expr
Unary negation
-
expr - expr
Subtraction
*
expr * expr
Multiplication
/
expr / expr
Division
^
expr ^ expr
Exponentiation
sin
sin expr
Radian Sine of expr
cos
cos expr
Radian Cosine of expr
tan
cos expr
Radian Tangent of expr
( )
( expr )
Parenthetical grouping of an expression


Test Blank Expressions

Build blank expression page
script
start Page Builder
line ~1a:${==}~
line ~1b:${= =}~
line ~1c:${= =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~1a:~ true
contents ~1b:~ true
contents ~1c:~ true



Test Single Argument Expressions

Build expression page
script
start Page Builder
line ~2a:${=3=}~
line ~2b:${= 4.2 =}~
line ~2c:${= 2E+1 =}~
line ~2d:${= 2.3E+42 =}~
line ~2e:${= 4.2E + 24 =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~2a:3~ true
contents ~2b:4.2~ true
contents ~2c:20~ true
contents ~2d:2.3E+42~ true
contents ~2e:4.2E+24~ true



Test spaces around experssions

Build expression page
script
start Page Builder
line ~3a:${=1+1=}~
line ~3b:${=2 + 2=}~
line ~3c:${= 3 + 3=}~
line ~3d:${=4 + 4 =}~
line ~3e:${=5 +5 =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~3a:2~ true
contents ~3b:4~ true
contents ~3c:6~ true
contents ~3d:8~ true
contents ~3e:10~ true



Test each operator

Build expression page
script
start Page Builder
line ~4plus:${= 1 + 2 =}~
line ~4minus:${= 2 - 3 =}~
line ~4unary:${= -12 =}~
line ~4mult:${= 3 * 4 =}~
line ~4div:${= 4 / 5 =}~
line ~4exp:${=%2d: 5 ^ 6 =}~
line ~4sin1:${=%5.4f: sin0.39269875 =}~
line ~4sin2:${=%5.4f: sin 0.39269875 =}~
line ~4sin3:${=%5.4f: sin(0.39269875) =}~
line ~4sin4:${=%5.4f: sin(3.14159/8) =}~
line ~4sin5:${=%5.4f: sin (3.14159/8) =}~
line ~4cos:${=%5.4f: cos(3.14159 / 8) =}~
line ~4tan:${=%5.4f: tan(3.14159 / 8) =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~4plus:3~ true
contents ~4minus:-1~ true
contents ~4unary:-12~ true
contents ~4mult:12~ true
contents ~4div:0.8~ true
contents ~4exp:15625~ true
contents ~4sin1:0.3827~ true
contents ~4sin2:0.3827~ true
contents ~4sin3:0.3827~ true
contents ~4sin4:0.3827~ true
contents ~4sin5:0.3827~ true
contents ~4cos:0.9239~ true
contents ~4tan:0.4142~ true



Test parentheses

Build expression page
script
start Page Builder
line ~5a:${= 2 * 3 + 4 / 2 - 3 =}~
line ~5b:${= 2 * ( 3 + 4 ) / 2 - 3 =}~
line ~5c:${= 2 * ( 3 + 4 ) / ( 2 - 3 ) =}~
line ~5d:${= 2 * ( 3 + ( 4 / ( 2 - 3 ) ) ) =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~5a:5~ true
contents ~5b:4~ true
contents ~5c:-14~ true
contents ~5d:-2~ true



Test formatting

Build expression page
script
start Page Builder
line ~6a:${=%d:2 =}~
line ~6b:${= %d : 3.2 =}~
line ~6c:${=%02d: 2 + 1 =}~
line ~6d:${= %4.4f: 2.2 / 3.4 =}~
line ~6e:${=%03o: 16 =}~
line ~6f:${= %03o : 18 =}~
line ~6g:${=%03x: 26 =}~
line ~6h:${=%03X: 27 =}~
line ~6i:${= %-12s : 123 =}~
line ~6j:${=%TY: 73422123127 =}~
line ~6k:${=%b: 27 =}~
line ~6l:${=%b: 0 =}~
line ~6m:${=%B: 27 =}~
line ~6n:${=%B: 0 =}~
line ~6o:${= % d : 3.2 =}~
page ExpressionPage

Render it
Response Requester
uri valid?
ExpressionPage true

 Contents

Verify results
Response Examiner
type pattern matches?
contents ~6a:2~ true
contents ~6b:3~ true
contents ~6c:03~ true
contents ~6d:0.6471~ true
contents ~6e:020~ true
contents ~6f:022~ true
contents ~6g:01a~ true
contents ~6h:01B~ true
contents ~6i:123         ~ true
contents ~6j:1972~ true
contents ~6k:true~ true
contents ~6l:false~ true
contents ~6m:true~ true
contents ~6n:false~ true
contents ~6o: 3~ true