|
|
|
import pytest
|
|
|
|
|
|
|
|
from clusterview.colors import Color
|
|
|
|
from clusterview.points import Attribute, Point, PointSet
|
|
|
|
|
|
|
|
|
|
|
|
def test_empty():
|
|
|
|
point_set = PointSet(3, 100, 100)
|
|
|
|
|
|
|
|
assert point_set.empty()
|
|
|
|
|
|
|
|
|
|
|
|
def test_add_to_point_set():
|
|
|
|
point_set = PointSet(3, 100, 100)
|
|
|
|
|
|
|
|
point_set.add_point(1, 2, Color.GREY)
|
|
|
|
|
|
|
|
points = list(point_set.points)
|
|
|
|
|
|
|
|
p = Point(1, 2, Color.GREY, 3, 100, 100)
|
|
|
|
assert len(points) == 1
|
|
|
|
assert points[0] == p
|
|
|
|
|
|
|
|
|
|
|
|
def test_add_to_point_set_with_attributes():
|
|
|
|
attribute = Attribute("thing", 1)
|
|
|
|
|
|
|
|
point_set = PointSet(3, 100, 100)
|
|
|
|
point_set.add_point(2, 3, Color.GREY, attrs=[attribute])
|
|
|
|
|
|
|
|
points = list(point_set.points)
|
|
|
|
|
|
|
|
assert len(points) == 1
|
|
|
|
assert len(points[0].attributes) == 1
|
|
|
|
|
|
|
|
|
|
|
|
def test_remove_point_exact_click():
|
|
|
|
attribute = Attribute("thing", 1)
|
|
|
|
|
|
|
|
point_set = PointSet(8, 100, 100)
|
|
|
|
point_set.add_point(4, 4, Color.GREY, attrs=[attribute])
|
|
|
|
|
|
|
|
point_set.remove_point(4, 4)
|
|
|
|
|
|
|
|
points = list(point_set.points)
|
|
|
|
|
|
|
|
assert len(points) == 0
|
|
|
|
|
|
|
|
|
|
|
|
def test_remove_point_bounding_box():
|
|
|
|
"""
|
|
|
|
This test checks the bounding box hit heuristic.
|
|
|
|
"""
|
|
|
|
attribute = Attribute("thing", 1)
|
|
|
|
|
|
|
|
point_set = PointSet(8, 100, 100)
|
|
|
|
point_set.add_point(4, 4, Color.GREY, attrs=[attribute])
|
|
|
|
|
|
|
|
# The click-point (2, 1) will be inside of our point size 8
|
|
|
|
# bounding box.
|
|
|
|
point_set.remove_point(4, 4)
|
|
|
|
|
|
|
|
points = list(point_set.points)
|
|
|
|
|
|
|
|
assert len(points) == 0
|
|
|
|
|
|
|
|
|
|
|
|
def test_clear_all_selected_points():
|
|
|
|
point_set = PointSet(8, 100, 100)
|
|
|
|
point_set.add_point(4, 4, Color.GREY)
|
|
|
|
point_set.add_point(5, 5, Color.GREY)
|
|
|
|
|
|
|
|
for p in point_set.points:
|
|
|
|
p.select()
|
|
|
|
|
|
|
|
selected = 0
|
|
|
|
|
|
|
|
for p in point_set.points:
|
|
|
|
if p.selected:
|
|
|
|
selected += 1
|
|
|
|
|
|
|
|
assert selected == 2
|
|
|
|
|
|
|
|
point_set.clear_selection()
|
|
|
|
|
|
|
|
unselected = 0
|
|
|
|
|
|
|
|
for p in point_set.points:
|
|
|
|
if not p.selected:
|
|
|
|
unselected += 1
|
|
|
|
|
|
|
|
assert unselected == 2
|