Report for expr_eval-1_0

Back
From: metabase:user:3260881c-2aae-11df-837a-5e0a49663a4f
Subject: PASS expr_eval-1_0 v5.12.3 
Date: 2013-01-07T19:22:31Z

This distribution has been tested as part of the CPAN Testers
project, supporting the Perl programming language.  See
http://wiki.cpantesters.org/ for more information or email
questions to cpan-testers-discuss@perl.org


--
Dear Scott,

This is a computer-generated report for expr_eval_1_0
on perl 5.12.3, created by CPAN-Reporter-1.2009.

Thank you for uploading your work to CPAN.  Congratulations!
All tests were successful.

Sections of this report:

    * Tester comments
    * Program output
    * Prerequisites
    * Environment and other context

------------------------------
TESTER COMMENTS
------------------------------

Additional comments from tester:

this report is from an automated smoke testing program
and was not reviewed by a human for accuracy

------------------------------
PROGRAM OUTPUT
------------------------------

Output from 'C:\strawberry\c\bin\dmake.EXE test':

C:\strawberry\perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl

Total test count:	    150
Total test error count:	    1

----------------------------

Test:		137
Error number:	1

Expression:	"XXX" =~ ".[hjk"
Options:	<none>

check if =~ pattern is valid
(note:  format of error message may vary depending on perl version, system, etc)


Actual results:

Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.

Dev message:	<->
Pattern:  /.[hjk/
Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.
Token list:	<NONE>


Expected results:

Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	/.[hjk/: unmatched [] in regexp
Dev message:	<->
Pattern:  /.[hjk/
/.[hjk/: unmatched [] in regexp at expr_eval.pm line 1735.
Token list:	<NONE>


----------------------------

END OF ERROR REPORT


============================================================================


Total test count:	150

----------------------------

Test:		1

Expression:	~
Options:	<none>

check for unknown character


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	unexpected character
Dev message:	character = '~'
Token list:	<NONE>


----------------------------

Test:		2

Expression:	'hello world, ' + "hello workd 2, " + `hello world 3`
Options:	'save-tokens'

check for quoted strings


Return type:	2
Return value:	hello world, hello workd 2, hello world 3
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, ''hello world, '', 3, hello world, )
    (16, '+', 24, +)
    (18, '"hello workd 2, "', 3, hello workd 2, )
    (36, '+', 24, +)
    (38, '`hello world 3`', 3, hello world 3)
    (53, '', 1, )
    (53, '', 1, )
End of token list


----------------------------

Test:		3

Expression:	'hello world, ' + "missing quote
Options:	<none>

check for string with missing quote


Return type:	<NONE>
Return value:	<NONE>
Error position:	18
Error message:	missing close quote
Dev message:	quote = /"/
Token list:	<NONE>


----------------------------

Test:		4

Expression:	%ignore_token%  "HERE"  %ignore_token%
Options:	'save-tokens,token-function'

check for token function ignoring token


Return type:	2
Return value:	HERE
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%ignore_token%', 14, 'token should be ignored')
    (16, '"HERE"', 3, HERE)
    (24, '%ignore_token%', 14, 'token should be ignored')
    (38, '', 1, )
    (38, '', 1, )
End of token list


----------------------------

Test:		5

Expression:	55 + 23.0 + .25 + 0.5 + 9.25
Options:	'save-tokens'

check lexical scanning for numbers


Return type:	1
Return value:	88
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '55', 4, 55)
    (3, '+', 24, +)
    (5, '23.0', 4, 23)
    (10, '+', 24, +)
    (12, '.25', 4, 0.25)
    (16, '+', 24, +)
    (18, '0.5', 4, 0.5)
    (22, '+', 24, +)
    (24, '9.25', 4, 9.25)
    (28, '', 1, )
    (28, '', 1, )
End of token list


----------------------------

Test:		6

Expression:	1000E-2 + 2.0E+1 + .25E2 + 0.5E+1 + 9.25E+1
Options:	'save-tokens'

check lexical scanning for numbers with scientific notation


Return type:	1
Return value:	152.5
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1000E-2', 4, 10)
    (8, '+', 24, +)
    (10, '2.0E+1', 4, 20)
    (17, '+', 24, +)
    (19, '.25E2', 4, 25)
    (25, '+', 24, +)
    (27, '0.5E+1', 4, 5)
    (34, '+', 24, +)
    (36, '9.25E+1', 4, 92.5)
    (43, '', 1, )
    (43, '', 1, )
End of token list


----------------------------

Test:		7

Expression:	0.5.
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		8

Expression:	true
Options:	'save-tokens'

check for 'TRUE' boolean constant


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (4, '', 1, )
    (4, '', 1, )
End of token list


----------------------------

Test:		9

Expression:	FALSE
Options:	'save-tokens'

check for 'FALSE' boolean constant


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'FALSE', 5, <ARRAY>)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		10

Expression:	6W
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		11

Expression:	.7896W
Options:	<none>

check lexical scanning for malformed number


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	incorrectly specified number
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		12

Expression:	%test-token%
Options:	'token-function,save-tokens'

check user token function to return a standard string data type


Return type:	2
Return value:	string from token function
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%test-token%', 3, string from token function)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		13

Expression:	my_special_data
Options:	'token-function,save-tokens'

check user token function for returning a token for a user data type


Return type:	11
Return value:	some-special-info
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'my_special_data', 5, <ARRAY>)
    (15, '', 1, )
    (15, '', 1, )
