fix: drop the "Reserved for 3GPP" event-name cross-reference (v3.6.22)

The event list tables carried labels like
"12  Reserved for 3GPP - Network rejection (TS 31.111 7.5.2)".  The phrase is
an ETSI-to-3GPP document pointer, not a usage restriction, and it is not
what a user needs - the event name is.

- EVENT_NAMES (PWA + server mirror): the 3GPP-assigned codings carry their
  plain TS 31.111 7.5 name ((I-)WLAN access status, Network rejection, CSG
  cell selection, IMS registration, Incoming IMS data, Data connection
  status change, CAG cell selection, Slices status change).
- 0x20-0x22: "Reserved (future usage)" (no attribution).
- 0x0B/0x14: the spec's full "(single access technology)" / "(multiple
  access technologies)" wording instead of the cryptic "(single)/(multiple)".
- tests pin the exact names and that no name contains the cross-reference.

652 frontend / 500 Python green; version 3.6.22; sw simple-v295.
This commit is contained in:
2026-09-28 21:54:28 +03:00
parent 5372a770eb
commit 3c104f5685
6 changed files with 68 additions and 59 deletions
+21 -18
View File
@@ -36,35 +36,38 @@ class ProactiveTypeNamesTests(unittest.TestCase):
class EventNamesTests(unittest.TestCase):
"""Event list names follow TS 102 223 v18.3.0 8.25; the values the CAT
spec leaves "Reserved for 3GPP" carry the TS 31.111 event name."""
spec points at 3GPP for carry their TS 31.111 7.5 event name."""
def test_reassigned_values_match_the_pinned_spec(self):
for value, name in [
(0x0B, 'Access technology change (single)'),
(0x14, 'Access technology change (multiple)'),
(0x0B, 'Access technology change (single access technology)'),
(0x14, 'Access technology change (multiple access technologies)'),
(0x19, 'Profile container'),
(0x1A, 'Void'),
(0x1B, 'Secured profile container'),
(0x1C, 'Poll interval negotiation'),
(0x20, 'Reserved for 3GPP (future usage)'),
(0x20, 'Reserved (future usage)'),
]:
self.assertEqual(EVENT_NAMES[value], name, hex(value))
def test_3gpp_reserved_events_carry_their_3gpp_name(self):
for value, fragment, clause in [
(0x11, '(I-)WLAN access status', 'TS 31.111 7.5.1'),
(0x12, 'Network rejection', 'TS 31.111 7.5.2'),
(0x15, 'CSG cell selection', 'TS 31.111 7.5.3'),
(0x17, 'IMS registration', 'TS 31.111 7.5.21'),
(0x18, 'Incoming IMS data', 'TS 31.111 7.5.20'),
(0x1D, 'Data connection status change', 'TS 31.111 7.5.25'),
(0x1E, 'CAG cell selection', 'TS 31.111 7.5.26'),
(0x1F, 'Slices status change', 'TS 31.111 7.5.27'),
def test_3gpp_assigned_events_carry_their_name(self):
for value, name in [
(0x11, '(I-)WLAN access status'),
(0x12, 'Network rejection'),
(0x15, 'CSG cell selection'),
(0x17, 'IMS registration'),
(0x18, 'Incoming IMS data'),
(0x1D, 'Data connection status change'),
(0x1E, 'CAG cell selection'),
(0x1F, 'Slices status change'),
]:
name = EVENT_NAMES[value]
self.assertIn('Reserved for 3GPP', name, hex(value))
self.assertIn(fragment, name, hex(value))
self.assertIn(clause, name, hex(value))
self.assertEqual(EVENT_NAMES[value], name, hex(value))
def test_no_reserved_for_3gpp_wording(self):
# a spec cross-reference, not a usage restriction - it must never
# reach the user-facing names
for value, name in EVENT_NAMES.items():
self.assertNotIn('Reserved for 3GPP', name, hex(value))
def test_names_are_nonempty_strings(self):
for value, name in EVENT_NAMES.items():