File: test_dialogs.py

package info (click to toggle)
lutris 0.5.19-3
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 7,636 kB
  • sloc: python: 42,264; xml: 151; makefile: 77; sh: 30
file content (101 lines) | stat: -rw-r--r-- 3,420 bytes parent folder | download | duplicates (2)
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
from unittest import TestCase

from lutris import runners
from lutris.gui.application import Application
from lutris.gui.config.add_game_dialog import AddGameDialog
from lutris.gui.config.game_common import GameDialogCommon
from lutris.gui.views.store import sort_func
from lutris.util.test_config import setup_test_environment

setup_test_environment()


class TestGameDialogCommon(TestCase):
    def test_get_runner_liststore(self):
        dlg = GameDialogCommon("test", config_level="system")
        list_store = dlg._get_runner_liststore()
        self.assertTrue(list_store[1][0].startswith(runners.get_installed()[0].human_name))
        self.assertEqual(list_store[1][1], runners.get_installed()[0].name)


class TestGameDialog(TestCase):
    def setUp(self):
        lutris_application = Application()
        lutris_window = lutris_application.window
        self.dlg = AddGameDialog(lutris_window)

    def get_notebook(self):
        return self.dlg.vbox.get_children()[0]

    def get_viewport(self, index):
        children = self.get_notebook().get_children()
        try:
            scrolled_window = children[index]
        except IndexError:
            print("No viewport for index %s" % index)
            print(children)
            raise
        viewport = scrolled_window.get_children()[0]
        return viewport.get_children()[0]

    def get_game_box(self):
        return self.get_viewport(1)

    def test_dialog(self):
        self.assertEqual(self.dlg.notebook.get_current_page(), 0)


class TestSort(TestCase):
    class FakeModel(object):
        def __init__(self, rows):
            self.rows = rows

        def get_value(self, row_index, col_name):
            return self.rows[row_index].cols.get(col_name)

    class FakeRow(object):
        def __init__(self, coldict):
            self.cols = coldict

    def test_sort_strings_with_caps(self):
        row1 = self.FakeRow({"name": "Abc"})
        row2 = self.FakeRow({"name": "Def"})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == -1

    def test_sort_strings_with_one_caps(self):
        row1 = self.FakeRow({"name": "abc"})
        row2 = self.FakeRow({"name": "Def"})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == -1

    def test_sort_strings_with_no_caps(self):
        row1 = self.FakeRow({"name": "abc"})
        row2 = self.FakeRow({"name": "def"})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == -1

    def test_sort_int(self):
        row1 = self.FakeRow({"name": 1})
        row2 = self.FakeRow({"name": 2})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == -1

    def test_sort_mismatched_types(self):
        row1 = self.FakeRow({"name": "abc"})
        row2 = self.FakeRow({"name": 1})
        model = self.FakeModel([row1, row2])
        with self.assertRaises(TypeError):
            assert sort_func(model, 0, 1, "name") == -1

    def test_both_none(self):
        row1 = self.FakeRow({})
        row2 = self.FakeRow({})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == 0

    def test_one_none(self):
        row1 = self.FakeRow({})
        row2 = self.FakeRow({"name": "abc"})
        model = self.FakeModel([row1, row2])
        assert sort_func(model, 0, 1, "name") == -1