This commit is contained in:
2025-12-05 15:36:49 -06:00
parent f5734e0139
commit f29603b73b

71
tests/rtree.cm Normal file
View File

@@ -0,0 +1,71 @@
var rtree = use('rtree')
var RTree = rtree
return {
basic_add_query: function() {
var tree = new 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"
var res2 = tree.query({x: 50, y: 50, w: 10, h: 10})
if (res2.length != 0) throw "Expected 0 items, got " + text(res2.length)
},
size_check: function() {
var tree = new 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)
},
delete_item: function() {
var tree = new 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"
var res = tree.query({x: 0, y: 0, w: 100, h: 100})
if (res.length != 0) throw "Query returned deleted item"
},
has_item: function() {
var tree = new RTree()
var item = {x: 10, y: 10, w: 10, h: 10}
tree.add(item)
if (!tree.has(item)) throw "has() returned false"
var item2 = {x: 10, y: 10, w: 10, h: 10}
if (tree.has(item2)) throw "has() returned true for different object"
},
forEach_test: function() {
var tree = new RTree()
var items = []
for(var i=0; i<10; i++) {
var item = {x: i*10, y: 0, w: 5, h: 5, idx: i}
items.push(item)
tree.add(item)
}
var count = 0
tree.forEach(function(item) {
count++
})
if (count != 10) throw "forEach counted " + count
},
values_test: function() {
var tree = new RTree()
tree.add({x:0,y:0,w:1,h:1})
var vals = tree.values()
if (!Array.isArray(vals)) throw "values() did not return array"
if (vals.length != 1) throw "values() length mismatch"
}
}