End of token list


----------------------------

Test:		14

Expression:	%error-message%
Options:	'token-function'

check user token function error return


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	ERROR MESSAGE
Dev message:	function is code
Token list:	<NONE>


----------------------------

Test:		15

Expression:	%execution-error%
Options:	'token-function'

check user token function execution error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	system error
Dev message:	<->
function is code
Illegal division by zero at test.pl line 256.
Token list:	<NONE>


----------------------------

Test:		16

Expression:	sym1 + ", " + sym2
Options:	'save-tokens'

check retrieving symbols from symbol tables


Return type:	2
Return value:	symbol table 1, symbol table 2
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'sym1', 2, sym1)
    (5, '+', 24, +)
    (7, '", "', 3, , )
    (12, '+', 24, +)
    (14, 'sym2', 2, sym2)
    (18, '', 1, )
    (18, '', 1, )
End of token list


----------------------------

Test:		17

Expression:	"XXX" + sym3
Options:	<none>

check for unknown symbol


Return type:	<NONE>
Return value:	<NONE>
Error position:	11
Error message:	unrecognized identifier
Dev message:	<->
Token information:
    Position:	8
    String:	sym3
    Type:	2
    Value:	sym3
Token list:	<NONE>


----------------------------

Test:		18

Expression:	5 + -3
Options:	'save-tokens'

check for unary negative


Return type:	1
Return value:	2
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '5', 4, 5)
    (2, '+', 24, +)
    (4, '-', 24, -)
    (5, '3', 4, 3)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		19

Expression:	- -3
Options:	'save-tokens'

check for double unary negative


Return type:	1
Return value:	3
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '-', 24, -)
    (2, '-', 24, -)
    (3, '3', 4, 3)
    (4, '', 1, )
    (4, '', 1, )
End of token list


----------------------------

Test:		20

Expression:	5 + -"XXX"
Options:	<none>

check for unary negative acting on non-numeric


Return type:	<NONE>
Return value:	<NONE>
Error position:	4
Error message:	numeric value expected next
Dev message:	<->
Value information:
    Type:	2  (string)
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		21

Expression:	! true
Options:	'save-tokens'

check for NOT on true


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, 'true', 5, <ARRAY>)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		22

Expression:	! false
Options:	'save-tokens'

check for NOT on false


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, 'false', 5, <ARRAY>)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		23

Expression:	! ! true
Options:	'save-tokens'

check for double NOT


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '!', 13, !)
    (2, '!', 13, !)
    (4, 'true', 5, <ARRAY>)
    (8, '', 1, )
    (8, '', 1, )
End of token list


----------------------------

Test:		24

Expression:	! "XXX"
Options:	<none>

check for NOT acting on non-boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	0
Error message:	boolean value expected next
Dev message:	<->
Value information:
    Type:	2  (string)
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		25

Expression:	%unary-operator% "XXX"
Options:	'token-function'

check for special unary operator without operator function


Return type:	<NONE>
Return value:	<NONE>
Error position:	15
Error message:	operator not evaluated by function
Dev message:	<->
No function specified.
Token information:
    Position:	0
    String:	%unary-operator%
    Type:	13
    Value:	%unary-operator%
Token list:	<NONE>


----------------------------

Test:		26

Expression:	%unary-operator% "XXX"
Options:	'token-function,operator-function,save-tokens'

check for special unary operator


Return type:	2
Return value:	string from unary operation
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '%unary-operator%', 13, %unary-operator%)
    (17, '"XXX"', 3, XXX)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		27

Expression:	%unary-operator% 100
Options:	'token-function,operator-function'

check for special unary operator acting on non-string


Return type:	<NONE>
Return value:	<NONE>
Error position:	15
Error message:	string expected after operator
Dev message:	<->
function is code
Token information:
    Position:	0
    String:	%unary-operator%
    Type:	13
    Value:	%unary-operator%
Token list:	<NONE>


----------------------------

Test:		28

Expression:	%unary-operator-error% "XXX"
Options:	'token-function,operator-function'

check for operator function error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	21
Error message:	system error
Dev message:	<->
function is code
Token information:
    Position:	0
    String:	%unary-operator-error%
    Type:	13
    Value:	%unary-operator-error%
Illegal division by zero at test.pl line 334.
Token list:	<NONE>


----------------------------

Test:		29

Expression:	( 5 + 6 )
Options:	'save-tokens'

check for parentheses


Return type:	1
Return value:	11
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (2, '5', 4, 5)
    (4, '+', 24, +)
    (6, '6', 4, 6)
    (8, ')', 7, ))
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		30

