コード例 #1
0
def test_contains_point_simple_quad_tree():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))

    assert q1.contains_point((150, 150)) is True
コード例 #2
0
def test_contains_complex_tree():
    """Picture 4 to picture 5 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    assert q1.__contains__('Parinita') is True
    assert q1.__contains__('Grace') is True
    assert q1.__contains__('Rohan') is True
    assert q1.__contains__('Parimal') is True
    assert q1.__contains__('Emily') is False

    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (40, 40))
    d1.insert('Rohan', (40, 50))
    d1.insert('Grace', (30, 60))
    d1.insert('Parimal', (120, 180))

    assert d1.__contains__('Parinita') is True
    assert d1.__contains__('Grace') is True
    assert d1.__contains__('Rohan') is True
    assert d1.__contains__('Parimal') is True
    assert d1.__contains__('Emily') is False
コード例 #3
0
def test_insert_complex_nested_example():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    q1.insert('Bob', (190, 30))

    assert q1._name is None
    assert q1._point is None
    assert q1._centre == (100, 100)

    assert q1._nw._centre == (50, 50)
    assert q1._nw._point is None
    assert q1._nw._name is None

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point is None
    assert q1._ne._name is None

    assert q1._ne._ne._centre == (175, 25)
    assert q1._ne._ne._point is None
    assert q1._ne._ne._name is None
    assert q1._ne._ne._nw is None
    assert q1._ne._ne._ne is None
    assert q1._ne._ne._sw is not None
    assert q1._ne._ne._se is not None

    assert q1._ne._ne._sw._name == 'Parinita'
    assert q1._ne._ne._sw._point == (170, 30)

    assert q1._ne._ne._se._name == 'Bob'
    assert q1._ne._ne._se._point == (190, 30)
コード例 #4
0
def test_find_name_complex_tree():
    """Picture 4 to picture 5 in the handout"""
    '''QuadTree'''
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    assert q1._find_name('Parinita') == (50, 50)
    assert q1._find_name('Grace') == (120, 80)
    assert q1._find_name('Rohan') == (150, 150)
    assert q1._find_name('Parimal') == (120, 180)
    assert q1._find_name('Emily') is None
    '''TwoDTree'''
    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (40, 40))
    d1.insert('Rohan', (40, 50))
    d1.insert('Grace', (30, 60))
    d1.insert('Parimal', (120, 180))

    assert d1._find_name('Parinita') == (40, 40)
    assert d1._find_name('Grace') == (30, 60)
    assert d1._find_name('Rohan') == (40, 50)
    assert d1._find_name('Parimal') == (120, 180)
    assert d1._find_name('Emily') is None
コード例 #5
0
def test_remove_point_complex_quad_tree():
    """Picture 1 to picture 2 in the handout"""
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    q1.remove_point((150, 150))

    assert q1._name is None
    assert q1._point is None
    assert q1._centre == (100, 100)

    assert q1._nw._centre == (50, 50)
    assert q1._nw._point == (50, 50)
    assert q1._nw._name == 'Parinita'

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point == (120, 80)
    assert q1._ne._name == 'Grace'

    assert q1._se._centre == (150, 150)
    assert q1._se._point == (120, 180)
    assert q1._se._name == 'Parimal'
    assert q1._se._nw is None
    assert q1._se._ne is None
    assert q1._se._sw is None
    assert q1._se._se is None
コード例 #6
0
def test_insert_player_in_existing_point_complex_quad_tree():
    """Picture 4 to picture 5 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    with pytest.raises(trees.OutOfBoundsError):
        q1.insert('Tony', (120, 180))

    assert q1._name is None
    assert q1._point is None

    assert q1._nw._centre == (50, 50)
    assert q1._nw._point == (50, 50)
    assert q1._nw._name == 'Parinita'

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point == (120, 80)
    assert q1._ne._name == 'Grace'

    assert q1._se._centre == (150, 150)
    assert q1._se._point is None
    assert q1._se._name is None

    assert q1._se._nw._centre == (125, 125)
    assert q1._se._nw._point == (150, 150)
    assert q1._se._nw._name == 'Rohan'

    assert q1._se._sw._centre == (125, 175)
    assert q1._se._sw._point == (120, 180)
    assert q1._se._sw._name == 'Parimal'
