Coverage for test\test_ipokertofpdb.py: 91%
97 statements
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-28 16:41 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2024-09-28 16:41 +0000
1import re
2import pytest
5substitutions = {
6 'LS': r"\$|\xe2\x82\xac|\xe2\u201a\xac|\u20ac|\xc2\xa3|\£|RSD|",
8 'PLYR': r'(?P<PNAME>[^\"]+)',
9 'NUM': r'(?:\d+)|(\d+\s\d+)',
10 'NUM2': r'\b((?:\d{1,3}(?:\s\d{3})*)|(?:\d+))\b', # Regex pattern for matching numbers with spaces
11}
13re_PlayerInfo = re.compile(r'<player( (seat="(?P<SEAT>[0-9]+)"|name="%(PLYR)s"|chips="(%(LS)s)?(?P<CASH>[%(NUM2)s]+)(%(LS)s)?"|dealer="(?P<BUTTONPOS>(0|1))"|win="(%(LS)s)?(?P<WIN>[%(NUM)s]+)(%(LS)s)?"|bet="(%(LS)s)?(?P<BET>[^"]+)(%(LS)s)?"|addon="\d*"|rebuy="\d*"|merge="\d*"|reg_code="[\d-]*"))+\s*/>' % substitutions, re.MULTILINE)
17def test_re_PlayerInfo2():
18 text = '<player bet="20" reg_code="5105918454" win="0" seat="10" dealer="1" rebuy="0" chips="20" name="clement10s" addon="0"/>'
19 match = re_PlayerInfo.search(text)
20 assert match is not None
22def test_re_PlayerInfo7():
23 text = '<player bet="100" reg_code="" win="40" seat="3" dealer="0" rebuy="0" chips="1 480" name="pergerd" addon="0"/>'
24 match = re_PlayerInfo.search(text)
25 assert match is not None
26 assert match.group('SEAT') == '3'
27 assert match.group('PNAME') == 'pergerd'
28 assert match.group('CASH') == '1 480'
29 assert match.group('BUTTONPOS') == '0'
30 assert match.group('WIN') == '40'
31 assert match.group('BET') == '100'
33def test_re_PlayerInfo3():
34 text='<player bet="100" reg_code="" win="40" seat="3" dealer="0" rebuy="0" chips="1 480" name="pergerd" addon="0"/><player bet="20" reg_code="5105918454" win="0" seat="10" dealer="1" rebuy="0" chips="20" name="clement10s" addon="0"/>'
35 m = re_PlayerInfo.finditer(text)
36 plist = {}
37 for a in m:
38 ag = a.groupdict()
39 plist[a.group('PNAME')] = [int(a.group('SEAT')), (a.group('CASH')),
40 (a.group('WIN')), False]
41 assert len(plist) == 2
44def test_re_PlayerInfo8():
45 text = '<player bet="740" reg_code="" win="1 480" seat="3" dealer="1" rebuy="0" chips="740" name="pergerd" addon="0"/>'
46 match = re_PlayerInfo.search(text)
47 assert match is not None
48 assert match.group('SEAT') == '3'
49 assert match.group('PNAME') == 'pergerd'
50 assert match.group('CASH') == '740'
51 assert match.group('BUTTONPOS') == '1'
52 assert match.group('WIN') == '1 480'
53 assert match.group('BET') == '740'
58re_GameInfoTrny = re.compile(r"""
59(?:(<tour(?:nament)?code>(?P<TOURNO>\d+)</tour(?:nament)?code>))|
60(?:(<tournamentname>(?P<NAME>[^<]*)</tournamentname>))|
61(?:(<rewarddrawn>(?P<REWARD>[%(NUM2)s%(LS)s]+)</rewarddrawn>))|
62(?:(<place>(?P<PLACE>.+?)</place>))|
63(?:(<buyin>(?P<BIAMT>[%(NUM2)s%(LS)s]+)\s\+\s)?(?P<BIRAKE>[%(NUM2)s%(LS)s]+)\s\+\s(?P<BIRAKE2>[%(NUM2)s%(LS)s]+)</buyin>)|
64(?:(<totalbuyin>(?P<TOTBUYIN>.*)</totalbuyin>))|
65(?:(<win>(%(LS)s)?(?P<WIN>[%(NUM2)s%(LS)s]+)</win>))
66""" % substitutions, re.VERBOSE)
69re_GameInfoTrny2 = re.compile(r"""
70(?:(<tour(?:nament)?code>(?P<TOURNO>\d+)</tour(?:nament)?code>))|
71(?:(<tournamentname>(?P<NAME>[^<]*)</tournamentname>))|
72(?:(<place>(?P<PLACE>.+?)</place>))|
73(?:(<buyin>(?P<BIAMT>[%(NUM2)s%(LS)s]+)\s\+\s)?(?P<BIRAKE>[%(NUM2)s%(LS)s]+)</buyin>)|
74(?:(<totalbuyin>(?P<TOTBUYIN>[%(NUM2)s%(LS)s]+)</totalbuyin>))|
75(?:(<win>(%(LS)s)?(?P<WIN>.+?|[%(NUM2)s%(LS)s]+)</win>))
76""" % substitutions, re.VERBOSE)
79def test_re_GameInfoTrny():
80 text = """
81 <tournamentcode>826763510</tournamentcode>
82 <tournamentname>Sit’n’Go Twister 0.20€</tournamentname>
83 <rewarddrawn>0,80€</rewarddrawn>
84 <place>2</place>
85 <buyin>0€ + 0,01€ + 0,19€</buyin>
86 <totalbuyin>0,20€</totalbuyin>
87 <win>0</win>
88"""
89 matches = list(re_GameInfoTrny.finditer(text))
91 assert matches[0].group('TOURNO') == '826763510'
92 assert matches[1].group('NAME') == 'Sit’n’Go Twister 0.20€'
93 assert matches[2].group('REWARD') == '0,80€'
94 assert matches[3].group('PLACE') == '2'
95 assert matches[4].group('BIAMT') == '0€'
96 assert matches[4].group('BIRAKE') == '0,01€'
97 assert matches[4].group('BIRAKE2') == '0,19€'
98 assert matches[5].group('TOTBUYIN') == '0,20€'
99 assert matches[6].group('WIN') == '0'
102def test_re_GameInfoTrnywin():
103 text = """
104 <tournamentcode>829730818</tournamentcode>
105 <tournamentname>Sit’n’Go Twister 0.20€</tournamentname>
106 <rewarddrawn>0,40€</rewarddrawn>
107 <place>1</place>
108 <buyin>0€ + 0,01€ + 0,19€</buyin>
109 <totalbuyin>0,20€</totalbuyin>
110 <win>0,40€</win>
111"""
112 matches = list(re_GameInfoTrny.finditer(text))
114 assert matches[0].group('TOURNO') == '829730818'
115 assert matches[1].group('NAME') == 'Sit’n’Go Twister 0.20€'
116 assert matches[2].group('REWARD') == '0,40€'
117 assert matches[3].group('PLACE') == '1'
118 assert matches[4].group('BIAMT') == '0€'
119 assert matches[4].group('BIRAKE') == '0,01€'
120 assert matches[4].group('BIRAKE2') == '0,19€'
121 assert matches[5].group('TOTBUYIN') == '0,20€'
122 assert matches[6].group('WIN') == '0,40€'
125def test_re_GameInfoTrny_red():
126 text = """
127 <tournamentcode>1061132557</tournamentcode>
128 <tournamentname>E10 Freebuy Sat 1x30€</tournamentname>
129 <place>N/A</place>
130 <buyin>€0 + €0</buyin>
131 <totalbuyin>€0</totalbuyin>
132 <win>N/A</win>
133"""
134 matches = list(re_GameInfoTrny2.finditer(text))
136 assert matches[0].group('TOURNO') == '1061132557'
137 assert matches[1].group('NAME') == 'E10 Freebuy Sat 1x30€'
139 assert matches[2].group('PLACE') == 'N/A'
140 assert matches[3].group('BIAMT') == '€0'
141 assert matches[3].group('BIRAKE') == '€0'
143 assert matches[4].group('TOTBUYIN') == '€0'
144 assert matches[5].group('WIN') == 'N/A'
146def test_re_GameInfoTrny_red():
147 text = """
148 <tournamentcode>1067382320</tournamentcode>
149 <tournamentname>Series Freebuy Sat 1x125€</tournamentname>
150 <place>851</place>
151 <buyin>€0 + €0</buyin>
152 <totalbuyin>€0</totalbuyin>
153 <win>0</win>
154"""
155 matches = list(re_GameInfoTrny2.finditer(text))
157 assert matches[0].group('TOURNO') == '1067382320'
158 assert matches[1].group('NAME') == 'Series Freebuy Sat 1x125€'
160 assert matches[2].group('PLACE') == '851'
161 assert matches[3].group('BIAMT') == '€0'
162 assert matches[3].group('BIRAKE') == '€0'
164 assert matches[4].group('TOTBUYIN') == '€0'
165 assert matches[5].group('WIN') == '0'
168re_TourNo = re.compile(r'(?P<TOURNO>\d+)$')
171def test_re_Tourno1():
172 text = 'Sit’n’Go Twister 0.20€, 829730819'
173 match = re_TourNo.search(text)
174 assert match.group('TOURNO') == '829730819'
179re_client = re.compile(r'<client_version>(?P<CLIENT>.*?)</client_version>')
181def test_re_cliento1():
182 text = '<client_version>23.5.1.13</client_version>'
183 match = re_client.search(text)
184 assert match.group('CLIENT') == '23.5.1.13'
187re_MaxSeats = re.compile(r'<tablesize>(?P<SEATS>[0-9]+)</tablesize>', re.MULTILINE)
189def test_MaxSeats1():
190 text = '<tablesize>6</tablesize>'
191 match = re_MaxSeats.search(text)
192 assert match.group('SEATS') == '6'