Expression:	( 5 + 6
Options:	<none>

check for missing close parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		31

Expression:	( 5 + 6 ,
Options:	<none>

check for missing close parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	8
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		32

Expression:	CONCAT("555", 8, 7, "9"
Options:	'function-handler'

check for missing closing function parenthesis


Return type:	<NONE>
Return value:	<NONE>
Error position:	22
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		33

Expression:	CONCAT( , "555", 8, 7, "9")
Options:	'function-handler'

check for empty arguement


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	8
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		34

Expression:	CONCAT("555", 8, 7, "9")
Options:	<none>

check for no processing function


Return type:	<NONE>
Return value:	<NONE>
Error position:	23
Error message:	no function declared for handling function calls
Dev message:	function identifier = 'CONCAT'
Token list:	<NONE>


----------------------------

Test:		35

Expression:	CONCAT("555", 8, 7, "9")
Options:	'function-handler,save-tokens'

check for function call


Return type:	2
Return value:	555, 8, 7, 9
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'CONCAT', 12, CONCAT)
    (6, '(', 6, ()
    (7, '"555"', 3, 555)
    (12, ',', 8, ,)
    (14, '8', 4, 8)
    (15, ',', 8, ,)
    (17, '7', 4, 7)
    (18, ',', 8, ,)
    (20, '"9"', 3, 9)
    (23, ')', 7, ))
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		36

Expression:	CONCAT("555", true, 7, "9")
Options:	'function-handler'

check for function detecting arguement error


Return type:	<NONE>
Return value:	<NONE>
Error position:	26
Error message:	boolean arguement found
Dev message:	<->
function identifier = 'CONCAT'
function is code
Token list:	<NONE>


----------------------------

Test:		37

Expression:	UNKNOWN("555", true, 7, "9")
Options:	'function-handler'

check for function being unknown


Return type:	<NONE>
Return value:	<NONE>
Error position:	27
Error message:	function may be unknown (no value returned for function call)
Dev message:	<->
function identifier = 'UNKNOWN'
function is code
Token list:	<NONE>


----------------------------

Test:		38

Expression:	5 ? 5 : 5
Options:	<none>

check for ternary function without boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	boolean value expected before
Dev message:	<->
Token information:
    Position:	2
    String:	?
    Type:	9
    Value:	?
Token list:	<NONE>


----------------------------

Test:		39

Expression:	true ? 5
Options:	<none>

check for ternary function without colon


Return type:	<NONE>
Return value:	<NONE>
Error position:	<NONE>
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		40

Expression:	true ? 5 , 5
Options:	<none>

check for ternary function without colon


Return type:	<NONE>
Return value:	<NONE>
Error position:	9
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	9
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		41

Expression:	true ? 5 : 6
Options:	'save-tokens'

check for ternary function with true boolean


Return type:	1
Return value:	5
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '?', 9, ?)
    (7, '5', 4, 5)
    (9, ':', 10, :)
    (11, '6', 4, 6)
    (12, '', 1, )
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		42

Expression:	false ? 5 : 6
Options:	'save-tokens'

check for ternary function with false boolean


Return type:	1
Return value:	6
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '?', 9, ?)
    (8, '5', 4, 5)
    (10, ':', 10, :)
    (12, '6', 4, 6)
    (13, '', 1, )
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		43

Expression:	DIVBYZERO("555", true, 7, "9")
Options:	'function-handler'

check for execution error while handling function call
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	29
Error message:	system error
Dev message:	<->
function identifier = 'DIVBYZERO'
function is code
Illegal division by zero at test.pl line 405.
Token list:	<NONE>


----------------------------

Test:		44

Expression:	5 "XXX"
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	"XXX"
    Type:	3
    Value:	XXX
Token list:	<NONE>


----------------------------

Test:		45

Expression:	5 ,
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	,
    Type:	8
    Value:	,
Token list:	<NONE>


----------------------------

Test:		46

Expression:	5 +
Options:	<none>

check for unexpected end


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	unexpected end found
Dev message:	<NONE>
Token list:	<NONE>


----------------------------

Test:		47

Expression:	5 + ||
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	4
    String:	||
    Type:	21
    Value:	||
Token list:	<NONE>


----------------------------

Test:		48

Expression:	5 )
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	2
    String:	)
    Type:	7
    Value:	)
Token list:	<NONE>


----------------------------

Test:		49

