]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/expressions/expression_engine_test.html
Added unit tests.
[Github/sugarcrm.git] / tests / expressions / expression_engine_test.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
5
6 <title>SUGAR Arithmetic Engine (JS)</title>
7
8
9 <!-- yui js -->
10 <script type="text/javascript" src="../../include/javascript/sugar_grp1_yui.js"></script>
11 <script type="text/javascript" src="../../include/javascript/sugar_grp1.js"></script>
12
13
14 <!--  sugar expressions js -->
15 <!-- <script language="javascript" src="./javascript/ExpressionJS.php"></script> -->
16
17 <script language="javascript" src="../../include/Expressions/javascript/expressions.js"></script>
18 <script language="javascript" src="../../cache/Expressions/functions_cache.js"></script>
19
20 <!-- custom js -->
21 <script language="javascript">
22 YAHOO.util.Event.onDOMReady( function() {
23         var container = new YAHOO.widget.Overlay("container", {fixedcenter:true, visible:true, width:"400px"});
24         container.render();
25 });
26
27 function checkEnter(e) {
28         var characterCode; // literal character code will be stored in this variable
29
30         characterCode = e.keyCode;
31
32         if ( characterCode == 13 ) {
33                 evalExpression();
34                 document.getElementById('expression').select();
35                 return false;
36         } else {
37                 return true;
38         }
39 }
40
41 var i = 0;
42
43 function print_r(o, d) {
44         var ret = "";
45         if (d == null) d = 0;
46         if (typeof(o) == "object") {
47                 ret = "Array\n";
48                 for (var j = 0; j < d; j++) {
49                         ret += "\t";
50                 }
51                 ret += "(\n";
52                 for (i in o) {
53                         for (var j = 0; j <= d; j++) {
54                                 ret += "\t";
55                         }
56                         ret += "[" + i + "] => " + print_r(o[i], d + 2) + "\n"; 
57                 }
58                 for (var j = 0; j < d; j++) {
59                         ret += "\t";
60                 }
61                 ret += ")";
62         } else if (typeof(o != "undefined")){
63                 ret += o;
64         }
65         
66         return ret;
67 }
68
69 function evalExpression() {
70         var parser = new SUGAR.expressions.ExpressionParser();
71         var output = document.getElementById('results');
72         var expression = document.getElementById('expression').value;
73
74         if ( expression == 'clear' ) {
75                 init();
76                 return;
77         }
78
79         var out = "";
80
81         out += '<div class="expression">' + expression + ':</div>';
82
83         try {
84                 var result = parser.evaluate(expression);
85                 result = result.evaluate();
86                 out += '<div class="result" id="js_result_' + resultCount + '">' + print_r(result, 0) + "</div>";
87         } catch (e) {
88                 if (e.message)
89                         alert(e.message);
90                 out += '<div class="result" id="js_result_' + resultCount + '">' + e + "</div>";
91         }
92
93         out += "<div class='clearer'></div>";
94
95         var x = (i++%2);
96
97         output.innerHTML = "<div class='casing" + x + "'>" + out + "</div>" + output.innerHTML;
98         ajaxEvalExpression(expression);
99 }
100
101 function ajaxEvalExpression(expr) {
102         YAHOO.util.Connect.asyncRequest('POST', 'expression_engine_eval.php', 
103                 {
104                         success: function(o){
105                                 var output = document.getElementById('results');
106                                 output.innerHTML = "<div class='ajax result' id='php_result_" + resultCount + "'>" + o.responseText + "</div>" + output.innerHTML;
107                                 resultCount++;
108                         }
109                 }, "expression=" + expr);
110 }
111
112
113
114 function init() {
115         resultCount = 0;
116         document.getElementById('results').innerHTML = "";
117 }
118
119
120 window.onload = init;
121
122 </script>
123
124
125 <style type="text/css">
126
127 BODY {
128         background: #BFBFBF;
129         font-family: Trebuchet MS;
130 }
131
132 .expression {
133         font-size:  10pt;
134         float: left;
135 }
136
137 .casing0 {
138         padding: 5px;
139         background: #E4E4E4;
140 }
141
142 .casing1 {
143         padding: 5px;
144         background: #f4f4f4;
145 }
146
147 .ajax {
148         padding: 5px;
149         background: #a0f4a0;
150 }
151
152 .result {
153         font-family: Verdana;
154         font-size: 10pt;
155         font-weight: bold;
156         float: right;
157 }
158
159 .clearer {
160         clear: both;
161 }
162
163 #results {
164         margin: 0 auto;
165         width: 350px;
166         height: 350px;
167         border: 1px solid #cccccc;
168         overflow:auto;
169         padding: 10px;
170         background: #ffffff;
171 }
172
173
174 #container {
175         width: 400px;
176         margin: 0 auto;
177         height: 400px;
178         background: #ffffff;
179         background: #EFEFEF;
180         border: 1px solid #000;
181         padding: 30px;
182 }
183
184
185 #input {
186         text-align: center;
187         height: 50px;
188         margin: 0 auto;
189 }
190
191 #input INPUT[type=text] {
192         font-family: Courier New;
193 }
194
195 </style>
196
197 </head>
198
199 <body>
200
201 <!-- div id="overlay" style="width: 100%; height: 100%;position: absolute; left: 0px; top: 0px; background: #BFBFBF; z-index: -10;"></div -->
202
203
204 <div id="container">
205
206         <div id="results">
207         </div>
208
209         <div id="input">
210                 <input type="text" id="expression" style="width: 288px" onkeypress="checkEnter(event)">
211                 <input type="button" id="evaluate_button" value="Evaluate" onclick="evalExpression()">
212                 <input type="button" id="clear_button" value="Clear" onclick="init()">
213         </div>
214
215 </div>
216
217 </body>
218
219 </html>