blob: bcf6140a56b311157848ab3e821c8b5f5394fbf6 [file] [log] [blame]
Vadim Yanitskiy7d57edf2021-03-11 23:01:55 +01001#!/usr/bin/env python3
Daniel Laszlo Sitzer851e9c02018-12-04 19:40:08 +01002
3import unittest
Vadim Yanitskiy4ae7c492021-03-11 23:17:27 +01004import pySim.utils as utils
Daniel Laszlo Sitzer851e9c02018-12-04 19:40:08 +01005
6class DecTestCase(unittest.TestCase):
7
8 def testSplitHexStringToListOf5ByteEntries(self):
9 input_str = "ffffff0003ffffff0002ffffff0001"
10 expected = [
11 "ffffff0003",
12 "ffffff0002",
13 "ffffff0001",
14 ]
herlesupreeth45fa6042020-09-18 15:32:20 +020015 self.assertEqual(utils.hexstr_to_Nbytearr(input_str, 5), expected)
Daniel Laszlo Sitzer851e9c02018-12-04 19:40:08 +010016
17 def testDecMCCfromPLMN(self):
18 self.assertEqual(utils.dec_mcc_from_plmn("92f501"), 295)
19
20 def testDecMCCfromPLMN_unused(self):
21 self.assertEqual(utils.dec_mcc_from_plmn("ff0f00"), 4095)
22
23 def testDecMNCfromPLMN_twoDigitMNC(self):
24 self.assertEqual(utils.dec_mnc_from_plmn("92f501"), 10)
25
26 def testDecMNCfromPLMN_threeDigitMNC(self):
27 self.assertEqual(utils.dec_mnc_from_plmn("031263"), 361)
28
29 def testDecMNCfromPLMN_unused(self):
30 self.assertEqual(utils.dec_mnc_from_plmn("00f0ff"), 4095)
31
Vadim Yanitskiyc8458e22021-03-12 00:34:10 +010032 def test_enc_plmn(self):
33 with self.subTest("2-digit MCC"):
34 self.assertEqual(utils.enc_plmn("001", "01F"), "00F110")
35 self.assertEqual(utils.enc_plmn("001", "01"), "00F110")
36 self.assertEqual(utils.enc_plmn("295", "10"), "92F501")
37
38 with self.subTest("3-digit MCC"):
39 self.assertEqual(utils.enc_plmn("001", "001"), "001100")
40 self.assertEqual(utils.enc_plmn("302", "361"), "031263")
41
Daniel Laszlo Sitzer851e9c02018-12-04 19:40:08 +010042 def testDecAct_noneSet(self):
43 self.assertEqual(utils.dec_act("0000"), [])
44
45 def testDecAct_onlyUtran(self):
46 self.assertEqual(utils.dec_act("8000"), ["UTRAN"])
47
48 def testDecAct_onlyEUtran(self):
49 self.assertEqual(utils.dec_act("4000"), ["E-UTRAN"])
50
51 def testDecAct_onlyGsm(self):
52 self.assertEqual(utils.dec_act("0080"), ["GSM"])
53
54 def testDecAct_onlyGsmCompact(self):
55 self.assertEqual(utils.dec_act("0040"), ["GSM COMPACT"])
56
57 def testDecAct_onlyCdma2000HRPD(self):
58 self.assertEqual(utils.dec_act("0020"), ["cdma2000 HRPD"])
59
60 def testDecAct_onlyCdma20001xRTT(self):
61 self.assertEqual(utils.dec_act("0010"), ["cdma2000 1xRTT"])
62
63 def testDecAct_allSet(self):
64 self.assertEqual(utils.dec_act("ffff"), ["UTRAN", "E-UTRAN", "GSM", "GSM COMPACT", "cdma2000 HRPD", "cdma2000 1xRTT"])
65
66 def testDecxPlmn_w_act(self):
67 expected = {'mcc': 295, 'mnc': 10, 'act': ["UTRAN"]}
68 self.assertEqual(utils.dec_xplmn_w_act("92f5018000"), expected)
69
70 def testFormatxPlmn_w_act(self):
71 input_str = "92f501800092f5508000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000ffffff0000"
Vadim Yanitskiy46c49d52021-03-12 01:12:11 +010072 expected = "\t92f5018000 # MCC: 295 MNC: 010 AcT: UTRAN\n"
73 expected += "\t92f5508000 # MCC: 295 MNC: 005 AcT: UTRAN\n"
74 expected += "\tffffff0000 # unused\n"
75 expected += "\tffffff0000 # unused\n"
76 expected += "\tffffff0000 # unused\n"
77 expected += "\tffffff0000 # unused\n"
78 expected += "\tffffff0000 # unused\n"
79 expected += "\tffffff0000 # unused\n"
80 expected += "\tffffff0000 # unused\n"
81 expected += "\tffffff0000 # unused\n"
Daniel Laszlo Sitzer851e9c02018-12-04 19:40:08 +010082 self.assertEqual(utils.format_xplmn_w_act(input_str), expected)
83
84if __name__ == "__main__":
85 unittest.main()