Expression:	8 + 3(
Options:	<none>

check for unexpected element


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	5
    String:	(
    Type:	6
    Value:	(
Token list:	<NONE>


----------------------------

Test:		50

Expression:	"Hello, " + "World"
Options:	'save-tokens'

check for string concatenation


Return type:	2
Return value:	Hello, World
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '"World"', 3, World)
    (19, '', 1, )
    (19, '', 1, )
End of token list


----------------------------

Test:		51

Expression:	"Hello, " + 53.25
Options:	'save-tokens'

check for concatenating string followed by number


Return type:	2
Return value:	Hello, 53.25
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '53.25', 4, 53.25)
    (17, '', 1, )
    (17, '', 1, )
End of token list


----------------------------

Test:		52

Expression:	"Hello, " + true
Options:	<none>

check for trying to concatenate string followed by non-string/non-number


Return type:	<NONE>
Return value:	<NONE>
Error position:	10
Error message:	string or number expected after operator
Dev message:	<->
Token information:
    Position:	10
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		53

Expression:	32 + "world"
Options:	<none>

check for trying to concatenate number followed by string


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	number expected after operator
Dev message:	<->
Token information:
    Position:	3
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	2  (string)
    Value:	world
Token list:	<NONE>


----------------------------

Test:		54

Expression:	true + "world"
Options:	<none>

check for trying to concatenate non-string/non-number followed by string


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	string or number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	+
    Type:	24
    Value:	+
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		55

Expression:	"Hello, " + 25 * 5
Options:	'save-tokens'

check precedence handling so multiplication is followed by concatentation


Return type:	2
Return value:	Hello, 125
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"Hello, "', 3, Hello, )
    (10, '+', 24, +)
    (12, '25', 4, 25)
    (15, '*', 25, *)
    (17, '5', 4, 5)
    (18, '', 1, )
    (18, '', 1, )
End of token list


----------------------------

Test:		56

Expression:	5 - true
Options:	<none>

check subtraction working on number and boolean


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	number expected after operator
Dev message:	<->
Token information:
    Position:	2
    String:	-
    Type:	24
    Value:	-
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		57

Expression:	true - 5
Options:	<none>

check subtraction working on boolean and number


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	-
    Type:	24
    Value:	-
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		58

Expression:	34 + 49
Options:	'save-tokens'

check addition


Return type:	1
Return value:	83
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '34', 4, 34)
    (3, '+', 24, +)
    (5, '49', 4, 49)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		59

Expression:	56 - 93
Options:	'save-tokens'

check subtraction


Return type:	1
Return value:	-37
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '56', 4, 56)
    (3, '-', 24, -)
    (5, '93', 4, 93)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		60

Expression:	5 * -7
Options:	'save-tokens'

check multiplication


Return type:	1
Return value:	-35
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '5', 4, 5)
    (2, '*', 25, *)
    (4, '-', 24, -)
    (5, '7', 4, 7)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		61

Expression:	42 / -6
Options:	'save-tokens'

check division


Return type:	1
Return value:	-7
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '42', 4, 42)
    (3, '/', 25, /)
    (5, '-', 24, -)
    (6, '6', 4, 6)
    (7, '', 1, )
    (7, '', 1, )
End of token list


----------------------------

Test:		62

Expression:	45 / 0
Options:	<none>

check division by zero
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	error occurred when executing '/'
Dev message:	<->
Illegal division by zero at expr_eval.pm line 1584.
Token list:	<NONE>


----------------------------

Test:		63

Expression:	34 % 5
Options:	'save-tokens'

check modulo


Return type:	1
Return value:	4
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '34', 4, 34)
    (3, '%', 25, %)
    (5, '5', 4, 5)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		64

Expression:	45 % 0
Options:	<none>

check modulo by zero
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	3
Error message:	error occurred when executing '%'
Dev message:	<->
Illegal modulus zero at expr_eval.pm line 1598.
Token list:	<NONE>


----------------------------

Test:		65

Expression:	25 + 6 * 8 - 64 / 8 + 4
Options:	'save-tokens'

check operation priorities


Return type:	1
Return value:	69
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '+', 24, +)
    (5, '6', 4, 6)
    (7, '*', 25, *)
    (9, '8', 4, 8)
    (11, '-', 24, -)
    (13, '64', 4, 64)
    (16, '/', 25, /)
    (18, '8', 4, 8)
    (20, '+', 24, +)
    (22, '4', 4, 4)
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		66

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'save-tokens'

check operation priorities


Return type:	1
Return value:	151
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		67

Expression:	(25 + 6) * (8 - 56) / (8 + 4)
Options:	'save-tokens'

check operation priorities being changed by parentheses


Return type:	1
Return value:	-124
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, '25', 4, 25)
    (4, '+', 24, +)
    (6, '6', 4, 6)
    (7, ')', 7, ))
    (9, '*', 25, *)
    (11, '(', 6, ()
    (12, '8', 4, 8)
    (14, '-', 24, -)
    (16, '56', 4, 56)
    (18, ')', 7, ))
    (20, '/', 25, /)
    (22, '(', 6, ()
    (23, '8', 4, 8)
    (25, '+', 24, +)
    (27, '4', 4, 4)
    (28, ')', 7, ))
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		68

Expression:	25 * (8 + 36) / (12 - 7) % 3
Options:	'save-tokens'

check operation priorities being changed by parentheses


Return type:	1
Return value:	1
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '(', 6, ()
    (6, '8', 4, 8)
    (8, '+', 24, +)
    (10, '36', 4, 36)
    (12, ')', 7, ))
    (14, '/', 25, /)
    (16, '(', 6, ()
    (17, '12', 4, 12)
    (20, '-', 24, -)
    (22, '7', 4, 7)
    (23, ')', 7, ))
    (25, '%', 25, %)
    (27, '3', 4, 3)
    (28, '', 1, )
    (28, '', 1, )
End of token list


----------------------------

Test:		69

Expression:	"xxx" || true
Options:	<none>

check non-boolean before boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	boolean value expected before operator
Dev message:	<->
Token information:
    Position:	6
    String:	||
    Type:	21
    Value:	||
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		70

