Browse Source

SteamID: correct steam2 universe handling

- Added additional tests
- fixed code for parsing/outputing steam2 variants
pull/35/merge
Rossen Georgiev 8 years ago
parent
commit
9d6f170823
  1. 12
      steam/steamid.py
  2. 12
      tests/test_steamid.py

12
steam/steamid.py

@ -123,7 +123,8 @@ class SteamID(intBase):
"""
return "STEAM_1:%s:%s" % (
return "STEAM_%d:%d:%d" % (
self.universe,
self.id % 2,
self.id >> 1,
)
@ -279,7 +280,7 @@ def steam2_to_tuple(value):
.. note::
The universe will be always set to ``1``. See :attr:`SteamID.as_steam2`
"""
match = re.match(r"^STEAM_(?P<universe>[01])"
match = re.match(r"^STEAM_(?P<universe>\d+)"
r":(?P<reminder>[0-1])"
r":(?P<id>\d+)$", value
)
@ -288,8 +289,13 @@ def steam2_to_tuple(value):
return None
steam32 = (int(match.group('id')) << 1) | int(match.group('reminder'))
universe = int(match.group('universe'))
return (steam32, EType(1), EUniverse(1), 1)
# Games before orange box used to incorrectly display universe as 0, we support that
if universe == 0:
universe = 1
return (steam32, EType(1), EUniverse(universe), 1)
def steam3_to_tuple(value):

12
tests/test_steamid.py

@ -199,12 +199,18 @@ class SteamID_properties(unittest.TestCase):
self.assertEqual(SteamID('STEAM_0:0:4').as_steam2, 'STEAM_1:0:4')
self.assertEqual(SteamID('STEAM_1:0:4').as_steam2, 'STEAM_1:0:4')
self.assertEqual(SteamID('STEAM_4:0:4').as_steam2, 'STEAM_4:0:4')
self.assertEqual(SteamID('STEAM_4:1:4').as_steam2, 'STEAM_4:1:4')
def test_as_steam2_zero(self):
self.assertEqual(SteamID('STEAM_0:1:4').as_steam2_zero, 'STEAM_0:1:4')
self.assertEqual(SteamID('STEAM_1:1:4').as_steam2_zero, 'STEAM_0:1:4')
self.assertEqual(SteamID('STEAM_0:0:4').as_steam2_zero, 'STEAM_0:0:4')
self.assertEqual(SteamID('STEAM_1:0:4').as_steam2_zero, 'STEAM_0:0:4')
self.assertEqual(SteamID('STEAM_4:0:4').as_steam2_zero, 'STEAM_4:0:4')
self.assertEqual(SteamID('STEAM_4:1:4').as_steam2_zero, 'STEAM_4:1:4')
def test_as_steam3(self):
self.assertEqual(SteamID('[U:1:1234]').as_steam3, '[U:1:1234]')
self.assertEqual(SteamID('[g:1:4]').as_steam3, '[g:1:4]')
@ -297,6 +303,12 @@ class steamid_functions(unittest.TestCase):
self.assertEqual(steamid.steam2_to_tuple("STEAM_1:0:4"),
(8, EType.Individual, EUniverse.Public, 1)
)
self.assertEqual(steamid.steam2_to_tuple("STEAM_4:1:1"),
(3, EType.Individual, EUniverse.Dev, 1)
)
self.assertEqual(steamid.steam2_to_tuple("STEAM_4:0:4"),
(8, EType.Individual, EUniverse.Dev, 1)
)
def test_arg_steam3(self):
self.assertIsNone(steamid.steam3_to_tuple('invalid_format'))

Loading…
Cancel
Save