-
-
Notifications
You must be signed in to change notification settings - Fork 44.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bhavesh9908/Building a KD-Tree from Points #11547
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,46 +8,41 @@ | |
|
||
|
||
@pytest.mark.parametrize( | ||
("num_points", "cube_size", "num_dimensions", "depth", "expected_result"), | ||
("num_points", "cube_size", "num_dimensions", "expected_result"), | ||
[ | ||
(0, 10.0, 2, 0, None), # Empty points list | ||
(10, 10.0, 2, 2, KDNode), # Depth = 2, 2D points | ||
(10, 10.0, 3, -2, KDNode), # Depth = -2, 3D points | ||
(0, 10.0, 2, None), # Empty points list | ||
(10, 10.0, 2, KDNode), # 2D points | ||
(10, 10.0, 3, KDNode), # 3D points | ||
], | ||
) | ||
def test_build_kdtree(num_points, cube_size, num_dimensions, depth, expected_result): | ||
def test_build_kdtree(num_points, cube_size, num_dimensions, expected_result): | ||
""" | ||
Test that KD-Tree is built correctly. | ||
|
||
Cases: | ||
- Empty points list. | ||
- Positive depth value. | ||
- Negative depth value. | ||
- Valid points list with correct dimensions. | ||
""" | ||
points = ( | ||
hypercube_points(num_points, cube_size, num_dimensions).tolist() | ||
if num_points > 0 | ||
else [] | ||
) | ||
|
||
kdtree = build_kdtree(points, depth=depth) | ||
kdtree = build_kdtree(points) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. you are always calling |
||
|
||
if expected_result is None: | ||
# Empty points list case | ||
assert kdtree is None, f"Expected None for empty points list, got {kdtree}" | ||
else: | ||
# Check if root node is not None | ||
# Check if KD-Tree is built correctly | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The original comment is: |
||
assert kdtree is not None, "Expected a KDNode, got None" | ||
|
||
# Check if root has correct dimensions | ||
assert ( | ||
len(kdtree.point) == num_dimensions | ||
), f"Expected point dimension {num_dimensions}, got {len(kdtree.point)}" | ||
|
||
# Check that the tree is balanced to some extent (simplistic check) | ||
assert isinstance( | ||
kdtree, KDNode | ||
), f"Expected KDNode instance, got {type(kdtree)}" | ||
assert ( | ||
len(kdtree.point) == num_dimensions | ||
), f"Expected point dimension {num_dimensions}, got {len(kdtree.point)}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure, is this just reordering tests? |
||
|
||
|
||
def test_nearest_neighbour_search(): | ||
|
@@ -95,6 +90,4 @@ def test_edge_cases(): | |
|
||
|
||
if __name__ == "__main__": | ||
import pytest | ||
|
||
pytest.main() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi,
I have already implemented this in #11532
Is there something wrong with the test?