source: Dev/trunk/src/client/dojox/lang/tests/recomb.js @ 536

Last change on this file since 536 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 3.5 KB
Line 
1dojo.provide("dojox.lang.tests.recomb");
2
3dojo.require("dojox.lang.functional");
4dojo.require("dojox.lang.functional.listcomp");
5
6dojo.require("dojox.lang.functional.linrec");
7dojo.require("dojox.lang.functional.numrec");
8dojo.require("dojox.lang.functional.tailrec");
9dojo.require("dojox.lang.functional.binrec");
10dojo.require("dojox.lang.functional.multirec");
11
12(function(){
13        var df = dojox.lang.functional,
14               
15                // define the standard factorial function to compare with
16                fact = function(n){ return n <= 1 ? 1 : n * fact(n - 1); },
17
18                // define the standard fibonacci function to compare with
19                fib  = function(n){ return n <= 1 ? 1 : fib(n - 1) + fib(n - 2); },
20               
21                // prepare the sequence of arguments for comparison
22                seq = df.listcomp("i for(i = 0; i < 15; ++i)"),
23               
24                // build a set of results for our argument list using the standard factorial function
25                factTable = df.map(seq, fact),
26
27                // build a set of results for our argument list using the standard fibonacci function
28                fibTable  = df.map(seq, fib);
29       
30        tests.register("dojox.lang.tests.recomb", [
31                function testFactLinrec1(t){
32                        var fact = df.linrec("<= 1", "1", "[n - 1]", "a * b[0]");
33                        t.assertEqual(df.map(seq, fact), factTable);
34                },
35                function testFactLinrec2(t){
36                        var fact = df.linrec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[n - 1]"), df.lambda("a * b[0]"));
37                        t.assertEqual(df.map(seq, fact), factTable);
38                },
39                function testFactNumrec1(t){
40                        var fact = df.numrec(1, "*");
41                        t.assertEqual(df.map(seq, fact), factTable);
42                },
43                function testFactNumrec2(t){
44                        var fact = df.numrec(1, df.lambda("*"));
45                        t.assertEqual(df.map(seq, fact), factTable);
46                },
47                function testFactMultirec1(t){
48                        var fact = df.multirec("<= 1", "1", "[[n - 1]]", "a[0] * b[0]");
49                        t.assertEqual(df.map(seq, fact), factTable);
50                },
51                function testFactMultirec2(t){
52                        var fact = df.multirec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1]]"), df.lambda("a[0] * b[0]"));
53                        t.assertEqual(df.map(seq, fact), factTable);
54                },
55                function testFactTailrec1(t){
56                        var fact2 = df.tailrec("<= 1", "n, acc -> acc", "[n - 1, n * acc]"),
57                                fact  = function(n){ return fact2(n, 1); };
58                        t.assertEqual(df.map(seq, fact), factTable);
59                },
60                function testFactTailrec2(t){
61                        var fact2 = df.tailrec(df.lambda("<= 1"), df.lambda("n, acc -> acc"), df.lambda("[n - 1, n * acc]")),
62                                fact  = function(n){ return fact2(n, 1); };
63                        t.assertEqual(df.map(seq, fact), factTable);
64                },
65                function testFibBinrec1(t){
66                        var fib = df.binrec("<= 1", "1", "[[n - 1], [n - 2]]", "+");
67                        t.assertEqual(df.map(seq, fib), fibTable);
68                },
69                function testFibBinrec2(t){
70                        var fib = df.binrec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1], [n - 2]]"), df.lambda("+"));
71                        t.assertEqual(df.map(seq, fib), fibTable);
72                },
73                function testFibTailrec1(t){
74                        var fib2 = df.tailrec("<= 0", "n, next, result -> result", "[n - 1, next + result, next]"),
75                                fib  = function(n){ return fib2(n, 1, 1); };
76                        t.assertEqual(df.map(seq, fib), fibTable);
77                },
78                function testFibTailrec2(t){
79                        var fib2 = df.tailrec(df.lambda("<= 0"), df.lambda("n, next, result -> result"), df.lambda("[n - 1, next + result, next]")),
80                                fib  = function(n){ return fib2(n, 1, 1); };
81                        t.assertEqual(df.map(seq, fib), fibTable);
82                },
83                function testFibMultirec1(t){
84                        var fib = df.multirec("<= 1", "1", "[[n - 1], [n - 2]]", "a[0] + a[1]");
85                        t.assertEqual(df.map(seq, fib), fibTable);
86                },
87                function testFibMultirec2(t){
88                        var fib = df.multirec(df.lambda("<= 1"), df.lambda("1"), df.lambda("[[n - 1], [n - 2]]"), df.lambda("a[0] + a[1]"));
89                        t.assertEqual(df.map(seq, fib), fibTable);
90                }
91        ]);
92})();
Note: See TracBrowser for help on using the repository browser.