コード例 #7
0
def test_insert_splitting_a_child_quad_tree():
    """Picture 4 to picture 5 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    assert q1._name is None
    assert q1._point is None

    assert q1._nw._centre == (50, 50)
    assert q1._nw._point == (50, 50)
    assert q1._nw._name == 'Parinita'

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point == (120, 80)
    assert q1._ne._name == 'Grace'

    assert q1._se._centre == (150, 150)
    assert q1._se._point is None
    assert q1._se._name is None

    assert q1._se._nw._centre == (125, 125)
    assert q1._se._nw._point == (150, 150)
    assert q1._se._nw._name == 'Rohan'

    assert q1._se._sw._centre == (125, 175)
    assert q1._se._sw._point == (120, 180)
    assert q1._se._sw._name == 'Parimal'
コード例 #8
0
def test_names_in_range_two_names():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    assert q1.names_in_range((50, 50), 'SE', 50) == ['Rohan', 'Grace']
コード例 #9
0
def test_names_in_range_two_names_deeper_quad_tree():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    assert q1.names_in_range((100, 90), 'NW', 20) == ['Grace']
コード例 #10
0
def test_move__player_out_of_board():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    with pytest.raises(trees.OutOfBoundsError):
        q1.move('Parinita', 'E', 50)
コード例 #11
0
def test_move__name_doesnt_exist_on_board():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    res = q1.move('Tony', 'E', 20)
    assert res is None
コード例 #12
0
def test_find_point_simple_quadtree():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    q1.insert('Bob', (190, 30))

    assert q1._find_point((80, 90)) == 'Grace'
    assert q1._find_point((190, 30)) == 'Bob'
コード例 #13
0
def test_find_point_doesnt_exist():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    q1.insert('Bob', (190, 30))

    assert q1._find_point((0, 0)) is None
    assert q1._find_point((60, 61)) is None
コード例 #14
0
def test_contains_point_complex_quad_tree():
    """Picture 4 to picture 5 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))
    q1.insert('Parimal', (120, 180))

    assert q1.contains_point((120, 180)) is True
    assert q1.contains_point((120, 181)) is False
コード例 #15
0
def test_insert_duplicate_names():
    q1 = trees.QuadTree((100, 100))
    #se corner
    q1.insert('Parinita', (90, 80))
    #sw corner
    q1.insert('Parinita', (60, 80))

    assert q1._nw._se._se._name == 'Parinita'
    assert q1._nw._se._se._point == (90, 80)

    assert q1._nw._se._sw._name == 'Parinita'
    assert q1._nw._se._sw._point == (60, 80)
コード例 #16
0
def test_insert_empty_quad_tree():
    """Picture 1 to picture 2 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))

    assert q1._name == 'Parinita'
    assert q1._point == (50, 50)

    # assert getattr(q1, '_nw') is None
    assert q1._nw is None
    assert q1._ne is None
    assert q1._sw is None
    assert q1._se is None
コード例 #17
0
def test_insert_player_in_existing_point_simple_quad_tree():
    """Picture 1 to picture 2 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))

    with pytest.raises(trees.OutOfBoundsError):
        q1.insert('Grace', (50, 50))

    assert q1._name == 'Parinita'
    assert q1._point == (50, 50)
    assert q1._nw is None
    assert q1._ne is None
    assert q1._sw is None
    assert q1._se is None
