Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F948074
parser.html
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
7 KB
Subscribers
None
parser.html
View Options
<
html
>
<
head
>
<
title
>
Parser Unit Test
</
title
>
<
style
type
=
"text/css"
>
@
import
"../resources/dojo.css"
;
</
style
>
<
script
type
=
"text/javascript"
src
=
"../dojo.js"
djConfig
=
"isDebug: true, parseOnLoad: true"
></
script
>
<
script
type
=
"text/javascript"
>
dojo
.
require
(
"dojo.parser"
);
dojo
.
require
(
"doh.runner"
);
dojo
.
declare
(
"tests.parser.Class1"
,
null
,
{
constructor
:
function
(
args
,
node
){
dojo
.
mixin
(
this
,
args
);
},
preambleTestProp
:
1
,
preamble
:
function
(){
this
.
preambleTestProp
++
;
},
intProp
:
1
,
callCount
:
0
,
// for connect testing
callInc
:
function
(){
this
.
callCount
++
;
},
callCount2
:
0
,
// for assignment testing
strProp1
:
"original1"
,
strProp2
:
"original2"
,
arrProp
:
[],
boolProp1
:
false
,
boolProp2
:
true
,
boolProp3
:
false
,
boolProp4
:
true
,
dateProp1
:
dojo
.
date
.
stamp
.
fromISOString
(
'2007-01-01'
),
dateProp2
:
dojo
.
date
.
stamp
.
fromISOString
(
'2007-01-01'
),
dateProp3
:
dojo
.
date
.
stamp
.
fromISOString
(
'2007-01-01'
),
funcProp
:
function
(){},
funcProp2
:
function
(){},
funcProp3
:
function
(){},
onclick
:
function
(){
this
.
prototypeOnclick
=
true
;
}
// FIXME: have to test dates!!
// FIXME: need to test the args property!!
});
dojo
.
declare
(
"tests.parser.Class2"
,
null
,
{
constructor
:
function
(){
this
.
fromMarkup
=
false
;
},
fromMarkup
:
false
,
markupFactory
:
function
(
args
,
node
,
classCtor
){
var
i
=
new
tests
.
parser
.
Class2
();
i
.
fromMarkup
=
true
;
return
i
;
}
});
dojo
.
declare
(
"tests.parser.Class3"
,
tests
.
parser
.
Class2
,
{
fromMarkup
:
false
,
markupFactory
:
function
(
args
,
node
,
classCtor
){
var
i
=
new
classCtor
();
i
.
classCtor
=
classCtor
;
return
i
;
}
});
dojo
.
declare
(
"tests.parser.inputClass"
,
null
,
{
constructor
:
function
(
args
,
node
){
dojo
.
mixin
(
this
,
args
);
},
// these attributes are special in HTML, they don't have a value specified
disabled
:
false
,
checked
:
false
});
deepTestProp
=
{
blah
:
{
thinger
:
1
}
};
dojo
.
addOnLoad
(
function
(){
doh
.
register
(
"t"
,
[
function
testJsId
(
t
){
// console.debug(obj);
t
.
t
(
typeof
obj
==
"object"
);
},
// Attribute parsing tests
function
testStrProp
(
t
){
// normal string parameter
t
.
t
(
dojo
.
isString
(
obj
.
strProp1
));
t
.
is
(
"text"
,
obj
.
strProp1
);
// make sure that you override a string value like "foo" to a blank value
t
.
t
(
dojo
.
isString
(
obj
.
strProp2
));
t
.
is
(
""
,
obj
.
strProp2
);
},
function
testIntProp
(
t
){
t
.
is
(
"number"
,
(
typeof
obj
.
intProp
));
t
.
is
(
5
,
obj
.
intProp
);
},
function
testArrProp
(
t
){
t
.
is
(
3
,
obj
.
arrProp
.
length
);
t
.
is
(
3
,
obj
.
arrProp
[
1
].
length
);
t
.
is
([
"foo"
,
"bar"
,
"baz"
],
obj
.
arrProp
);
},
function
testBoolProp
(
t
){
// make sure that both true and false get read correctly,
// and that unspecified attributes' values don't change
// boolProp1 specified at true
t
.
is
(
"boolean"
,
(
typeof
obj
.
boolProp1
));
t
.
t
(
obj
.
boolProp1
);
// boolProp2 specified as false
t
.
is
(
"boolean"
,
(
typeof
obj
.
boolProp2
));
t
.
f
(
obj
.
boolProp2
);
// boolProp3 not specified (prototype says false)
t
.
is
(
"boolean"
,
(
typeof
obj
.
boolProp3
));
t
.
f
(
obj
.
boolProp3
);
// boolProp4 not specified (prototype says true)
t
.
is
(
"boolean"
,
(
typeof
obj
.
boolProp4
));
t
.
t
(
obj
.
boolProp4
);
},
function
testDateProp
(
t
){
// dateProp1 specified as 2006-1-1
t
.
is
(
"2006-01-01"
,
dojo
.
date
.
stamp
.
toISOString
(
obj
.
dateProp1
,
{
selector
:
'date'
}));
// dateProp2="", should map to NaN (a blank value on DateTextBox)
t
.
t
(
isNaN
(
obj
.
dateProp2
));
// dateProp3="now", should map to current date
t
.
is
(
dojo
.
date
.
stamp
.
toISOString
(
new
Date
(),
{
selector
:
'date'
}),
dojo
.
date
.
stamp
.
toISOString
(
obj
.
dateProp3
,
{
selector
:
'date'
}));
},
function
testDisabledFlag
(
t
){
t
.
is
(
"boolean"
,
(
typeof
disabledObj
.
disabled
));
t
.
t
(
disabledObj
.
disabled
);
t
.
f
(
disabledObj
.
checked
);
},
function
testCheckedFlag
(
t
){
t
.
is
(
"boolean"
,
(
typeof
checkedObj
.
checked
));
t
.
f
(
checkedObj
.
disabled
);
t
.
t
(
checkedObj
.
checked
);
},
function
testFunctionProp
(
t
){
// make sure that unspecified functions (even with common names)
// don't get overridden (bug #3074)
obj
.
onclick
();
t
.
t
(
obj
.
prototypeOnclick
);
// funcProp2="foo"
obj
.
funcProp2
();
t
.
t
(
obj
.
fooCalled
);
// funcProp3="this.func3Called=true;"
obj
.
funcProp3
();
t
.
t
(
obj
.
func3Called
);
},
// test <script> tags inside innerHTML of source node
"t.is(4, obj.preambleTestProp);"
,
"t.is(deepTestProp, obj.deepProp);"
,
function
testConnect
(
t
){
obj
.
callInc
();
t
.
is
(
2
,
obj
.
callCount
);
},
function
testFunctionAssignment
(
t
){
obj
.
callInc2
();
t
.
is
(
1
,
obj
.
callCount2
);
},
function
testSubNodeParse
(
t
){
t
.
f
(
dojo
.
exists
(
"obj2"
));
var
toParse
=
dojo
.
byId
(
"toParse"
);
toParse
.
setAttribute
(
"dojoType"
,
toParse
.
getAttribute
(
"type"
));
dojo
.
parser
.
parse
(
toParse
.
parentNode
);
t
.
t
(
dojo
.
exists
(
"obj2"
));
t
.
is
(
"tests.parser.Class1"
,
obj2
.
declaredClass
);
},
function
testMarkupFactory
(
t
){
t
.
t
(
dojo
.
exists
(
"obj3"
));
t
.
t
(
obj3
.
fromMarkup
);
},
function
testMarkupFactoryClass
(
t
){
t
.
t
(
dojo
.
exists
(
"obj4"
));
t
.
is
(
obj4
.
classCtor
,
tests
.
parser
.
Class3
);
t
.
t
(
obj4
instanceof
tests
.
parser
.
Class3
);
t
.
t
(
obj4
instanceof
tests
.
parser
.
Class2
);
},
function
testDisabledFlag
(
t
){
t
.
t
(
disabledObj
.
disabled
);
t
.
f
(
disabledObj
.
checked
);
},
function
testCheckedFlag
(
t
){
t
.
f
(
checkedObj
.
disabled
);
t
.
t
(
checkedObj
.
checked
);
}
]
);
doh
.
run
();
})
</
script
>
</
head
>
<
body
>
<
h1
>
Parser Unit Test
</
h1
>
<
script
>
function
foo
(){
this
.
fooCalled
=
true
;
}
</
script
>
<
div
dojoType
=
"tests.parser.Class1"
jsId
=
"obj"
strProp1
=
"text"
strProp2
=
""
intProp
=
"5"
arrProp
=
"foo, bar, baz"
boolProp1
=
"true"
boolProp2
=
"false"
dateProp1
=
"2006-01-01"
dateProp2
=
""
dateProp3
=
"now"
funcProp2
=
"foo"
funcProp3
=
"this.func3Called=true;"
>
<
script
type
=
"dojo/method"
event
=
"preamble"
>
this
.
preambleTestProp
=
3
;
</
script
>
<
script
type
=
"dojo/method"
>
// this should be run immediately
this
.
deepProp
=
deepTestProp
;
</
script
>
<
script
type
=
"dojo/connect"
event
=
"callInc"
>
this
.
callCount
++
;
</
script
>
<
script
type
=
"dojo/method"
event
=
"callInc2"
>
this
.
callCount2
++
;
</
script
>
</
div
>
<
div
>
<
div
type
=
"tests.parser.Class1"
jsId
=
"obj2"
id
=
"toParse"
>
</
div
>
</
div
>
<
div
dojoType
=
"tests.parser.Class2"
jsId
=
"obj3"
>
</
div
>
<
div
dojoType
=
"tests.parser.Class3"
jsId
=
"obj4"
>
</
div
>
<
input
dojoType
=
"tests.parser.inputClass"
jsId
=
"checkedObj"
checked
type
=
"checkbox"
>
<
button
dojoType
=
"tests.parser.inputClass"
jsId
=
"disabledObj"
disabled
>
hi
</
button
>
</
body
>
</
html
>
File Metadata
Details
Attached
Mime Type
text/html
Expires
Sat, Apr 26, 14:42 (7 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25782
Default Alt Text
parser.html (7 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment