From: Austin Hurst <mynameisaustinhurst@gmail.com>
Date: Tue, 17 May 2022 17:52:57 -0300
Subject: Fix unit tests & version parsing for latest SDL2 (#229)

Origin: backport, 0.9.12, commit:a264da234886f988db9c77b188e1820189b22ad2
---
 sdl2/dll.py                | 17 ++++++++++++++---
 sdl2/test/sdlimage_test.py |  2 +-
 sdl2/test/sdlmixer_test.py |  2 +-
 sdl2/test/sdlttf_test.py   |  2 +-
 sdl2/test/version_test.py  |  2 +-
 5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/sdl2/dll.py b/sdl2/dll.py
index 9c0eb43..f735dc1 100644
--- a/sdl2/dll.py
+++ b/sdl2/dll.py
@@ -54,12 +54,23 @@ class SDL_version(Structure):
     ]
 
 def _version_str_to_int(s):
+    # Convert an SDL version string to an integer (e.g. "2.0.18" to 2018)
     v = [int(n) for n in s.split('.')]
-    return v[0] * 1000 + v[1] * 100 + v[2]
+    if v[1] > 0:
+        # For SDL2 >= 2.23.0 (new version scheme): 2.23.0 -> 2230
+        return v[0] * 1000 + v[1] * 10 + v[2]
+    else:
+        # For SDL2 <= 2.0.22 (old version scheme): 2.0.22 -> 2022
+        return v[0] * 1000 + v[1] * 100 + v[2]
 
 def _version_int_to_str(i):
     v = str(i)
-    v = [v[0], v[1], str(int(v[2:4]))]
+    if int(v[1]) > 0:
+        # For SDL2 >= 2.23.0 (new version scheme): 2230 -> 2.23.0
+        v = [v[0], str(int(v[1:3])), v[3]]
+    else:
+        # For SDL2 <= 2.0.22 (old version scheme): 2022 -> 2.0.22
+        v = [v[0], v[1], str(int(v[2:4]))]
     return ".".join(v)
 
 def _so_version_num(libname):
@@ -285,7 +296,7 @@ class DLL(object):
     @property
     def version(self):
         """int: The version of the loaded library in the form of a 4-digit
-        integer (e.g. '2008' for SDL 2.0.8, '2010' for SDL 2.0.10).
+        integer (e.g. '2008' for SDL 2.0.8, '2231' for SDL 2.23.1).
         """
         return self._version
 
diff --git a/sdl2/test/sdlimage_test.py b/sdl2/test/sdlimage_test.py
index 2c1dc8a..03f29c9 100644
--- a/sdl2/test/sdlimage_test.py
+++ b/sdl2/test/sdlimage_test.py
@@ -52,7 +52,7 @@ def test_IMG_Linked_Version():
     v = sdlimage.IMG_Linked_Version()
     assert isinstance(v.contents, version.SDL_version)
     assert v.contents.major == 2
-    assert v.contents.minor == 0
+    assert v.contents.minor >= 0
     assert v.contents.patch >= 1
 
 def test_IMG_Init():
diff --git a/sdl2/test/sdlmixer_test.py b/sdl2/test/sdlmixer_test.py
index 7178848..48424f8 100644
--- a/sdl2/test/sdlmixer_test.py
+++ b/sdl2/test/sdlmixer_test.py
@@ -19,7 +19,7 @@ def test_Mix_Linked_Version():
     v = sdlmixer.Mix_Linked_Version()
     assert isinstance(v.contents, version.SDL_version)
     assert v.contents.major == 2
-    assert v.contents.minor == 0
+    assert v.contents.minor >= 0
     assert v.contents.patch >= 0
 
 @pytest.mark.skipif(sdlmixer.dll.version < 2004, reason="Broken in official binaries")
diff --git a/sdl2/test/sdlttf_test.py b/sdl2/test/sdlttf_test.py
index 28e0cac..08eb45f 100644
--- a/sdl2/test/sdlttf_test.py
+++ b/sdl2/test/sdlttf_test.py
@@ -29,7 +29,7 @@ class TestSDLTTF(object):
         v = sdlttf.TTF_Linked_Version()
         assert isinstance(v.contents, version.SDL_version)
         assert v.contents.major == 2
-        assert v.contents.minor == 0
+        assert v.contents.minor >= 0
         assert v.contents.patch >= 12
 
     def test_TTF_Font(self):
diff --git a/sdl2/test/version_test.py b/sdl2/test/version_test.py
index 562b678..79caedc 100644
--- a/sdl2/test/version_test.py
+++ b/sdl2/test/version_test.py
@@ -18,7 +18,7 @@ class TestSDLVersion(object):
         version.SDL_GetVersion(ctypes.byref(v))
         assert type(v) == version.SDL_version
         assert v.major == 2
-        assert v.minor == 0
+        assert v.minor >= 0
         assert v.patch >= 5
 
     def test_SDL_VERSIONNUM(self):
