File: test_workspace.py

package info (click to toggle)
blender 5.0.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 329,128 kB
  • sloc: cpp: 2,489,823; python: 349,859; ansic: 261,364; xml: 2,103; sh: 999; javascript: 317; makefile: 193
file content (178 lines) | stat: -rw-r--r-- 5,737 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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# SPDX-FileCopyrightText: 2025 Blender Authors
#
# SPDX-License-Identifier: GPL-2.0-or-later

"""
This file does not run anything, it's methods are accessed for tests by: ``run.py``.
"""


def _test_window(windows_exclude=None):
    import bpy
    wm = bpy.data.window_managers[0]
    if windows_exclude is None:
        return wm.windows[0]
    for window in wm.windows:
        if window not in windows_exclude:
            return window
    return None


def _test_vars(window):
    import unittest
    from modules.easy_keys import EventGenerate
    return (
        EventGenerate(window),
        unittest.TestCase(),
    )


def _call_by_name(e, text: str):
    yield e.f3()
    yield e.text(text)
    yield e.ret()


def _call_menu(e, text: str):
    yield e.f3()
    yield e.text_unicode(text.replace(" -> ", " \u25b8 "))
    yield e.ret()


def sanity_check_general():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.a()     # Animation
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Animation")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.c()     # Compositing
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Compositing")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.g()     # Geometry Nodes
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Geometry Nodes")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.l()     # Layout
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Layout")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.m()     # Modeling
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Modeling")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.r()     # Rendering
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Rendering")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.s()     # Scripting
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Scripting")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.p()     # Sculpting
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Sculpting")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.h()     # Shading
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Shading")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.t()     # Texture Paint
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Texture Paint")

    yield from _call_by_name(e, "Add Workspace")
    yield e.g()     # General
    yield e.u()     # UV Editing
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "UV Editing")


def sanity_check_2d_animation():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.d()     # 2D Animation
    yield e.d()     # 2D Animation
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "2D Animation")

    yield from _call_by_name(e, "Add Workspace")
    yield e.d()     # 2D Animation
    yield e.f()     # 2D Full Canvas
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "2D Full Canvas")


def sanity_check_sculpting():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.s()     # Sculpting
    yield e.s()     # Sculpting
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Sculpting")

    yield from _call_by_name(e, "Add Workspace")
    yield e.s()     # Sculpting
    yield e.h()     # Shading
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Shading")


def sanity_check_storyboarding():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.t()     # Storyboarding
    yield e.v()     # Video Editing
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Video Editing")

    yield from _call_by_name(e, "Add Workspace")
    yield e.t()     # Storyboarding
    yield e.s()     # Storyboarding
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Storyboarding")


def sanity_check_vfx():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.v()     # VFX
    yield e.c()     # Compositing
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Compositing")

    yield from _call_by_name(e, "Add Workspace")
    yield e.v()     # VFX
    yield e.m()     # Masking
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Masking")

    yield from _call_by_name(e, "Add Workspace")
    yield e.v()     # VFX
    yield e.t()     # Motion Tracking
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Motion Tracking")

    yield from _call_by_name(e, "Add Workspace")
    yield e.v()     # VFX
    yield e.r()     # Rendering
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Rendering")


def sanity_check_video_editing():
    e, t = _test_vars(window := _test_window())

    yield from _call_by_name(e, "Add Workspace")
    yield e.e()     # Video Editing
    yield e.r()     # Rendering
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Rendering")

    yield from _call_by_name(e, "Add Workspace")
    yield e.e()     # Video Editing
    yield e.v()     # Video Editing
    t.assertEqual(window.workspace.name_full.split(".", 1)[0], "Video Editing")