File: test_view.py

package info (click to toggle)
python-gaphas 5.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,560 kB
  • sloc: python: 5,839; makefile: 17; sh: 2
file content (125 lines) | stat: -rw-r--r-- 3,231 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
"""Test cases for the View class."""

import pytest
from gi.repository import Gtk

from gaphas.canvas import Canvas
from gaphas.selection import Selection
from gaphas.view import GtkView


class CustomSelection(Selection):
    pass


def test_custom_selection():
    custom_selection = CustomSelection()
    view = GtkView(selection=custom_selection)

    assert view.selection is custom_selection


def test_custom_selection_setter():
    custom_selection = CustomSelection()
    view = GtkView()

    view.selection = custom_selection

    assert view.selection is custom_selection


@pytest.mark.asyncio
async def test_item_removal(view, canvas, box):
    await view.update()
    assert len(list(canvas.get_all_items())) == len(view._qtree)

    view.selection.focused_item = box
    canvas.remove(box)
    await view.update()

    assert not list(canvas.get_all_items())
    assert len(view._qtree) == 0


@pytest.mark.asyncio
async def test_view_registration():
    canvas = Canvas()

    # GTK view does register for updates though

    view = GtkView(canvas)
    assert len(canvas._registered_views) == 1

    window = Gtk.Window.new()
    window.set_child(view)

    view.model = None
    assert len(canvas._registered_views) == 0

    view.model = canvas
    assert len(canvas._registered_views) == 1


@pytest.mark.asyncio
async def test_view_registration_2(view, canvas, window):
    """Test view registration and destroy when view is destroyed."""
    window.present()

    assert len(canvas._registered_views) == 1
    assert view in canvas._registered_views

    window.destroy()

    assert len(canvas._registered_views) == 0


@pytest.mark.asyncio
async def test_scroll_adjustments_signal(view, scrolled_window):
    assert view.hadjustment
    assert view.vadjustment
    assert view.hadjustment.get_value() == 0.0
    assert view.hadjustment.get_lower() == 0.0
    assert view.hadjustment.get_upper() == 0.0
    assert view.hadjustment.get_step_increment() == 0.0
    assert view.hadjustment.get_page_increment() == 0.0
    assert view.hadjustment.get_page_size() == 0.0
    assert view.vadjustment.get_value() == 0.0
    assert view.vadjustment.get_lower() == 0.0
    assert view.vadjustment.get_upper() == 0.0
    assert view.vadjustment.get_step_increment() == 0.0
    assert view.vadjustment.get_page_increment() == 0.0
    assert view.vadjustment.get_page_size() == 0.0


@pytest.mark.asyncio
async def test_scroll_adjustments(view, scrolled_window):
    assert scrolled_window.get_hadjustment() is view.hadjustment
    assert scrolled_window.get_vadjustment() is view.vadjustment


@pytest.mark.asyncio
async def test_will_not_remove_lone_controller(view):
    ctrl = Gtk.EventControllerMotion.new()

    removed = view.remove_controller(ctrl)

    assert not removed


def test_can_add_and_remove_controller(view):
    ctrl = Gtk.EventControllerMotion.new()
    view.add_controller(ctrl)

    removed = view.remove_controller(ctrl)

    assert removed
    assert ctrl not in view.observe_controllers()


def test_can_remove_all_controllers(view):
    ctrl = Gtk.EventControllerMotion.new()
    view.add_controller(ctrl)

    view.remove_all_controllers()

    assert ctrl not in view.observe_controllers()