Expression:	true && "xxx"
Options:	<none>

check non-boolean after boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	boolean value expected after operator
Dev message:	<->
Token information:
    Position:	5
    String:	&&
    Type:	22
    Value:	&&
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		71

Expression:	true && true
Options:	'save-tokens'

check &&


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '&&', 22, &&)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		72

Expression:	false && true
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		73

Expression:	true && false
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '&&', 22, &&)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		74

Expression:	false && false
Options:	'save-tokens'

check &&


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		75

Expression:	true || true
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		76

Expression:	false || true
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		77

Expression:	true || false
Options:	'save-tokens'

check ||


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		78

Expression:	false || false
Options:	'save-tokens'

check ||


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		79

Expression:	true || true && false
Options:	'save-tokens'

check boolean precedence order


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'true', 5, <ARRAY>)
    (13, '&&', 22, &&)
    (16, 'false', 5, <ARRAY>)
    (21, '', 1, )
    (21, '', 1, )
End of token list


----------------------------

Test:		80

Expression:	false && (true || true)
Options:	'save-tokens'

check boolean order with parentheses


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, '(', 6, ()
    (10, 'true', 5, <ARRAY>)
    (15, '||', 21, ||)
    (18, 'true', 5, <ARRAY>)
    (22, ')', 7, ))
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		81

Expression:	(true and not false) or false
Options:	<none>

check boolean keywords for option not set


Return type:	<NONE>
Return value:	<NONE>
Error position:	8
Error message:	unexpected element found
Dev message:	<->
Token information:
    Position:	6
    String:	and
    Type:	2
    Value:	and
Token list:	<NONE>


----------------------------

Test:		82

Expression:	(true and not false) or false
Options:	'boolean-keywords,save-tokens'

check boolean keywords for option not set


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'true', 5, <ARRAY>)
    (6, 'and', 22, &&)
    (10, 'not', 13, !)
    (14, 'false', 5, <ARRAY>)
    (19, ')', 7, ))
    (21, 'or', 21, ||)
    (24, 'false', 5, <ARRAY>)
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		83

Expression:	true != "xxx"
Options:	<none>

check non-boolean after boolean operator


Return type:	<NONE>
Return value:	<NONE>
Error position:	6
Error message:	boolean value expected after operator
Dev message:	<->
Token information:
    Position:	5
    String:	!=
    Type:	23
    Value:	!=
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		84

Expression:	true != true
Options:	'save-tokens'

check !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '!=', 23, !=)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		85

Expression:	false != true
Options:	'save-tokens'

check !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '!=', 23, !=)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		86

Expression:	true != false
Options:	'save-tokens'

check !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '!=', 23, !=)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		87

Expression:	false != false
Options:	'save-tokens'

check !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '!=', 23, !=)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		88

Expression:	true == true
Options:	'save-tokens'

check ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '==', 23, ==)
    (8, 'true', 5, <ARRAY>)
    (12, '', 1, )
    (12, '', 1, )
End of token list


----------------------------

Test:		89

Expression:	false == true
Options:	'save-tokens'

check ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '==', 23, ==)
    (9, 'true', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		90

Expression:	true == false
Options:	'save-tokens'

check ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '==', 23, ==)
    (8, 'false', 5, <ARRAY>)
    (13, '', 1, )
    (13, '', 1, )
End of token list


----------------------------

Test:		91

Expression:	false == false
Options:	'save-tokens'

check ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '==', 23, ==)
    (9, 'false', 5, <ARRAY>)
    (14, '', 1, )
    (14, '', 1, )
End of token list


----------------------------

Test:		92

Expression:	false && true == false
Options:	'save-tokens'

check priorities between && and ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'false', 5, <ARRAY>)
    (6, '&&', 22, &&)
    (9, 'true', 5, <ARRAY>)
    (14, '==', 23, ==)
    (17, 'false', 5, <ARRAY>)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		93

Expression:	true || false != true
Options:	'save-tokens'

check priorities between || and !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, 'true', 5, <ARRAY>)
    (5, '||', 21, ||)
    (8, 'false', 5, <ARRAY>)
    (14, '!=', 23, !=)
    (17, 'true', 5, <ARRAY>)
    (21, '', 1, )
    (21, '', 1, )
End of token list


----------------------------

Test:		94

Expression:	(false && true) == false
Options:	'save-tokens'

check priorities between && and == with parentheses


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'false', 5, <ARRAY>)
    (7, '&&', 22, &&)
    (10, 'true', 5, <ARRAY>)
    (14, ')', 7, ))
    (16, '==', 23, ==)
    (19, 'false', 5, <ARRAY>)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		95

Expression:	(true || false) != true
Options:	'save-tokens'

check priorities between || and != with parentheses


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, 'true', 5, <ARRAY>)
    (6, '||', 21, ||)
    (9, 'false', 5, <ARRAY>)
    (14, ')', 7, ))
    (16, '!=', 23, !=)
    (19, 'true', 5, <ARRAY>)
    (23, '', 1, )
    (23, '', 1, )
End of token list


----------------------------

Test:		96

