mirror of https://github.com/svaarala/duktape.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
750 lines
15 KiB
750 lines
15 KiB
summary: requires DUK_USE_LIGHTFUNC_BUILTINS
|
|
---
|
|
light func support test
|
|
info.length: 9
|
|
typeof: function
|
|
6
|
|
typeof test
|
|
function
|
|
property assignment test
|
|
strPlainNonStrict: success
|
|
strPlainStrict: TypeError
|
|
strObjectNonStrict: success
|
|
strObjectStrict: success
|
|
strObjectNonextNonStrict: success
|
|
strObjectNonextStrict: TypeError
|
|
lfuncNonStrict1: success
|
|
lfuncNonStrict2: success
|
|
lfuncStrict1: TypeError
|
|
lfuncStrict2: success
|
|
instanceof test
|
|
{} instanceof lightfunc: TypeError
|
|
false
|
|
{} instanceof func-wo-prototype: TypeError
|
|
lightFunc instanceof Function: true
|
|
lightFunc instanceof Number: false
|
|
lightFunc instanceof Object: true
|
|
comparison test
|
|
0 0 true true
|
|
0 1 false false
|
|
0 2 false false
|
|
0 3 true true
|
|
0 4 false false
|
|
0 5 false false
|
|
0 6 false false
|
|
1 0 false false
|
|
1 1 true true
|
|
1 2 false false
|
|
1 3 false false
|
|
1 4 true true
|
|
1 5 false false
|
|
1 6 false false
|
|
2 0 false false
|
|
2 1 false false
|
|
2 2 true true
|
|
2 3 false false
|
|
2 4 false false
|
|
2 5 true true
|
|
2 6 false false
|
|
3 0 true true
|
|
3 1 false false
|
|
3 2 false false
|
|
3 3 true true
|
|
3 4 false false
|
|
3 5 false false
|
|
3 6 false false
|
|
4 0 false false
|
|
4 1 true true
|
|
4 2 false false
|
|
4 3 false false
|
|
4 4 true true
|
|
4 5 false false
|
|
4 6 false false
|
|
5 0 false false
|
|
5 1 false false
|
|
5 2 true true
|
|
5 3 false false
|
|
5 4 false false
|
|
5 5 true true
|
|
5 6 false false
|
|
6 0 false false
|
|
6 1 false false
|
|
6 2 false false
|
|
6 3 false false
|
|
6 4 false false
|
|
6 5 false false
|
|
6 6 true true
|
|
arithmetic test
|
|
string: testfunction cos() {"native"}function sin() {"native"}
|
|
string: function cos() {"native"}function sin() {"native"}
|
|
string: function foo() {"ecmascript"}function bar() {"ecmascript"}
|
|
toString() test
|
|
function max() {"native"}
|
|
function max() {"native"}
|
|
function max() {"native"}
|
|
true
|
|
true
|
|
toObject() test
|
|
caching: true
|
|
length: 2 2
|
|
name: max max
|
|
typeof: function function
|
|
internal prototype is Function.prototype: true true
|
|
external prototype is not set: true
|
|
internal prototypes match: true
|
|
external prototypes match (do not exist): true
|
|
isExtensible: true true
|
|
Math.max test: 9 9
|
|
length: 1 1
|
|
toBoolean() test
|
|
true
|
|
true
|
|
toBuffer() test
|
|
object: function cos() {"native"}
|
|
object: function sin() {"native"}
|
|
toPointer() test
|
|
pointer false
|
|
object false
|
|
number coercion test
|
|
NaN
|
|
NaN
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
call and apply test
|
|
call
|
|
321
|
|
apply
|
|
987
|
|
this coercion test
|
|
function false
|
|
function false
|
|
inherit from Function.prototype test
|
|
testValue
|
|
Object.prototype.toString() test
|
|
[object Function]
|
|
JSON/JX/JC test
|
|
json
|
|
undefined
|
|
undefined
|
|
jx
|
|
{_func:true}
|
|
{_func:true}
|
|
jc
|
|
{"_func":true}
|
|
{"_func":true}
|
|
json
|
|
undefined
|
|
undefined
|
|
jx
|
|
{_func:true}
|
|
{_func:true}
|
|
jc
|
|
{"_func":true}
|
|
{"_func":true}
|
|
json
|
|
{"array":[100,null,200,null,300]}
|
|
{
|
|
"array": [
|
|
100,
|
|
null,
|
|
200,
|
|
null,
|
|
300
|
|
]
|
|
}
|
|
jx
|
|
{lf:{_func:true},nf:{_func:true},array:[100,{_func:true},200,{_func:true},300]}
|
|
{
|
|
lf: {_func:true},
|
|
nf: {_func:true},
|
|
array: [
|
|
100,
|
|
{_func:true},
|
|
200,
|
|
{_func:true},
|
|
300
|
|
]
|
|
}
|
|
jc
|
|
{"lf":{"_func":true},"nf":{"_func":true},"array":[100,{"_func":true},200,{"_func":true},300]}
|
|
{
|
|
"lf": {"_func":true},
|
|
"nf": {"_func":true},
|
|
"array": [
|
|
100,
|
|
{"_func":true},
|
|
200,
|
|
{"_func":true},
|
|
300
|
|
]
|
|
}
|
|
json
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
jx
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
jc
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
json
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
jx
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
jc
|
|
"toJsonRetval"
|
|
"toJsonRetval"
|
|
json
|
|
{"lf":"toJsonRetval","nf":"toJsonRetval","array":[100,"toJsonRetval",200,"toJsonRetval",300]}
|
|
{
|
|
"lf": "toJsonRetval",
|
|
"nf": "toJsonRetval",
|
|
"array": [
|
|
100,
|
|
"toJsonRetval",
|
|
200,
|
|
"toJsonRetval",
|
|
300
|
|
]
|
|
}
|
|
jx
|
|
{lf:"toJsonRetval",nf:"toJsonRetval",array:[100,"toJsonRetval",200,"toJsonRetval",300]}
|
|
{
|
|
lf: "toJsonRetval",
|
|
nf: "toJsonRetval",
|
|
array: [
|
|
100,
|
|
"toJsonRetval",
|
|
200,
|
|
"toJsonRetval",
|
|
300
|
|
]
|
|
}
|
|
jc
|
|
{"lf":"toJsonRetval","nf":"toJsonRetval","array":[100,"toJsonRetval",200,"toJsonRetval",300]}
|
|
{
|
|
"lf": "toJsonRetval",
|
|
"nf": "toJsonRetval",
|
|
"array": [
|
|
100,
|
|
"toJsonRetval",
|
|
200,
|
|
"toJsonRetval",
|
|
300
|
|
]
|
|
}
|
|
json
|
|
0
|
|
0
|
|
jx
|
|
0
|
|
0
|
|
jc
|
|
0
|
|
0
|
|
json
|
|
0
|
|
0
|
|
jx
|
|
0
|
|
0
|
|
jc
|
|
0
|
|
0
|
|
json
|
|
{"lf":null,"nf":null,"array":[100,1,200,3,300]}
|
|
{
|
|
"lf": null,
|
|
"nf": null,
|
|
"array": [
|
|
100,
|
|
1,
|
|
200,
|
|
3,
|
|
300
|
|
]
|
|
}
|
|
jx
|
|
{lf:NaN,nf:NaN,array:[100,1,200,3,300]}
|
|
{
|
|
lf: NaN,
|
|
nf: NaN,
|
|
array: [
|
|
100,
|
|
1,
|
|
200,
|
|
3,
|
|
300
|
|
]
|
|
}
|
|
jc
|
|
{"lf":{"_nan":true},"nf":{"_nan":true},"array":[100,1,200,3,300]}
|
|
{
|
|
"lf": {"_nan":true},
|
|
"nf": {"_nan":true},
|
|
"array": [
|
|
100,
|
|
1,
|
|
200,
|
|
3,
|
|
300
|
|
]
|
|
}
|
|
bound function test
|
|
F: function max() {"native"}
|
|
F type tag: 6
|
|
G: function bound max() {"bound"}
|
|
G type tag: 6
|
|
G.length: 1
|
|
H: function bound bound max() {"bound"}
|
|
H type tag: 6
|
|
H.length: 0
|
|
I: function bound bound bound max() {"bound"}
|
|
I type tag: 6
|
|
I.length: 0
|
|
G(123): 234
|
|
G(123,987): 987
|
|
property get test
|
|
length directly: 2
|
|
toString coerced object (return "length")
|
|
objLengthKey coerced to string: length
|
|
toString coerced object (return "length")
|
|
length through object coercion: 2
|
|
read from length -> 2
|
|
read from prototype -> undefined
|
|
read from name -> max
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
read from length -> 2
|
|
read from testWritable -> 123
|
|
read from testNonWritable -> 234
|
|
read from call -> function call() {"native"}
|
|
read from apply -> function apply() {"native"}
|
|
read from nonexistent -> 123
|
|
property put test
|
|
write to length -> silent error
|
|
write to prototype -> silent error
|
|
write to name -> silent error
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
write to length -> silent error
|
|
write to testWritable -> silent error
|
|
write to testNonWritable -> silent error
|
|
write to call -> silent error
|
|
write to apply -> silent error
|
|
write to nonexistent -> silent error
|
|
write to length -> TypeError
|
|
never here: prototype
|
|
write to name -> TypeError
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
write to length -> TypeError
|
|
never here: testWritable
|
|
write to testNonWritable -> TypeError
|
|
never here: call
|
|
never here: apply
|
|
never here: nonexistent
|
|
property has test
|
|
existence: length -> true
|
|
existence: prototype -> true
|
|
existence: name -> true
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
existence: length -> true
|
|
existence: testWritable -> true
|
|
existence: testNonWritable -> true
|
|
existence: call -> true
|
|
existence: apply -> true
|
|
existence: nonexistent -> true
|
|
property delete test
|
|
delete: length -> false
|
|
delete: prototype -> true
|
|
delete: name -> false
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
delete: length -> false
|
|
delete: testWritable -> true
|
|
delete: testNonWritable -> true
|
|
delete: call -> true
|
|
delete: apply -> true
|
|
delete: nonexistent -> true
|
|
delete: length -> TypeError
|
|
delete: prototype -> true
|
|
delete: name -> TypeError
|
|
toString coerced object (return "length")
|
|
toString coerced object (return "length")
|
|
delete: length -> TypeError
|
|
delete: testWritable -> true
|
|
delete: testNonWritable -> true
|
|
delete: call -> true
|
|
delete: apply -> true
|
|
delete: nonexistent -> true
|
|
non-strict: true
|
|
strict: true
|
|
property accessor this binding test
|
|
getter, strict
|
|
strict getter "this" binding test
|
|
typeof this: function
|
|
this == lightFunc: true
|
|
this === lightFunc: true
|
|
this.name: max
|
|
type tag: 6
|
|
getter retval
|
|
setter, strict
|
|
strict setter "this" binding test
|
|
typeof this: function
|
|
this == lightFunc: true
|
|
this === lightFunc: true
|
|
this.name: max
|
|
type tag: 6
|
|
getter, non-strict
|
|
non-strict getter "this" binding test
|
|
typeof this: function
|
|
this == lightFunc: true
|
|
this === lightFunc: true
|
|
this.name: max
|
|
type tag: 6
|
|
getter retval
|
|
setter, non-strict
|
|
non-strict setter "this" binding test
|
|
typeof this: function
|
|
this == lightFunc: true
|
|
this === lightFunc: true
|
|
this.name: max
|
|
type tag: 6
|
|
property misc test
|
|
isSealed: false
|
|
isFrozen: false
|
|
isExtensible: true
|
|
for-in: "inheritTestProperty"
|
|
Object.getOwnPropertyNames: "length"
|
|
Object.getOwnPropertyNames: "name"
|
|
lightFunc.name matches regexp: false
|
|
censored lightFunc.name: max_
|
|
traceback test
|
|
URIError: invalid input
|
|
at [anon] (duk_bi_global.c:NNN) internal
|
|
at decodeURIComponent () native strict preventsyield
|
|
at tracebackTest (TESTCASE:NNN)
|
|
at global (TESTCASE:NNN) preventsyield
|
|
Duktape.act() test
|
|
Error: for traceback
|
|
at callback (TESTCASE:NNN) preventsyield
|
|
at forEach () native strict preventsyield
|
|
at duktapeActTest (TESTCASE:NNN)
|
|
at global (TESTCASE:NNN) preventsyield
|
|
-1 ["lineNumber","pc","function"] act
|
|
-2 ["lineNumber","pc","function"] callback
|
|
-3 ["lineNumber","pc","function"] forEach
|
|
-4 ["lineNumber","pc","function"] duktapeActTest
|
|
-5 ["lineNumber","pc","function"] global
|
|
exempt built-ins test
|
|
Math.max (is lightfunc): function false
|
|
eval: function false
|
|
yield: function false
|
|
resume: function false
|
|
require: function false
|
|
Object: function false
|
|
Function: function false
|
|
Array: function false
|
|
String: function false
|
|
Boolean: function false
|
|
Number: function false
|
|
Date: function false
|
|
RegExp: function false
|
|
Error: function false
|
|
EvalError: function false
|
|
RangeError: function false
|
|
ReferenceError: function false
|
|
SyntaxError: function false
|
|
TypeError: function false
|
|
URIError: function false
|
|
Proxy: function false
|
|
Duktape.Pointer: function false
|
|
Duktape.Thread: function false
|
|
Duktape.Logger: function false
|
|
Duktape: object false
|
|
Math: object false
|
|
JSON: object false
|
|
getOwnPropertyNames() test
|
|
length,name
|
|
length
|
|
name
|
|
getOwnPropertyDescriptor() test
|
|
key: name
|
|
value: string cos
|
|
writable: boolean false
|
|
enumerable: boolean false
|
|
configurable: boolean false
|
|
key: length
|
|
value: number 1
|
|
writable: boolean false
|
|
enumerable: boolean false
|
|
configurable: boolean false
|
|
key: nonExistent
|
|
no descriptor
|
|
hasOwnProperty() test
|
|
true
|
|
true
|
|
false
|
|
false
|
|
propertyIsEnumerable() test
|
|
false
|
|
false
|
|
false
|
|
false
|
|
defineProperty() test
|
|
nonexistent: success
|
|
name: TypeError
|
|
length: success
|
|
defineProperties() test
|
|
nonexistent: success
|
|
name: TypeError
|
|
length: success
|
|
getPrototypeOf() test
|
|
true
|
|
true
|
|
setPrototypeOf() test
|
|
TypeError
|
|
never here
|
|
TypeError
|
|
never here
|
|
success
|
|
success
|
|
success
|
|
success
|
|
Array built-in test
|
|
Array: object [{_func:true}]
|
|
new Array: object [{_func:true}]
|
|
isArray: boolean false
|
|
toString: string "[object Function]"
|
|
valueOf: function {_func:true}
|
|
concat: object [{_func:true}]
|
|
pop: TypeError
|
|
push: TypeError
|
|
sort: function {_func:true}
|
|
splice: TypeError
|
|
reverse: function {_func:true}
|
|
shift: TypeError
|
|
unshift: TypeError
|
|
every: TypeError
|
|
some: TypeError
|
|
forEach: TypeError
|
|
map: TypeError
|
|
filter: TypeError
|
|
reduce: TypeError
|
|
reduceRight: TypeError
|
|
Boolean built-in test
|
|
Boolean: boolean true
|
|
new Boolean: object true
|
|
toString: TypeError
|
|
valueOf: TypeError
|
|
Duktape.Buffer built-in test
|
|
Duktape.Buffer: TypeError
|
|
new Duktape.buffer: TypeError
|
|
toString: TypeError
|
|
valueOf: TypeError
|
|
Date built-in test
|
|
Date: string "string"
|
|
new Date: string "object"
|
|
parse: number NaN
|
|
UTC: number NaN
|
|
now: string "number"
|
|
toString: TypeError
|
|
valueOf: TypeError
|
|
toDateString: TypeError
|
|
toTimeString: TypeError
|
|
toLocaleString: TypeError
|
|
toLocaleDateString: TypeError
|
|
toLocaleTimeString: TypeError
|
|
getTime: TypeError
|
|
getFullYear: TypeError
|
|
getUTCFullYear: TypeError
|
|
getMonth: TypeError
|
|
getUTCFullMonth: TypeError
|
|
getDate: TypeError
|
|
getUTCDate: TypeError
|
|
getDay: TypeError
|
|
getUTCDay: TypeError
|
|
getHours: TypeError
|
|
getUTCHours: TypeError
|
|
getMinutes: TypeError
|
|
getUTCMinutes: TypeError
|
|
getSeconds: TypeError
|
|
getUTCSeconds: TypeError
|
|
getMilliseconds: TypeError
|
|
getUTCMilliseconds: TypeError
|
|
getTimezoneOffset: TypeError
|
|
setTime: TypeError
|
|
setMilliseconds: TypeError
|
|
setUTCMilliseconds: TypeError
|
|
setSeconds: TypeError
|
|
setUTCSeconds: TypeError
|
|
setMinutes: TypeError
|
|
setUTCMinutes: TypeError
|
|
setHours: TypeError
|
|
setUTCHours: TypeError
|
|
setDate: TypeError
|
|
setUTCDate: TypeError
|
|
setMonth: TypeError
|
|
setUTCMonth: TypeError
|
|
setFullYear: TypeError
|
|
setUTCFullYear: TypeError
|
|
toUTCString: TypeError
|
|
toISOString: TypeError
|
|
toJSON: TypeError
|
|
setYear: TypeError
|
|
getYear: TypeError
|
|
Duktape built-in test
|
|
info: number 6
|
|
act: undefined undefined
|
|
gc: boolean true
|
|
fin-get: undefined undefined
|
|
fin-set: undefined undefined
|
|
encdec-hex: string "function cos() {\"native\"}"
|
|
dec-hex: TypeError
|
|
compact: function {_func:true}
|
|
Error built-in test
|
|
Error: object {}
|
|
new Error: object {}
|
|
toString: string "cos"
|
|
valueOf: function {_func:true}
|
|
Function built-in test
|
|
Function: function {_func:true}
|
|
new Function: function {_func:true}
|
|
toString: string "function cos() {\"native\"}"
|
|
valueOf: function {_func:true}
|
|
global built-in test
|
|
eval: function {_func:true}
|
|
parseInt: number NaN
|
|
parseFloat: number NaN
|
|
isNaN: boolean true
|
|
isFinite: boolean false
|
|
decodeURI: string "function cos() {\"native\"}"
|
|
decodeURIComponent: string "function cos() {\"native\"}"
|
|
encodeURI: string "string"
|
|
encodeURIComponent: string "string"
|
|
escape: string "string"
|
|
unescape: string "string"
|
|
JSON built-in test
|
|
parse: SyntaxError
|
|
stringify: undefined undefined
|
|
Duktape.Logger built-in test
|
|
Duktape.Logger: TypeError
|
|
new Duktape.Logger: object {}
|
|
fmt: TypeError
|
|
raw: TypeError
|
|
TIMESTAMP INF test: My light func is: function cos() {"native"}
|
|
Math built-in test
|
|
abs: number NaN
|
|
acos: number NaN
|
|
asin: number NaN
|
|
atan: number NaN
|
|
atan2: number NaN
|
|
ceil: number NaN
|
|
cos: number NaN
|
|
exp: number NaN
|
|
floor: number NaN
|
|
log: number NaN
|
|
max: number NaN
|
|
min: number NaN
|
|
pow: number NaN
|
|
random: string "number"
|
|
round: number NaN
|
|
sin: number NaN
|
|
sqrt: number NaN
|
|
tan: number NaN
|
|
Number built-in test
|
|
Number: number NaN
|
|
new Number: object NaN
|
|
toString: TypeError
|
|
toLocaleString: TypeError
|
|
valueOf: TypeError
|
|
toFixed: TypeError
|
|
toExponential: TypeError
|
|
toPrecision: TypeError
|
|
Object built-in test
|
|
Object: function {_func:true}
|
|
new Object: function {_func:true}
|
|
getPrototypeOf: function {_func:true}
|
|
setPrototypeOf: function {_func:true}
|
|
seal: function {_func:true}
|
|
freeze: function {_func:true}
|
|
preventExtensions: function {_func:true}
|
|
isSealed: boolean true
|
|
isFrozen: boolean true
|
|
isExtensible: boolean false
|
|
toString: string "[object Function]"
|
|
toLocaleString: string "[object Function]"
|
|
valueOf: function {_func:true}
|
|
isPrototypeOf: boolean false
|
|
Duktape.Pointer built-in test
|
|
false
|
|
false
|
|
toString: TypeError
|
|
valueOf: TypeError
|
|
Proxy built-in test
|
|
get
|
|
this: object false [object Object]
|
|
target: function false [object Function]
|
|
key: string name
|
|
proxy.name: cos
|
|
get
|
|
this: object false [object Object]
|
|
target: function false [object Function]
|
|
key: string length
|
|
proxy.length: 1
|
|
get
|
|
this: object false [object Object]
|
|
target: function false [object Function]
|
|
key: string nonExistent
|
|
proxy.nonExistent: dummy
|
|
proxy.foo: bar
|
|
proxy.nonExistent: undefined
|
|
RegExp built-in test
|
|
RegExp: object {}
|
|
new RegExp: object {}
|
|
exec: TypeError
|
|
test: TypeError
|
|
toString: TypeError
|
|
valueOf: function {_func:true}
|
|
String built-in test
|
|
String: string "[object Function]"
|
|
new String: string "[object Function]"
|
|
new String: string "object"
|
|
fromCharCode: string "\x00"
|
|
toString: TypeError
|
|
valueOf: TypeError
|
|
charAt: string "["
|
|
charCodeAt: number 91
|
|
concat: string "[object Function][object Function]"
|
|
indexOf: number 0
|
|
lastIndexOf: number 0
|
|
localeCompare: number 0
|
|
match: object ["o"]
|
|
replace: string "undefined"
|
|
search: number 1
|
|
slice: string "[object Function]"
|
|
split: object ["",""]
|
|
substring: string "[object Function]"
|
|
toLowerCase: string "[object function]"
|
|
toLocaleLowerCase: string "[object function]"
|
|
toUpperCase: string "[OBJECT FUNCTION]"
|
|
toLocaleUpperCase: string "[OBJECT FUNCTION]"
|
|
trim: string "[object Function]"
|
|
substr: string "[object Function]"
|
|
Duktape.Thread built-in test
|
|
TypeError
|
|
TypeError
|
|
Object .valueOf() test
|
|
true
|
|
function function
|
|
true
|
|
6
|
|
6
|
|
|