Files
cell-rtree/tests/rtree.cm
2026-01-21 09:04:48 -06:00

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"
}
}