Expression:	true < 5
Options:	<none>

check boolean before < comparison


Return type:	<NONE>
Return value:	<NONE>
Error position:	5
Error message:	string or number expected before operator
Dev message:	<->
Token information:
    Position:	5
    String:	<
    Type:	23
    Value:	<
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		97

Expression:	5 < false
Options:	<none>

check boolean after < comparison


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	string or number expected after operator
Dev message:	<->
Token information:
    Position:	2
    String:	<
    Type:	23
    Value:	<
Value information:
    Type:	3  (bool)
    Value:	
Token list:	<NONE>


----------------------------

Test:		98

Expression:	5 < "xxx"
Options:	<none>

check comparing number to string


Return type:	<NONE>
Return value:	<NONE>
Error position:	2
Error message:	values before and after operator need to be the same type
Dev message:	<->
Value information:
    Type:	1  (numeric)
    Value:	5
Value information:
    Type:	2  (string)
    Value:	xxx
Token list:	<NONE>


----------------------------

Test:		99

Expression:	"a" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		100

Expression:	"b" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		101

Expression:	"c" < "b"
Options:	'save-tokens'

check string <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '<', 23, <)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		102

Expression:	"a" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		103

Expression:	"b" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		104

Expression:	"c" <= "b"
Options:	'save-tokens'

check string <=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '<=', 23, <=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		105

Expression:	"a" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		106

Expression:	"b" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		107

Expression:	"c" == "b"
Options:	'save-tokens'

check string ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '==', 23, ==)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		108

Expression:	"a" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		109

Expression:	"b" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		110

Expression:	"c" != "b"
Options:	'save-tokens'

check string !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '!=', 23, !=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		111

Expression:	"a" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		112

Expression:	"b" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		113

Expression:	"c" >= "b"
Options:	'save-tokens'

check string >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '>=', 23, >=)
    (7, '"b"', 3, b)
    (10, '', 1, )
    (10, '', 1, )
End of token list


----------------------------

Test:		114

Expression:	"a" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		115

Expression:	"b" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"b"', 3, b)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		116

Expression:	"c" > "b"
Options:	'save-tokens'

check string >


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"c"', 3, c)
    (4, '>', 23, >)
    (6, '"b"', 3, b)
    (9, '', 1, )
    (9, '', 1, )
End of token list


----------------------------

Test:		117

Expression:	1 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		118

Expression:	2 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		119

Expression:	3 < 2
Options:	'save-tokens'

check number <


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '<', 23, <)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		120

Expression:	1 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		121

Expression:	2 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		122

Expression:	3 <= 2
Options:	'save-tokens'

check number <=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '<=', 23, <=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		123

Expression:	1 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		124

Expression:	2 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		125

Expression:	3 == 2
Options:	'save-tokens'

check number ==


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '==', 23, ==)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		126

Expression:	1 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		127

Expression:	2 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		128

Expression:	3 != 2
Options:	'save-tokens'

check number !=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '!=', 23, !=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		129

Expression:	1 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		130

Expression:	2 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		131

Expression:	3 >= 2
Options:	'save-tokens'

check number >=


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '>=', 23, >=)
    (5, '2', 4, 2)
    (6, '', 1, )
    (6, '', 1, )
End of token list


----------------------------

Test:		132

Expression:	1 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '1', 4, 1)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		133

Expression:	2 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '2', 4, 2)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		134

Expression:	3 > 2
Options:	'save-tokens'

check number >


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '3', 4, 3)
    (2, '>', 23, >)
    (4, '2', 4, 2)
    (5, '', 1, )
    (5, '', 1, )
End of token list


----------------------------

Test:		135

Expression:	false =~ "XXX"
Options:	<none>

check if =~ has string before operand


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	string expected before operator
Dev message:	<->
Token information:
    Position:	6
    String:	=~
    Type:	23
    Value:	=~
Value information:
    Type:	3  (bool)
    Value:	
Token list:	<NONE>


----------------------------

Test:		136

Expression:	"XXX" !~ true
Options:	<none>

check if =~ has string after operand


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	string expected after operator
Dev message:	<->
Token information:
    Position:	6
    String:	!~
    Type:	23
    Value:	!~
Value information:
    Type:	3  (bool)
    Value:	t
Token list:	<NONE>


----------------------------

Test:		137

Expression:	"XXX" =~ ".[hjk"
Options:	<none>

check if =~ pattern is valid
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	7
Error message:	Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.