コード例 #18
0
def test_contains_no_player_in_tree():
    """No player in the tree with that name"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))

    assert q1.__contains__('Tony') is False

    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (50, 50))
    d1.insert('Grace', (120, 80))
    d1.insert('Rohan', (150, 150))
    assert d1.__contains__('Tony') is False
コード例 #19
0
def test_find_name_no_name_in_tree():
    '''QuadTree'''
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))

    assert q1._find_name('Tony') is None
    '''TwoDTree'''
    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (50, 50))
    d1.insert('Grace', (120, 80))
    d1.insert('Rohan', (150, 150))
    assert d1._find_name('Tony') is None
コード例 #20
0
def test_cray():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (81, 90))
    q1.insert('Rohan', (62, 90))
    q1.insert('Parimal', (82, 90))
    #fixme
    q1.insert('Grace', (80, 90))
    q1.insert('Vaishali', (80, 150))

    assert q1._find_point((80, 90)) == 'Grace'
    assert q1._find_point((81, 90)) == 'Grace'
    assert q1._find_point((82, 90)) == 'Parimal'
    assert q1._find_point((80, 150)) == 'Vaishali'
コード例 #21
0
def test_insert_single_quad_tree():
    """Picture 2 to picture 3 in the handout"""
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))

    assert q1._name is None
    assert q1._point is None

    assert q1._nw._centre == (50, 50)
    assert q1._nw._point == (50, 50)
    assert q1._nw._name == 'Parinita'

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point == (120, 80)
    assert q1._ne._name == 'Grace'
コード例 #22
0
def test_contains_simple_tree():
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Rohan', (150, 150))

    assert q1.__contains__('Parinita') is True
    assert q1.__contains__('Grace') is True
    assert q1.__contains__('Rohan') is True

    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (50, 50))
    d1.insert('Grace', (120, 80))
    d1.insert('Rohan', (150, 150))
    assert d1.__contains__('Parinita') is True
    assert d1.__contains__('Grace') is True
    assert d1.__contains__('Rohan') is True
コード例 #23
0
def test_names_in_range_complex_quad_tree():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (175, 25))
    q1.insert('Grace', (20, 25))
    q1.insert('Rohan', (180, 25))
    q1.insert('Parimal', (176, 100))
    q1.insert('Tony', (75, 150))

    assert q1.names_in_range((80, 120), 'SW', 40) == ['Tony']
    assert q1.names_in_range((170, 30), 'NE', 6) == ['Parinita']

    assert q1.names_in_range((180, 25), 'NE', 1) == ['Rohan']
    assert q1.names_in_range((180, 25), 'NW', 1) == ['Rohan']
    assert q1.names_in_range((180, 25), 'SE', 1) == ['Rohan']
    assert q1.names_in_range((180, 25), 'SW', 1) == ['Rohan']

    assert q1.names_in_range((180, 25), 'NW', 5) == ['Rohan', 'Parinita'] or \
           q1.names_in_range((180, 25), 'NW', 5) == ['Parinita', 'Rohan']
コード例 #24
0
def test_find_name_duplicate():
    """ Testing how the tree handles duplicates"""
    '''QuadTree'''
    q1 = trees.QuadTree((100, 100))
    q1.insert('Rohan', (50, 50))
    q1.insert('Parinita', (40, 40))
    q1.insert('Grace', (75, 89))
    q1.insert('Parimal', (50, 51))

    q1.insert('Rohan', (120, 30))

    assert q1._find_name('Rohan') == (50, 50)

    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (40, 40))
    d1.insert('Rohan', (40, 50))
    d1.insert('Rohan', (41, 40))
    d1.insert('Grace', (30, 60))
    d1.insert('Rohan', (120, 180))

    assert d1._find_name('Rohan') == (40, 50)
コード例 #25
0
def test_insert_small_pixels():
    q1 = trees.QuadTree((1, 1))
    q1.insert('Parinita', (1, 0))  #ne
    q1.insert('Rohan', (0, 1))  #sw
    q1.insert('Grace', (0, 0))  #nw
    q1.insert('Koby', (1, 1))  #se

    assert q1._centre == (1, 1)
    assert q1._nw._centre == (0, 0)

    assert q1._nw._sw._point == (0, 1)
    assert q1._nw._sw._name == 'Rohan'

    assert q1._nw._ne._point == (1, 0)
    assert q1._nw._ne._name == 'Parinita'

    assert q1._nw._nw._point == (0, 0)
    assert q1._nw._nw._name == 'Grace'

    assert q1._nw._se._point == (1, 1)
    assert q1._nw._se._name == 'Koby'
コード例 #26
0
def test_find_name_simple_tree():
    '''QuadTree'''
    q1 = trees.QuadTree((100, 100))
    q1.insert('Parinita', (50, 50))
    #ne insert
    q1.insert('Grace', (120, 80))
    #se insert
    q1.insert('Rohan', (150, 150))

    assert q1._find_name('Parinita') == (50, 50)
    assert q1._find_name('Grace') == (120, 80)
    assert q1._find_name('Rohan') == (150, 150)
    '''TwoDTree'''
    d1 = trees.TwoDTree((0, 0), (200, 200))
    d1.insert('Parinita', (50, 50))
    #gt insert
    d1.insert('Grace', (120, 80))
    #gt gt insert
    d1.insert('Rohan', (150, 150))

    assert d1._find_name('Parinita') == (50, 50)
    assert d1._find_name('Grace') == (120, 80)
    assert d1._find_name('Rohan') == (150, 150)
コード例 #27
0
def test_remove_simple_quad_tree():
    """Testing remove with Picture 2 to picture 3 in the handout"""
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (50, 50))
    q1.insert('Grace', (120, 80))
    q1.insert('Parimal', (120, 180))

    q1.remove('Parinita')

    assert q1._name is None
    assert q1._point is None
    assert q1._centre == (100, 100)

    assert q1._nw is None

    assert q1._ne._centre == (150, 50)
    assert q1._ne._point == (120, 80)
    assert q1._ne._name == 'Grace'

    assert q1._se._centre == (150, 150)
    assert q1._se._point == (120, 180)
    assert q1._se._name == 'Parimal'
コード例 #28
0
def test_remove_point_not_promoting_bc_not_a_leaf_quad_tree():
    q1 = trees.QuadTree((100, 100))

    q1.insert('Parinita', (170, 30))
    q1.insert('Grace', (80, 90))
    q1.insert('Rohan', (60, 60))

    q1.remove_point((170, 30))

    assert q1._name is None
    assert q1._point is None
    assert q1._centre == (100, 100)
    assert q1._nw is not None
    assert q1._ne is None
    assert q1._sw is None
    assert q1._se is None

    assert q1._nw._name is None
    assert q1._nw._point is None
    assert q1._nw._centre == (50, 50)
    assert q1._nw._nw is None
    assert q1._nw._ne is None
    assert q1._nw._sw is None
    assert q1._nw._se is not None

    assert q1._nw._se._name is None
    assert q1._nw._se._point is None
    assert q1._nw._se._centre == (75, 75)

    assert q1._nw._se._nw._point == (60, 60)
    assert q1._nw._se._nw._name == 'Rohan'

    assert q1._nw._se._se._point == (80, 90)
    assert q1._nw._se._se._name == 'Grace'

    assert q1._nw._se._ne is None
    assert q1._nw._se._sw is None
コード例 #29
0
ファイル: tests.py プロジェクト: caasig1/Tag
 def setup_method(self):
     self.tree = trees.QuadTree((250, 250))
コード例 #30
0
ファイル: tests.py プロジェクト: caasig1/Tag
 def setup_method(self):
     self.game = games.Tag(5, trees.QuadTree((250, 250)), 5, 3, 4)