r22894: don't send a 2nd request before the last one returned (at least with
[Samba.git] / testprogs / ejs / bugs.js
blob0c1cecb486ebb117ed2a52fefbc36f8a94109452
1 /*
2         demonstrate some bugs in ejs
4         tridge <appweb@tridgell.net>
5 */
8 /****************************************
9 demo a bug in constructing arrays
10 fix at http://build.samba.org/build.pl?function=diff;tree=samba4;revision=7124
11 status: FIXED
12 *****************************************/
13 function arraybug() {
14          var a;
16          println("First with 3 elements");
17          a = new Array("one", "two", "three");
18          printVars(a);
19          assert(a.length == 3);
20          assert(a[0] == "one");
21          assert(a[1] == "two");
22          assert(a[2] == "three");
24          println("with a array length");
25          a = new Array(5);
26          printVars(a);
27          assert(a.length == 5);
29          println("\nNow with 1 element");
30          a = new Array("one");
31          printVars(a);
32          assert(a.length == 1);
33          assert(a[0] == "one");
35          println("ALL OK");
39 /****************************************
40 demo a bug in variable arguments
41 fix at http://build.samba.org/build.pl?function=diff;tree=samba4;revision=7085
42 status: FIXED
43 *****************************************/
44 function argsbug() {
45          println("we should have been called with 3 arguments");
46          assert(arguments.length == 3);
47          assert(arguments[0] == "one");
48          assert(arguments[1] == "two");
49          assert(arguments[2] == "three");
53 /****************************************
54 demo a bug in constructing objects
55 no fix available yet
56 status: SUBMITTED
57 *****************************************/
58 function MyObj() {
59          var o = new Object();
60          o.test = 42;
61          return o;
64 function objbug() {
65          println("the docs say you should use 'new'");
66          var o1 = new MyObj();
67          var o2 = MyObj();
68          printVars(o1);
69          printVars(o2);
70          assert(o1.test == 42);
71          assert(o2.test == 42);
75  demo a expression handling bug
76  status: FIXED
78 function exprbug() {
79         var a = new Array(10);
80         var i;
81         for (i=0;i<4;i++) {
82                 a[1+(i*2)] = i;
83                 a[2+(i*2)] = i*2;
84         }
87 /****************************************
88 demo lack of recursion
89 fix in http://build.samba.org/build.pl?function=diff;tree=samba4;revision=7127
90 status: FIXED
91 *****************************************/
92 function fibonacci(n) {
93         if (n < 3) {
94                 return 1;
95         }
96         return fibonacci(n-1) + fibonacci(n-2);
99 function recursebug() {
100          println("First 10 fibonacci numbers:");
101          for (i=0;i<10;i++) {
102                  println("fibonacci(" + i + ")=" + fibonacci(i));
103          }
106 /****************************************
107 demo lack of function variables inside functions
108 status: FIXED IN SAMBA
109 *****************************************/
110 function callback()
112         return "testing";
115 function fnbug(c)
117         s = c();
118         assert(s == "testing");
121 /****************************************
122 demo incorrect handling of reserved words in strings
123 status: SUBMITTED
124 *****************************************/
125 function reservedbug()
127         assert("funct" + "ion" == 'function');
131 /****************************************
132 demo incorrect handling of boolean functions
133 status: SUBMITTED
134 *****************************************/
135 function no()
137         return false;
140 function boolbug()
142         assert(false == no());
143         assert(!no());
147 /* run the tests */
148 arraybug();
149 argsbug("one", "two", "three");
150 recursebug();
151 exprbug();
152 fnbug(callback);
153 reservedbug();
154 boolbug();
155 objbug();