Dev message:	<->
Pattern:  /.[hjk/
Unmatched [ in regex; marked by <-- HERE in m/.[ <-- HERE hjk/ at expr_eval.pm line 1735.
Token list:	<NONE>


----------------------------

Test:		138

Expression:	"678XXX" =~ "67[789]X"
Options:	'save-tokens'

check if =~ matched


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"678XXX"', 3, 678XXX)
    (9, '=~', 23, =~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		139

Expression:	"675XXX" =~ "67[789]X"
Options:	'save-tokens'

check if =~ matched


Return type:	3
Return value:	
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"675XXX"', 3, 675XXX)
    (9, '=~', 23, =~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		140

Expression:	"675XXX" !~ "67[789]X"
Options:	'save-tokens'

check if !~ matched


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"675XXX"', 3, 675XXX)
    (9, '!~', 23, !~)
    (12, '"67[789]X"', 3, 67[789]X)
    (22, '', 1, )
    (22, '', 1, )
End of token list


----------------------------

Test:		141

Expression:	"67" + "8XXX" =~ "67[7" + "89]X"
Options:	'save-tokens'

check precedence of + and =~


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"67"', 3, 67)
    (5, '+', 24, +)
    (7, '"8XXX"', 3, 8XXX)
    (14, '=~', 23, =~)
    (17, '"67[7"', 3, 67[7)
    (24, '+', 24, +)
    (26, '"89]X"', 3, 89]X)
    (32, '', 1, )
    (32, '', 1, )
End of token list


----------------------------

Test:		142

Expression:	"a" + 2 * 4 < "b" + 2 * 3
Options:	'save-tokens'

check compound expression for checking priorities


Return type:	3
Return value:	t
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"a"', 3, a)
    (4, '+', 24, +)
    (6, '2', 4, 2)
    (8, '*', 25, *)
    (10, '4', 4, 4)
    (12, '<', 23, <)
    (14, '"b"', 3, b)
    (18, '+', 24, +)
    (20, '2', 4, 2)
    (22, '*', 25, *)
    (24, '3', 4, 3)
    (25, '', 1, )
    (25, '', 1, )
End of token list


----------------------------

Test:		143

Expression:	"XXX" %binary-operator% "YYY"
Options:	'token-function'

check for special binary operator without operator function


Return type:	<NONE>
Return value:	<NONE>
Error position:	22
Error message:	operator not evaluated by function
Dev message:	<->
No function specified.
Token information:
    Position:	6
    String:	%binary-operator%
    Type:	70
    Value:	%binary-operator%
Token list:	<NONE>


----------------------------

Test:		144

Expression:	"XXX" %binary-operator% "YYY"
Options:	'token-function,operator-function,save-tokens'

check for special binary operator


Return type:	2
Return value:	(YYY,XXX)
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"XXX"', 3, XXX)
    (6, '%binary-operator%', 70, %binary-operator%)
    (24, '"YYY"', 3, YYY)
    (29, '', 1, )
    (29, '', 1, )
End of token list


----------------------------

Test:		145

Expression:	1000 %binary-operator% "YYY"
Options:	'token-function,operator-function'

check for special binary operator acting on non-string


Return type:	<NONE>
Return value:	<NONE>
Error position:	21
Error message:	string expected before operator
Dev message:	<->
function is code
Token information:
    Position:	5
    String:	%binary-operator%
    Type:	70
    Value:	%binary-operator%
Token list:	<NONE>


----------------------------

Test:		146

Expression:	"XXX" %binary-operator-error% "YYY"
Options:	'token-function,operator-function'

check for operator function error
(note:  format of error message may vary depending on perl version, system, etc)


Return type:	<NONE>
Return value:	<NONE>
Error position:	28
Error message:	system error
Dev message:	<->
function is code
Token information:
    Position:	6
    String:	%binary-operator-error%
    Type:	70
    Value:	%binary-operator-error%
Illegal division by zero at test.pl line 357.
Token list:	<NONE>


----------------------------

Test:		147

Expression:	"AAA" + "XXX" %binary-operator% "YYY" + "ZZZ"
Options:	'token-function,operator-function,save-tokens'

check for special binary operator precedence


Return type:	2
Return value:	AAA(YYY,XXX)ZZZ
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '"AAA"', 3, AAA)
    (6, '+', 24, +)
    (8, '"XXX"', 3, XXX)
    (14, '%binary-operator%', 70, %binary-operator%)
    (32, '"YYY"', 3, YYY)
    (38, '+', 24, +)
    (40, '"ZZZ"', 3, ZZZ)
    (45, '', 1, )
    (45, '', 1, )
End of token list


----------------------------

Test:		148

Expression:	("AAA" + "XXX") %binary-operator% ("YYY" + "ZZZ")
Options:	'token-function,operator-function,save-tokens'

check for special binary operator precedence with parentheses


Return type:	2
Return value:	(YYYZZZ,AAAXXX)
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '(', 6, ()
    (1, '"AAA"', 3, AAA)
    (7, '+', 24, +)
    (9, '"XXX"', 3, XXX)
    (14, ')', 7, ))
    (16, '%binary-operator%', 70, %binary-operator%)
    (34, '(', 6, ()
    (35, '"YYY"', 3, YYY)
    (41, '+', 24, +)
    (43, '"ZZZ"', 3, ZZZ)
    (48, ')', 7, ))
    (49, '', 1, )
    (49, '', 1, )
End of token list


----------------------------

Test:		149

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'syntax-check-only,save-tokens'

check syntax checking only option


Return type:	<NONE>
Return value:	<NONE>
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

Test:		150

Expression:	25 * 6 + 36 / 12 - 8 % 3
Options:	'replay-tokens'

check token list replay


Return type:	1
Return value:	151
Error position:	<NONE>
Error message:	<NONE>
Dev message:	<NONE>
Token list:
    (0, '25', 4, 25)
    (3, '*', 25, *)
    (5, '6', 4, 6)
    (7, '+', 24, +)
    (9, '36', 4, 36)
    (12, '/', 25, /)
    (14, '12', 4, 12)
    (17, '-', 24, -)
    (19, '8', 4, 8)
    (21, '%', 25, %)
    (23, '3', 4, 3)
    (24, '', 1, )
    (24, '', 1, )
End of token list


----------------------------

END OF REPORT

------------------------------
PREREQUISITES
------------------------------

Prerequisite modules loaded:

build_requires:

    Module              Need Have
    ------------------- ---- ----
    ExtUtils::MakeMaker 0    6.64


------------------------------
ENVIRONMENT AND OTHER CONTEXT
------------------------------

Environment variables:

    AUTOMATED_TESTING = 1
    COMSPEC = C:\WINDOWS\system32\cmd.exe
    NUMBER_OF_PROCESSORS = 1
    PATH = C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\SlikSvn\bin\;C:\Program Files\Git\bin
    PERL5LIB = 
    PERL5OPT = 
    PERL5_CPANPLUS_IS_RUNNING = 1124
    PERL5_CPAN_IS_RUNNING = 1124
    PERL5_CPAN_IS_RUNNING_IN_RECURSION = 1448,1124
    PERL_CR_SMOKER_CURRENT = expr_eval_1_0
    PERL_EXTUTILS_AUTOINSTALL = --defaultdeps
    PERL_JSON_BACKEND = JSON::XS
    PERL_MM_USE_DEFAULT = 1
    PERL_YAML_BACKEND = YAML
    PROCESSOR_IDENTIFIER = x86 Family 6 Model 23 Stepping 10, GenuineIntel
    TEMP = C:\DOCUME~1\GABORS~1\LOCALS~1\Temp
    TERM = dumb

Perl special variables (and OS-specific diagnostics, for MSWin32):

    $^X = C:\strawberry\perl\bin\perl.exe
    $UID/$EUID = 0 / 0
    $GID = 0
    $EGID = 0
    Win32::GetOSName = WinXP/.Net
    Win32::GetOSVersion = Service Pack 3, 5, 1, 2600, 2, 3, 0, 768, 1
    Win32::FsType = NTFS
    Win32::IsAdminUser = 1

Perl module toolchain versions installed:

    Module              Have    
    ------------------- --------
    CPAN                1.97_51 
    CPAN::Meta          2.120921
    Cwd                 3.33    
    ExtUtils::CBuilder  0.280205
    ExtUtils::Command   1.17    
    ExtUtils::Install   1.55    
    ExtUtils::MakeMaker 6.64    
    ExtUtils::Manifest  1.61    
    ExtUtils::ParseXS   3.18    
    File::Spec          3.33    
    JSON                2.53    
    JSON::PP            2.27200 
    Module::Build       0.4003  
    Module::Signature   0.66    
    Parse::CPAN::Meta   1.4404  
    Test::Harness       3.25    
    Test::More          0.98    
    YAML                0.84    
    YAML::Syck          1.22    
    version             0.9901  


--

Summary of my perl5 (revision 5 version 12 subversion 3) configuration:
   
  Platform:
    osname=MSWin32, osvers=5.1, archname=MSWin32-x86-multi-thread
    uname='Win32 strawberryperl 5.12.3.0 #1 Sun May 15 09:44:53 2011 i386'
    config_args='undef'
    hint=recommended, useposix=true, d_sigaction=undef
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags =' -s -O2 -DWIN32 -DHAVE_DES_FCRYPT  -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fno-strict-aliasing -mms-bitfields -DPERL_MSVCRT_READFIX',
    optimize='-s -O2',
    cppflags='-DWIN32'
    ccversion='', gccversion='4.4.3', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='long long', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='g++', ldflags ='-s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib"'
    libpth=C:\strawberry\c\lib C:\strawberry\c\i686-w64-mingw32\lib
    libs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
    perllibs=-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32
    libc=, so=dll, useshrplib=true, libperl=libperl512.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags='-mdll -s -L"C:\strawberry\perl\lib\CORE" -L"C:\strawberry\c\lib"'


Characteristics of this binary (from libperl): 
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
                        PERL_MALLOC_WRAP PL_OP_SLAB_ALLOC USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_SITECUSTOMIZE
  Built under MSWin32
  Compiled at May 15 2011 17:02:01
  %ENV:
    PERL5_CPANPLUS_IS_RUNNING="1124"
    PERL5_CPAN_IS_RUNNING="1124"
    PERL5_CPAN_IS_RUNNING_IN_RECURSION="1448,1124"
    PERL_CR_SMOKER_CURRENT="expr_eval_1_0"
    PERL_EXTUTILS_AUTOINSTALL="--defaultdeps"
    PERL_JSON_BACKEND="JSON::XS"
    PERL_MM_USE_DEFAULT="1"
    PERL_YAML_BACKEND="YAML"
  @INC:
    C:/strawberry/perl/site/lib
    C:/strawberry/perl/vendor/lib
    C:/strawberry/perl/lib
    .