-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy path071_eval.xml
More file actions
78 lines (61 loc) · 1.93 KB
/
071_eval.xml
File metadata and controls
78 lines (61 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?xml version="1.0" encoding="utf-8" ?>
<!--
/*****************************************************************************
*
* ReoScript - .NET Script Language Engine
*
* https://github.com/unvell/ReoScript
*
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
* PURPOSE.
*
* This software released under MIT license.
* Copyright (c) 2012-2019 Jingwood, unvell.com, all rights reserved.
*
****************************************************************************/
-->
<test-suite id="071" name="eval">
<test-case id="001" name="normal">
<script>
var t = debug.assert;
t( eval('1+1'), 2 );
t( typeof eval('[1,2,3]'), 'object' );
t( eval('[1,2,3]') instanceof Array );
t( eval('{name:"object"}') instanceof Object );
// eval access variables
var a = 0;
t( eval('a = 10'), a );
// eval more than one statement
eval('function() { a = 20; a = 30; }()');
t( a, 30 );
</script>
</test-case>
<test-case id="002" name="local variable">
<script>
var t = debug.assert;
function() {
// eval access local variables
var a = 0;
eval('a = 10');
// local variable should be changed
t( a, 10 );
}();
// global variable should not be changed
t( a, null );
</script>
</test-case>
<test-case id="003" name="json">
<script>
var t = debug.assert;
var obj = eval("{name:'apple', color:'red', eat: function(){}}");
t( typeof obj, 'object' );
t( obj instanceof Object );
t( obj.name, 'apple' );
t( obj.color, 'red' );
t( typeof obj.eat, 'function' );
t( obj.eat(), null );
</script>
</test-case>
</test-suite>