mini-arcade-native-backend 0.4.5__tar.gz → 0.4.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.vscode/settings.json +19 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/CHANGELOG.md +8 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/PKG-INFO +2 -2
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/pyproject.toml +5 -2
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/src/mini_arcade_native_backend/__init__.py +1 -1
- mini_arcade_native_backend-0.4.6/tests/test_init.py +5 -0
- mini_arcade_native_backend-0.4.5/tests/test_init.py +0 -339
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.github/workflows/ci.yml +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.github/workflows/create-release-branch.yml +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.github/workflows/release-finalize.yml +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.github/workflows/release-publish.yml +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.gitignore +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/CMakeLists.txt +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/LICENSE +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/README.md +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/cpp/bindings.cpp +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/cpp/engine.cpp +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/cpp/engine.h +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/examples/native_backend_demo.py +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/poetry.lock +0 -0
- {mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/poetry.toml +0 -0
|
@@ -77,4 +77,23 @@
|
|
|
77
77
|
"python.analysis.autoImportCompletions": true,
|
|
78
78
|
"black-formatter.importStrategy": "fromEnvironment",
|
|
79
79
|
"isort.importStrategy": "fromEnvironment",
|
|
80
|
+
"cSpell.words": [
|
|
81
|
+
"etype",
|
|
82
|
+
"isort",
|
|
83
|
+
"keymaps",
|
|
84
|
+
"KEYUP",
|
|
85
|
+
"MOUSEBUTTONDOWN",
|
|
86
|
+
"MOUSEBUTTONUP",
|
|
87
|
+
"MOUSEMOTION",
|
|
88
|
+
"mypy",
|
|
89
|
+
"pybind",
|
|
90
|
+
"pylint",
|
|
91
|
+
"pytest",
|
|
92
|
+
"Rincon",
|
|
93
|
+
"rtype",
|
|
94
|
+
"scancode",
|
|
95
|
+
"scikit",
|
|
96
|
+
"venv",
|
|
97
|
+
"WINDOWRESIZED"
|
|
98
|
+
],
|
|
80
99
|
}
|
|
@@ -6,6 +6,14 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.4.6] - 2025-12-26
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- update mini-arcade-core dependency version and improve import statements
|
|
13
|
+
|
|
14
|
+
### Other
|
|
15
|
+
- Merge branch 'release/0.4' of https://github.com/alexsc6955/mini-arcade-native-backend into release/0.4
|
|
16
|
+
|
|
9
17
|
## [0.4.5] - 2025-12-16
|
|
10
18
|
|
|
11
19
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: mini-arcade-native-backend
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.6
|
|
4
4
|
Summary: Native SDL2 backend for mini-arcade-core using SDL2 + pybind11.
|
|
5
5
|
Author-Email: Santiago Rincon <rincores@gmail.com>
|
|
6
6
|
License: Copyright (c) 2025 Santiago Rincón
|
|
@@ -24,7 +24,7 @@ License: Copyright (c) 2025 Santiago Rincón
|
|
|
24
24
|
SOFTWARE.
|
|
25
25
|
|
|
26
26
|
Requires-Python: <3.12,>=3.9
|
|
27
|
-
Requires-Dist: mini-arcade-core~=0.
|
|
27
|
+
Requires-Dist: mini-arcade-core~=0.10
|
|
28
28
|
Provides-Extra: dev
|
|
29
29
|
Requires-Dist: pytest~=8.3; extra == "dev"
|
|
30
30
|
Requires-Dist: pytest-cov~=6.0; extra == "dev"
|
|
@@ -8,7 +8,7 @@ build-backend = "scikit_build_core.build"
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "mini-arcade-native-backend"
|
|
11
|
-
version = "0.4.
|
|
11
|
+
version = "0.4.6"
|
|
12
12
|
description = "Native SDL2 backend for mini-arcade-core using SDL2 + pybind11."
|
|
13
13
|
authors = [
|
|
14
14
|
{ name = "Santiago Rincon", email = "rincores@gmail.com" },
|
|
@@ -17,7 +17,7 @@ readme = "README.md"
|
|
|
17
17
|
requires-python = ">=3.9,<3.12"
|
|
18
18
|
license = { file = "LICENSE" }
|
|
19
19
|
dependencies = [
|
|
20
|
-
"mini-arcade-core~=0.
|
|
20
|
+
"mini-arcade-core~=0.10",
|
|
21
21
|
]
|
|
22
22
|
|
|
23
23
|
[project.optional-dependencies]
|
|
@@ -74,3 +74,6 @@ ignore-paths = [
|
|
|
74
74
|
"^docs",
|
|
75
75
|
"^examples",
|
|
76
76
|
]
|
|
77
|
+
|
|
78
|
+
[tool.poetry]
|
|
79
|
+
packages = [{ include = "mini_arcade_native_backend", from = "src" }]
|
|
@@ -37,7 +37,7 @@ if sys.platform == "win32":
|
|
|
37
37
|
|
|
38
38
|
# Justification: Need to import core after setting DLL path on Windows
|
|
39
39
|
# pylint: disable=wrong-import-position
|
|
40
|
-
from mini_arcade_core import Backend, Event, EventType
|
|
40
|
+
from mini_arcade_core.backend import Backend, Event, EventType
|
|
41
41
|
from mini_arcade_core.keymaps.sdl import SDL_KEYCODE_TO_KEY
|
|
42
42
|
|
|
43
43
|
# Justification: Importing the native extension module
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import importlib
|
|
2
|
-
import os
|
|
3
|
-
import sys
|
|
4
|
-
import types
|
|
5
|
-
from dataclasses import dataclass
|
|
6
|
-
|
|
7
|
-
import pytest
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def setup_fake_core_and_native(monkeypatch):
|
|
11
|
-
"""
|
|
12
|
-
Inject fake mini_arcade_core and mini_arcade_native_backend._native modules
|
|
13
|
-
into sys.modules so we can import the package without the real C++ extension.
|
|
14
|
-
"""
|
|
15
|
-
# --- Fake mini_arcade_core -------------------------------------------------
|
|
16
|
-
fake_core = types.ModuleType("mini_arcade_core")
|
|
17
|
-
|
|
18
|
-
class FakeBackend:
|
|
19
|
-
"""Minimal base class just to satisfy inheritance."""
|
|
20
|
-
|
|
21
|
-
class FakeCoreEventType:
|
|
22
|
-
UNKNOWN = "core_unknown"
|
|
23
|
-
QUIT = "core_quit"
|
|
24
|
-
KEYDOWN = "core_keydown"
|
|
25
|
-
KEYUP = "core_keyup"
|
|
26
|
-
MOUSEMOTION = "core_mousemotion"
|
|
27
|
-
MOUSEBUTTONDOWN = "core_mousebuttondown"
|
|
28
|
-
MOUSEBUTTONUP = "core_mousebuttonup"
|
|
29
|
-
MOUSEWHEEL = "core_mousewheel"
|
|
30
|
-
WINDOWRESIZED = "core_windowresized"
|
|
31
|
-
TEXTINPUT = "core_textinput"
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class FakeEvent:
|
|
35
|
-
type: object
|
|
36
|
-
key: object = None
|
|
37
|
-
key_code: object = None
|
|
38
|
-
x: object = None
|
|
39
|
-
y: object = None
|
|
40
|
-
dx: object = None
|
|
41
|
-
dy: object = None
|
|
42
|
-
button: object = None
|
|
43
|
-
wheel: object = None
|
|
44
|
-
size: object = None
|
|
45
|
-
text: object = None
|
|
46
|
-
scancode: object = None
|
|
47
|
-
mod: object = None
|
|
48
|
-
repeat: object = None
|
|
49
|
-
|
|
50
|
-
fake_core.Backend = FakeBackend
|
|
51
|
-
fake_core.Event = FakeEvent
|
|
52
|
-
fake_core.EventType = FakeCoreEventType
|
|
53
|
-
|
|
54
|
-
sys.modules["mini_arcade_core"] = fake_core
|
|
55
|
-
|
|
56
|
-
fake_keymaps = types.ModuleType("mini_arcade_core.keymaps")
|
|
57
|
-
fake_sdl = types.ModuleType("mini_arcade_core.keymaps.sdl")
|
|
58
|
-
fake_sdl.SDL_KEYCODE_TO_KEY = {} # or mapping your test expects
|
|
59
|
-
|
|
60
|
-
sys.modules["mini_arcade_core.keymaps"] = fake_keymaps
|
|
61
|
-
sys.modules["mini_arcade_core.keymaps.sdl"] = fake_sdl
|
|
62
|
-
|
|
63
|
-
# --- Fake native extension: mini_arcade_native_backend._native -------------
|
|
64
|
-
fake_native = types.ModuleType("mini_arcade_native_backend._native")
|
|
65
|
-
|
|
66
|
-
class FakeNativeEventType:
|
|
67
|
-
Unknown = "native_unknown"
|
|
68
|
-
Quit = "native_quit"
|
|
69
|
-
KeyDown = "native_keydown"
|
|
70
|
-
KeyUp = "native_keyup"
|
|
71
|
-
MouseMotion = "native_mousemotion"
|
|
72
|
-
MouseButtonDown = "native_mousebuttondown"
|
|
73
|
-
MouseButtonUp = "native_mousebuttonup"
|
|
74
|
-
MouseWheel = "native_mousewheel"
|
|
75
|
-
WindowResized = "native_windowresized"
|
|
76
|
-
TextInput = "native_textinput"
|
|
77
|
-
|
|
78
|
-
class FakeEngine:
|
|
79
|
-
def __init__(self):
|
|
80
|
-
self.init_args = None
|
|
81
|
-
self.frames = []
|
|
82
|
-
self.rects = []
|
|
83
|
-
self._events_to_return = []
|
|
84
|
-
|
|
85
|
-
def init(self, width, height, title):
|
|
86
|
-
self.init_args = (width, height, title)
|
|
87
|
-
|
|
88
|
-
def poll_events(self):
|
|
89
|
-
return list(self._events_to_return)
|
|
90
|
-
|
|
91
|
-
def begin_frame(self):
|
|
92
|
-
self.frames.append("begin")
|
|
93
|
-
|
|
94
|
-
def end_frame(self):
|
|
95
|
-
self.frames.append("end")
|
|
96
|
-
|
|
97
|
-
def draw_rect(self, x, y, w, h, r, g, b, a):
|
|
98
|
-
self.rects.append((x, y, w, h, r, g, b, a))
|
|
99
|
-
|
|
100
|
-
fake_native.EventType = FakeNativeEventType
|
|
101
|
-
fake_native.Engine = FakeEngine
|
|
102
|
-
|
|
103
|
-
# Register the fake native module under the expected name
|
|
104
|
-
sys.modules["mini_arcade_native_backend._native"] = fake_native
|
|
105
|
-
|
|
106
|
-
return fake_core, fake_native
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
def import_backend_package(
|
|
110
|
-
monkeypatch, *, platform="linux", vcpkg_root=None, sdl_dir_exists=False
|
|
111
|
-
):
|
|
112
|
-
"""
|
|
113
|
-
Helper to import mini_arcade_native_backend with controlled platform/env.
|
|
114
|
-
Returns (package_module, fake_core_module, fake_native_module, added_paths).
|
|
115
|
-
"""
|
|
116
|
-
fake_core, fake_native = setup_fake_core_and_native(monkeypatch)
|
|
117
|
-
|
|
118
|
-
# Control sys.platform
|
|
119
|
-
monkeypatch.setattr(sys, "platform", platform)
|
|
120
|
-
|
|
121
|
-
# Control VCPKG_ROOT
|
|
122
|
-
if vcpkg_root is None:
|
|
123
|
-
monkeypatch.delenv("VCPKG_ROOT", raising=False)
|
|
124
|
-
else:
|
|
125
|
-
monkeypatch.setenv("VCPKG_ROOT", vcpkg_root)
|
|
126
|
-
|
|
127
|
-
# Track calls to os.add_dll_directory (may not exist on non-Windows)
|
|
128
|
-
added_paths = []
|
|
129
|
-
|
|
130
|
-
def fake_add_dll_directory(path):
|
|
131
|
-
added_paths.append(path)
|
|
132
|
-
|
|
133
|
-
monkeypatch.setattr(
|
|
134
|
-
os, "add_dll_directory", fake_add_dll_directory, raising=False
|
|
135
|
-
)
|
|
136
|
-
|
|
137
|
-
# Control os.path.isdir for the SDL bin path check
|
|
138
|
-
real_isdir = os.path.isdir
|
|
139
|
-
|
|
140
|
-
def fake_isdir(path):
|
|
141
|
-
if sdl_dir_exists:
|
|
142
|
-
return True
|
|
143
|
-
return real_isdir(path)
|
|
144
|
-
|
|
145
|
-
monkeypatch.setattr(os.path, "isdir", fake_isdir)
|
|
146
|
-
|
|
147
|
-
# Force a fresh import of the package so the top-level code re-runs
|
|
148
|
-
sys.modules.pop("mini_arcade_native_backend", None)
|
|
149
|
-
pkg = importlib.import_module("mini_arcade_native_backend")
|
|
150
|
-
|
|
151
|
-
return pkg, fake_core, fake_native, added_paths
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
# --------------------------------------------------------------------------- #
|
|
155
|
-
# DLL path / Windows bootstrap tests
|
|
156
|
-
# --------------------------------------------------------------------------- #
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
def test_non_windows_does_not_add_dll_directory(monkeypatch):
|
|
160
|
-
pkg, fake_core, fake_native, added_paths = import_backend_package(
|
|
161
|
-
monkeypatch,
|
|
162
|
-
platform="linux",
|
|
163
|
-
vcpkg_root=None,
|
|
164
|
-
sdl_dir_exists=False,
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
assert added_paths == []
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
def test_windows_without_vcpkg_root_does_not_add_dll_directory(monkeypatch):
|
|
171
|
-
pkg, fake_core, fake_native, added_paths = import_backend_package(
|
|
172
|
-
monkeypatch,
|
|
173
|
-
platform="win32",
|
|
174
|
-
vcpkg_root=None,
|
|
175
|
-
sdl_dir_exists=True,
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
assert added_paths == []
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
def test_windows_with_vcpkg_root_and_existing_sdl_dir_adds_dll_directory(
|
|
182
|
-
monkeypatch,
|
|
183
|
-
):
|
|
184
|
-
vcpkg_root = r"C:\vcpkg"
|
|
185
|
-
|
|
186
|
-
pkg, fake_core, fake_native, added_paths = import_backend_package(
|
|
187
|
-
monkeypatch,
|
|
188
|
-
platform="win32",
|
|
189
|
-
vcpkg_root=vcpkg_root,
|
|
190
|
-
sdl_dir_exists=True,
|
|
191
|
-
)
|
|
192
|
-
|
|
193
|
-
expected_sdl_bin = os.path.join(
|
|
194
|
-
vcpkg_root, "installed", "x64-windows", "bin"
|
|
195
|
-
)
|
|
196
|
-
assert expected_sdl_bin in added_paths
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
# --------------------------------------------------------------------------- #
|
|
200
|
-
# NativeBackend behaviour tests
|
|
201
|
-
# --------------------------------------------------------------------------- #
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
@pytest.fixture
|
|
205
|
-
def backend_module(monkeypatch):
|
|
206
|
-
"""
|
|
207
|
-
Import the package on a non-Windows platform and return:
|
|
208
|
-
(pkg, fake_core, fake_native)
|
|
209
|
-
"""
|
|
210
|
-
pkg, fake_core, fake_native, _ = import_backend_package(
|
|
211
|
-
monkeypatch,
|
|
212
|
-
platform="linux",
|
|
213
|
-
vcpkg_root=None,
|
|
214
|
-
sdl_dir_exists=False,
|
|
215
|
-
)
|
|
216
|
-
return pkg, fake_core, fake_native
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
def test_exports_nativebackend_and_native(backend_module):
|
|
220
|
-
pkg, fake_core, fake_native = backend_module
|
|
221
|
-
assert "NativeBackend" in pkg.__all__
|
|
222
|
-
assert "native" in pkg.__all__
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
def test_nativebackend_init_calls_engine_init(backend_module):
|
|
226
|
-
pkg, fake_core, fake_native = backend_module
|
|
227
|
-
|
|
228
|
-
backend = pkg.NativeBackend()
|
|
229
|
-
backend.init(800, 600, "Test Window")
|
|
230
|
-
|
|
231
|
-
engine = backend._engine
|
|
232
|
-
assert engine.init_args == (800, 600, "Test Window")
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
def test_nativebackend_begin_end_frame_delegate_to_engine(backend_module):
|
|
236
|
-
pkg, fake_core, fake_native = backend_module
|
|
237
|
-
|
|
238
|
-
backend = pkg.NativeBackend()
|
|
239
|
-
backend.begin_frame()
|
|
240
|
-
backend.end_frame()
|
|
241
|
-
|
|
242
|
-
assert backend._engine.frames == ["begin", "end"]
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
def test_nativebackend_draw_rect_delegates_to_engine(backend_module):
|
|
246
|
-
pkg, fake_core, fake_native = backend_module
|
|
247
|
-
|
|
248
|
-
backend = pkg.NativeBackend()
|
|
249
|
-
backend.draw_rect(10, 20, 30, 40, color=(255, 0, 0))
|
|
250
|
-
|
|
251
|
-
assert backend._engine.rects == [(10, 20, 30, 40, 255, 0, 0, 255)]
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
def test_poll_events_maps_native_events_to_core_events_and_keys(
|
|
255
|
-
backend_module,
|
|
256
|
-
):
|
|
257
|
-
pkg, fake_core, fake_native = backend_module
|
|
258
|
-
backend = pkg.NativeBackend()
|
|
259
|
-
|
|
260
|
-
@dataclass
|
|
261
|
-
class FakeNativeEvent:
|
|
262
|
-
type: object
|
|
263
|
-
key: int = 0
|
|
264
|
-
key_code: int = 0
|
|
265
|
-
x: int = 0
|
|
266
|
-
y: int = 0
|
|
267
|
-
dx: int = 0
|
|
268
|
-
dy: int = 0
|
|
269
|
-
button: int = 0
|
|
270
|
-
wheel_x: int = 0
|
|
271
|
-
wheel_y: int = 0
|
|
272
|
-
width: int = 0
|
|
273
|
-
height: int = 0
|
|
274
|
-
text: str = ""
|
|
275
|
-
scancode: int = 0
|
|
276
|
-
mod: int = 0
|
|
277
|
-
repeat: int = 0
|
|
278
|
-
|
|
279
|
-
engine = backend._engine
|
|
280
|
-
engine._events_to_return = [
|
|
281
|
-
FakeNativeEvent(fake_native.EventType.Quit), # -> QUIT
|
|
282
|
-
FakeNativeEvent(
|
|
283
|
-
fake_native.EventType.KeyDown, key=32
|
|
284
|
-
), # -> KEYDOWN, key=32
|
|
285
|
-
FakeNativeEvent(
|
|
286
|
-
fake_native.EventType.MouseMotion, x=10, y=20, dx=1, dy=-2
|
|
287
|
-
),
|
|
288
|
-
FakeNativeEvent(
|
|
289
|
-
fake_native.EventType.MouseButtonDown, x=5, y=6, button=1
|
|
290
|
-
),
|
|
291
|
-
FakeNativeEvent(
|
|
292
|
-
fake_native.EventType.MouseWheel, wheel_x=0, wheel_y=-1
|
|
293
|
-
),
|
|
294
|
-
FakeNativeEvent(
|
|
295
|
-
fake_native.EventType.WindowResized, width=800, height=600
|
|
296
|
-
),
|
|
297
|
-
FakeNativeEvent(fake_native.EventType.TextInput, text="á"),
|
|
298
|
-
FakeNativeEvent("something_unknown", key=10), # -> UNKNOWN, key=10
|
|
299
|
-
]
|
|
300
|
-
|
|
301
|
-
events = backend.poll_events()
|
|
302
|
-
assert len(events) == 8
|
|
303
|
-
|
|
304
|
-
# Quit: key 0 -> None
|
|
305
|
-
assert events[0].type == fake_core.EventType.QUIT
|
|
306
|
-
assert events[0].key is None
|
|
307
|
-
|
|
308
|
-
# KeyDown: key passes through
|
|
309
|
-
assert events[1].type == fake_core.EventType.KEYDOWN
|
|
310
|
-
assert events[1].key_code == 32
|
|
311
|
-
|
|
312
|
-
# MouseMotion: x/y/dx/dy mapped (0 becomes None; here non-zero)
|
|
313
|
-
assert events[2].type == fake_core.EventType.MOUSEMOTION
|
|
314
|
-
assert events[2].x == 10
|
|
315
|
-
assert events[2].y == 20
|
|
316
|
-
assert events[2].dx == 1
|
|
317
|
-
assert events[2].dy == -2
|
|
318
|
-
|
|
319
|
-
# MouseButtonDown
|
|
320
|
-
assert events[3].type == fake_core.EventType.MOUSEBUTTONDOWN
|
|
321
|
-
assert events[3].x == 5
|
|
322
|
-
assert events[3].y == 6
|
|
323
|
-
assert events[3].button == 1
|
|
324
|
-
|
|
325
|
-
# MouseWheel -> wheel tuple
|
|
326
|
-
assert events[4].type == fake_core.EventType.MOUSEWHEEL
|
|
327
|
-
assert events[4].wheel == (0, -1)
|
|
328
|
-
|
|
329
|
-
# WindowResized -> size tuple
|
|
330
|
-
assert events[5].type == fake_core.EventType.WINDOWRESIZED
|
|
331
|
-
assert events[5].size == (800, 600)
|
|
332
|
-
|
|
333
|
-
# TextInput -> text
|
|
334
|
-
assert events[6].type == fake_core.EventType.TEXTINPUT
|
|
335
|
-
assert events[6].text == "á"
|
|
336
|
-
|
|
337
|
-
# Unknown
|
|
338
|
-
assert events[7].type == fake_core.EventType.UNKNOWN
|
|
339
|
-
assert events[7].key_code is None
|
{mini_arcade_native_backend-0.4.5 → mini_arcade_native_backend-0.4.6}/.github/workflows/ci.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|