source: Dev/trunk/src/client/util/docscripts/tests/basic.js @ 483

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

Added Dojo 1.9.3 release.

File size: 7.0 KB
Line 
1dojo.provide("util.docscripts.tests.basic");
2(function(){
3
4        var url = dojo.moduleUrl("util.docscripts", "dumpObj.php") + "";
5        function getdata(file){
6               
7                var r;
8                dojo.xhrGet({
9                        url: url + "?f=" + file,
10                        sync: true,
11                        handleAs:"json",
12                        handle: function(response){
13                                r = response;
14                        }
15                });
16                return r;
17               
18        }
19       
20        var docs;
21        function getmember(key, obj){
22                obj = obj || docs;
23                return obj[key];
24        }
25       
26        doh.register("doctests.basic", [
27       
28                function actual_fetching(t){
29                        docs = getdata("util/docscripts/tests/simple.js");
30                        t.t(docs);
31                        t.t(typeof docs == "object");
32                        t.is(docs["#provides"], "util.docscripts.tests.simple", "provide() object found");
33                        t.is(docs["#resource"], "docscripts/tests/simple.js", "filename expansion");
34                        t.t(docs["util.docscripts.tests"], "provide() expansion");
35                },
36               
37                function simple_requires(t){
38                        t.t(dojo.isArray(docs['#requires'][0]), "populated require");
39                        t.t(~dojo.indexOf(docs["#requires"][0], "dojo.cookie"), "found cookie require");
40                },
41               
42                function module_level_docs(t){
43                        var fb = getmember("util.docscripts.tests.simple");
44                        t.is("Module level summary", fb.summary, "summary from psuedo on module obj");
45                },
46               
47                function basic_class(t){
48                       
49                        var fb = getmember("dojo.FooBar");
50                       
51                        t.t(fb, "dojo.FooBar docs exist");
52                        t.t(fb.classlike, "classlike thinger found");
53                        t.is("A Class", fb.summary, "picked up summary from post-decalre docs");
54                        t.is("Function", fb.type, "inference");
55                        t.is("A Class description", fb.description, "description from post-declare docs");
56                       
57                        t.t(dojo.isArray(fb.examples), "found examples");
58                        t.is(1, fb.examples.length, "found one example exactly");
59                       
60                        var fbc = getmember("dojo.FooBar.constructor");
61                        t.is(fbc.prototype, "dojo.FooBar", "prototype binding");
62                        t.is(fbc.parameters.args.name, fb.parameters.args.name, "params from constructor implied on class");
63                       
64                        var mf = getmember("dojo.FooBar.memberFn");
65                        t.t(mf, "member function picked out of declaration");
66
67                        var params = mf.parameters;
68                        t.is("String", params.a.type);
69                        t.f(params.b.optional);
70                        t.is("String", params.b.type);
71                        t.f(params.b.optional);
72                        t.is("Boolean", params.c.type);
73                        t.t(params.c.optional, "last arg optional");
74                        t.is("Integer", mf.returns);
75                        t.is("A member function", mf.summary);
76                       
77                },
78               
79                function inherited_class(t){
80                        var fb2 = getmember("dojo.FooBar2");
81                        t.t(fb2);
82                        // TODO:
83                        // check fb2.chains for dojo.FooBar
84                        // check fb2.inheritance
85                        // FIXME:
86                        // what is chains v prototype
87                },
88               
89                function mixin_docs(t){
90                        var mv = getmember("dojo.mixedValue");
91                        t.is("External doc block, mixed", mv.summary, "summary found for mixed value");
92                        t.is("Integer", mv.type, "type infered from mixed value");
93                        t.is("dojo", mv.attached, "alias lookup in d.mixin");
94                       
95                        var mf = getmember("dojo.mixedFunction");
96                        t.is("dojo", mf.attached, "alias lookup in d.mixin");
97                        t.is("Integer", mf.returns, "returns from return line");
98                        t.is("From mixin", mf.summary, "basic summary");
99                        t.is("a", mf.parameters.a.name, "parameter picked up");
100                        t.t(mf.parameters.a.optional, "param is optional");
101                        t.is(mf.parameters.a.summary, "Some number or not", "parameter description picked up");
102                },
103               
104                function basic_function(t){
105                       
106                        var fb = getmember("dojo.thisIsAtestFunction");
107                        t.t(fb, "testFunction docs exist");
108                        t.is("Testing a function", fb.summary);
109                        t.is("String", fb.returns, "return value determined");
110                        t.is("Testing a string parameter", fb.parameters.a.summary, "parameter summary picked out");
111                },
112               
113                function testfunction2(t){
114                        var tf = getmember("dojo.testFunction2");
115                        t.is("Simple summary", tf.summary);
116                        t.is("Simple Description.\nOn Multiple lines.", tf.description);
117                        t.t(tf.parameters.id.optional);
118                        t.is("Duplicate matched in signature and in line", tf.parameters.id.summary);
119                        t.is("String", tf.parameters.id.type);
120                },
121               
122                function test_returner(t){
123
124                        // FIXME: the absence of a return comment populates only return_summary
125                        // when it's like:
126                        // ---
127                        // returns: Foo|Bar|Baz
128                        //              You'd expect Foo|Bar|Baz to be return value, and this to be return_summary
129                        // ---
130                       
131                        var r = getmember("dojo.returner");
132                        t.t(r);
133                       
134                        // FIXME: expected but not getting:
135                        // t.is("String|Integer", r.returns);
136                        // t.is("This should be description", r.return_summary);
137                       
138                        // FIXME: actually getting:
139                        t.is("String|Integer\nThis should be description", r.return_summary);
140                        t.f(r.returns);
141                },
142               
143                function test_multireturner(t){
144                        var r = getmember("dojo.multiReturns");
145                        t.t(r);
146                        t.is("String|Integer", r.returns, "found all return statement types in block");
147                        t.is("Simple multireturn check", r.summary);
148                },
149               
150                function aliased_query(t){
151                        var dq = getmember("dojo.query.stub");
152                        t.t(dq, "$ -> dojo.query unwrapped from closure");
153                        t.is("Integer", dq.returns);
154                        t.is("aliased to `dojo.query`", dq.summary, "FIX: requires undone <code>");
155                },
156               
157                function kwarg_test(t){
158                        var kw = getmember("util.docscripts.tests.simple.__kwArgs");
159                        var args = kw.parameters;
160                       
161                        // FIXME: should this be actually mixed into something that has a type=__kwArgs?
162                        // eg: dojo.kwArgFunction.parameter.args object?
163                        var kwf = getmember("dojo.kwArgFunction");
164                        var kwp = kwf.parameters.args;
165                       
166                        t.is("util.docscripts.tests.simple.__kwArgs", kwp.type);
167                       
168                },
169               
170//              function fetch_amd_style(t){
171//                      docs = getdata("util/docscripts/tests/simple_amd.js");
172//                      console.warn("amd-basic", docs);
173//              },
174//             
175//              function fetch_amd_declare(t){
176//                      docs = getdata("util/docscripts/tests/declare_amd.js");
177//                      console.warn("amg-declare", docs);
178//              },
179               
180                function functional(t){
181                        // refs #13345
182                        docs = getdata("util/docscripts/tests/functional.js");
183                        var hasit = getmember("util.docscripts.tests.FunctionalThinger");
184                        t.t(hasit, "object exists in parsed output, meaning parsing happened");
185                },
186               
187                function raw_declare_init(t){
188                        docs = getdata("util/docscripts/tests/extend_declare.js");
189                        t.t(true);
190                },
191               
192                function raw_declare(t){
193                        var barbaz = getmember("dojo.BarBaz");
194                        t.t(barbaz, "raw declare() call defined a named class");
195                },
196               
197                function lang_extend(t){
198                        var someprop = getmember("dojo.BarBaz.someProp");
199                        t.t(someprop, "lang.extend worked");
200                        t.is("String", someprop.type, "lang.extend unwrapped innards");
201                },
202
203// FIXME; dojo.mixin(a.b.prototype, { ... }) parses, but shows up differently in the obj
204// ... differently than dojo.extend(a.b, { ... }) ... the former is attached to "a.b", the
205// latter attached to "a.b.prototype". no sure how this pans out for generate.php
206//
207//              function lang_mixin(t){
208//                      var someprop = getmember("dojo.BarBaz.moreProps");
209//                      console.log(docs, someprop);
210//                      t.t(someprop, "lang._mixin worked");
211//                      t.is("String", someprop.type, "lang._mixin unwrapped innards");
212//              },
213//             
214               
215                function winning(t){
216                        var prop = getmember("dojo.BarBaz.winning");
217                        console.warn(prop);
218                        t.t(prop, "aliased extend() call resolves properly");
219                        t.is("Boolean", prop.type);
220                        t.is("Always true.", prop.summary, "are we? rad.")
221                }
222       
223        ]);
224
225})();
Note: See TracBrowser for help on using the repository browser.