91 lines
2.6 KiB
Plaintext
91 lines
2.6 KiB
Plaintext
var rtree = use('rtree')
|
|
var RTree = rtree
|
|
|
|
return {
|
|
test_add_query_match: function() {
|
|
var tree = RTree()
|
|
var item1 = {x: 10, y: 10, w: 10, h: 10, id: 1}
|
|
tree.add(item1)
|
|
|
|
var res = tree.query({x: 0, y: 0, w: 100, h: 100})
|
|
if (res.length != 1) throw "Expected 1 item, got " + text(res.length)
|
|
if (res[0].id != 1) throw "Item ID mismatch"
|
|
},
|
|
|
|
test_query_miss: function() {
|
|
var tree = RTree()
|
|
var item1 = {x: 10, y: 10, w: 10, h: 10, id: 1}
|
|
tree.add(item1)
|
|
|
|
var res2 = tree.query({x: 50, y: 50, w: 10, h: 10})
|
|
if (res2.length != 0) throw "Expected 0 items, got " + text(res2.length)
|
|
},
|
|
|
|
test_size: function() {
|
|
var tree = RTree()
|
|
tree.add({x: 0, y: 0, w: 1, h: 1})
|
|
tree.add({x: 2, y: 2, w: 1, h: 1})
|
|
if (tree.size != 2) throw "Expected size 2, got " + text(tree.size)
|
|
},
|
|
|
|
test_delete: function() {
|
|
var tree = RTree()
|
|
var item = {x: 10, y: 10, w: 10, h: 10}
|
|
tree.add(item)
|
|
if (tree.size != 1) throw "Add failed"
|
|
|
|
tree.delete(item)
|
|
if (tree.size != 0) throw "Delete failed"
|
|
},
|
|
|
|
test_delete_query_empty: function() {
|
|
var tree = RTree()
|
|
var item = {x: 10, y: 10, w: 10, h: 10}
|
|
tree.add(item)
|
|
tree.delete(item)
|
|
|
|
var res = tree.query({x: 0, y: 0, w: 100, h: 100})
|
|
if (res.length != 0) throw "Query returned deleted item"
|
|
},
|
|
|
|
test_has_true: function() {
|
|
var tree = RTree()
|
|
var item = {x: 10, y: 10, w: 10, h: 10}
|
|
tree.add(item)
|
|
if (!tree.has(item)) throw "has() returned false"
|
|
},
|
|
|
|
test_has_false: function() {
|
|
var tree = RTree()
|
|
var item = {x: 10, y: 10, w: 10, h: 10}
|
|
tree.add(item)
|
|
|
|
var item2 = {x: 10, y: 10, w: 10, h: 10}
|
|
if (tree.has(item2)) throw "has() returned true for different object"
|
|
},
|
|
|
|
test_forEach: function() {
|
|
var tree = RTree()
|
|
var items = []
|
|
for(var i=0; i<10; i++) {
|
|
var item = {x: i*10, y: 0, w: 5, h: 5, idx: i}
|
|
push(items, item)
|
|
tree.add(item)
|
|
}
|
|
|
|
var count = 0
|
|
tree.forEach(function(item) {
|
|
count++
|
|
})
|
|
if (count != 10) throw "forEach counted " + count
|
|
},
|
|
|
|
test_values: function() {
|
|
var tree = RTree()
|
|
tree.add({x:0,y:0,w:1,h:1})
|
|
var vals = tree.values()
|
|
if (!is_array(vals)) throw "values() did not return array"
|
|
if (vals.length != 1) throw "values() length mismatch"
|
|
}
|
|
}
|