add rc trace"
This commit is contained in:
@@ -3449,4 +3449,62 @@ return {
|
||||
var result = extract(text, /hello/i)
|
||||
if (result[0] != "Hello") throw "extract regex case insensitive failed"
|
||||
},
|
||||
|
||||
// ============================================================================
|
||||
// GC PATHOLOGICAL CASES
|
||||
// ============================================================================
|
||||
|
||||
test_gc_cycle_object_self: function() {
|
||||
var obj = {name: "root"}
|
||||
obj.self = obj
|
||||
if (obj.self != obj) throw "self cycle failed"
|
||||
},
|
||||
|
||||
test_gc_cycle_array_self: function() {
|
||||
var arr = []
|
||||
push(arr, arr)
|
||||
if (arr[0] != arr) throw "array self cycle failed"
|
||||
},
|
||||
|
||||
test_gc_cycle_object_array_pair: function() {
|
||||
var obj = {kind: "node"}
|
||||
var arr = [obj]
|
||||
obj.arr = arr
|
||||
if (obj.arr[0] != obj) throw "object/array cycle failed"
|
||||
},
|
||||
|
||||
test_gc_shared_references: function() {
|
||||
var shared = {value: 42}
|
||||
var a = {ref: shared}
|
||||
var b = {ref: shared}
|
||||
if (a.ref != shared || b.ref != shared) throw "shared reference failed"
|
||||
},
|
||||
|
||||
test_gc_object_key_cycle: function() {
|
||||
var k = {}
|
||||
var v = {label: "value"}
|
||||
var o = {}
|
||||
o[k] = v
|
||||
v.back = o
|
||||
if (o[k].back != o) throw "object key cycle failed"
|
||||
},
|
||||
|
||||
test_gc_object_text_key_mix: function() {
|
||||
var obj = {}
|
||||
var key = "alpha"
|
||||
var inner = {token: "x"}
|
||||
obj[key] = inner
|
||||
obj["beta"] = [inner, obj]
|
||||
if (obj.alpha.token != "x") throw "text key value failed"
|
||||
if (obj.beta[1] != obj) throw "text key cycle failed"
|
||||
},
|
||||
|
||||
test_gc_array_object_key_mix: function() {
|
||||
var obj = {}
|
||||
var arr = [obj]
|
||||
obj[arr] = "anchor"
|
||||
obj.self = obj
|
||||
if (obj[arr] != "anchor") throw "array object key failed"
|
||||
if (arr[0] != obj) throw "array object mix failed"
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user