Els exemples que compten per la nota són només els que van seguits de # doctesttag: +TAG Tests classe Parking -------------------- >>> from parkings import Parking >>> from datetime import datetime >>> p = Parking(20) >>> p.matricules # doctesttag: +TAG=1_parking ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=1_parking [None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None] >>> len(p) # doctesttag: +TAG=1_parking 20 >>> p.aparca(10, '9876-MKF', datetime(2025, 5, 11, hour=10, minute=0)) >>> p.matricules # doctesttag: +TAG=1_parking ['', '', '', '', '', '', '', '', '', '', '9876-MKF', '', '', '', '', '', '', '', '', ''] >>> p.arribades[10] # doctesttag: +TAG=1_parking datetime.datetime(2025, 5, 11, 10, 0) >>> p.arribades # doctesttag: +TAG=1_parking [None, None, None, None, None, None, None, None, None, None, datetime.datetime(2025, 5, 11, 10, 0), None, None, None, None, None, None, None, None, None] >>> p.ocupacio() # doctesttag: +TAG=1_parking (1, 19) >>> p.aparca(3, '2222-RRR', datetime(2025, 5, 11, hour=12, minute=12)) >>> p.aparca(8, '1111-TTT', datetime(2025, 5, 11, hour=12, minute=12)) >>> p.ocupacio() # doctesttag: +TAG=1_parking (3, 17) >>> p.matricules # doctesttag: +TAG=1_parking ['', '', '', '2222-RRR', '', '', '', '', '1111-TTT', '', '9876-MKF', '', '', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=1_parking [None, None, None, datetime.datetime(2025, 5, 11, 12, 12), None, None, None, None, datetime.datetime(2025, 5, 11, 12, 12), None, datetime.datetime(2025, 5, 11, 10, 0), None, None, None, None, None, None, None, None, None] >>> p.desaparca(3) >>> p.aparca(4, '1111-AAA', datetime(2025, 5, 11, hour=13)) >>> p.aparca(5, '2222-BBB', datetime(2025, 6, 11, hour=17)) >>> p.aparca(6, '3333-CCC', datetime(2025, 6, 11, hour=10)) >>> p.aparca(12,'4444-DDD', datetime(2025, 8, 11, hour=5)) >>> p.ocupacio() # doctesttag: +TAG=1_parking (6, 14) >>> p.matricules # doctesttag: +TAG=1_parking ['', '', '', '', '1111-AAA', '2222-BBB', '3333-CCC', '', '1111-TTT', '', '9876-MKF', '', '4444-DDD', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=1_parking [None, None, None, None, datetime.datetime(2025, 5, 11, 13, 0), datetime.datetime(2025, 6, 11, 17, 0), datetime.datetime(2025, 6, 11, 10, 0), None, datetime.datetime(2025, 5, 11, 12, 12), None, datetime.datetime(2025, 5, 11, 10, 0), None, datetime.datetime(2025, 8, 11, 5, 0), None, None, None, None, None, None, None] >>> p['2222-RRR'] # doctesttag: +TAG=1_parking -1 >>> p['3333-CCC'] # doctesttag: +TAG=1_parking 6 >>> p['1111-TTT'] # doctesttag: +TAG=1_parking 8 >>> p.desaparca(5) >>> p.desaparca(6) >>> p.ocupacio() # doctesttag: +TAG=1_parking (4, 16) >>> p.matricules # doctesttag: +TAG=1_parking ['', '', '', '', '1111-AAA', '', '', '', '1111-TTT', '', '9876-MKF', '', '4444-DDD', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=1_parking [None, None, None, None, datetime.datetime(2025, 5, 11, 13, 0), None, None, None, datetime.datetime(2025, 5, 11, 12, 12), None, datetime.datetime(2025, 5, 11, 10, 0), None, datetime.datetime(2025, 8, 11, 5, 0), None, None, None, None, None, None, None] >>> len(p) # doctesttag: +TAG=1_parking 20 >>> q = Parking(7) >>> q.aparca(2, '2222-BBB', datetime(2025, 5, 11, hour= 9)) >>> q.aparca(4, '3333-CCC', datetime(2025, 5, 11, hour=10)) >>> q.aparca(0, '4444-DDD', datetime(2025, 5, 12, hour=11)) >>> q.aparca(6, '1111-AAA', datetime(2025, 5, 12, hour=12)) >>> q.aparca(5, '5555-EEE', datetime(2025, 5, 12, hour=16)) >>> len(q) # doctesttag: +TAG=1_parking 7 >>> q.matricules # doctesttag: +TAG=1_parking ['4444-DDD', '', '2222-BBB', '', '3333-CCC', '5555-EEE', '1111-AAA'] >>> q.arribades # doctesttag: +TAG=1_parking [datetime.datetime(2025, 5, 12, 11, 0), None, datetime.datetime(2025, 5, 11, 9, 0), None, datetime.datetime(2025, 5, 11, 10, 0), datetime.datetime(2025, 5, 12, 16, 0), datetime.datetime(2025, 5, 12, 12, 0)] >>> q.ocupacio() # doctesttag: +TAG=1_parking (5, 2) >>> q['3333-CCC'] # doctesttag: +TAG=1_parking 4 >>> q['RRR'] # doctesttag: +TAG=1_parking -1 >>> q.desaparca(6) >>> q.desaparca(2) >>> q.desaparca(5) >>> q.aparca(2, '6666-FFF', datetime(2025, 8, 12, hour=20)) >>> len(q) # doctesttag: +TAG=1_parking 7 >>> q.ocupacio() # doctesttag: +TAG=1_parking (3, 4) >>> q.matricules # doctesttag: +TAG=1_parking ['4444-DDD', '', '6666-FFF', '', '3333-CCC', '', ''] >>> q.arribades [datetime.datetime(2025, 5, 12, 11, 0), None, datetime.datetime(2025, 8, 12, 20, 0), None, datetime.datetime(2025, 5, 11, 10, 0), None, None] >>> q['1111-AAA'] # doctesttag: +TAG=1_parking -1 >>> q['6666-FFF'] # doctesttag: +TAG=1_parking 2 Tests classe Parking iterable ----------------------------- >>> from parkings import Parking >>> from datetime import datetime >>> p = Parking(11) >>> p.aparca(2, '1234-ABC', datetime(2025, 5, 11, hour=10, minute=0)) >>> p.aparca(5, '2126-RRR', datetime(2025, 5, 11, hour=12, minute=0)) >>> p.aparca(1, '8364-VTL', datetime(2025, 5, 11, hour=13, minute=0)) >>> p.aparca(3, '2222-MKF', datetime(2025, 5, 13, hour=12, minute=0)) >>> p.aparca(8, 'B-5632-NB', datetime(2025, 5, 17, hour=13, minute=0)) >>> if '__iter__' in dir(p): ... for matricula in p: # doctesttag: +TAG=2_iterp ... print(matricula) 8364-VTL 1234-ABC 2222-MKF 2126-RRR B-5632-NB >>> for i in [4,6,7,9,0]: ... p.aparca(i, f"G-{i*100:04d}", datetime(2025, 7, 2, hour=i+2)) >>> if '__iter__' in dir(p): ... for matricula in p: # doctesttag: +TAG=2_iterp ... print(matricula) G-0000 8364-VTL 1234-ABC 2222-MKF G-0400 2126-RRR G-0600 G-0700 B-5632-NB G-0900 >>> q = Parking(100) >>> for i in range(20): ... q.aparca((i*17)%100, f"X-{i:06d}", datetime(2020, 7, 1, hour=i%24)) >>> if '__iter__' in dir(p): ... for matricula in q: # doctesttag: +TAG=2_iterp ... print(matricula) X-000000 X-000006 X-000012 X-000018 X-000001 X-000007 X-000013 X-000019 X-000002 X-000008 X-000014 X-000003 X-000009 X-000015 X-000004 X-000010 X-000016 X-000005 X-000011 X-000017 >>> q = Parking(200) >>> for i in range(20): ... q.aparca((i*123)%200, f"X-{i:06d}", datetime(2020, 7, 1, hour=i%24)) >>> if '__iter__' in dir(p): ... list(q) # doctesttag: +TAG=2_iterp ['X-000000', 'X-000018', 'X-000005', 'X-000010', 'X-000015', 'X-000002', 'X-000007', 'X-000012', 'X-000017', 'X-000004', 'X-000009', 'X-000014', 'X-000001', 'X-000019', 'X-000006', 'X-000011', 'X-000016', 'X-000003', 'X-000008', 'X-000013'] Tests classe RoboPark --------------------- >>> from roboparks import RoboPark >>> from datetime import datetime >>> p = RoboPark('Via Augusta, 89', 9) >>> p.adr # doctesttag: +TAG=3_robopark 'Via Augusta, 89' >>> p.matricules == [''] * 9 # doctesttag: +TAG=3_robopark True >>> p.arribades == [None] * 9 # doctesttag: +TAG=3_robopark True >>> len(p) # doctesttag: +TAG=3_robopark 9 >>> p.aparca('1234-ABC', datetime(2025, 5, 11, hour=10, minute=20)) >>> p.aparca('9876-MKF', datetime(2025, 5, 11, hour=10, minute=0)) >>> p.matricules # doctesttag: +TAG=3_robopark ['1234-ABC', '9876-MKF', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=3_robopark [datetime.datetime(2025, 5, 11, 10, 20), datetime.datetime(2025, 5, 11, 10, 0), None, None, None, None, None, None, None] >>> p.ocupacio() # doctesttag: +TAG=3_robopark (2, 7) >>> p.desaparca('1234-ABC') >>> p.matricules # doctesttag: +TAG=3_robopark ['', '9876-MKF', '', '', '', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=3_robopark [None, datetime.datetime(2025, 5, 11, 10, 0), None, None, None, None, None, None, None] >>> p.aparca('2126-RRR', datetime(2025, 5, 12, hour=12, minute=12)) >>> p.aparca('B-1578-TL', datetime(2025, 5, 16, hour= 7, minute=34)) >>> p.aparca('GGG', datetime(2025, 5, 19, hour= 17)) >>> p.aparca('SSS', datetime(2025, 5, 20, hour= 7)) >>> p.matricules # doctesttag: +TAG=3_robopark ['2126-RRR', '9876-MKF', 'B-1578-TL', 'GGG', 'SSS', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=3_robopark [datetime.datetime(2025, 5, 12, 12, 12), datetime.datetime(2025, 5, 11, 10, 0), datetime.datetime(2025, 5, 16, 7, 34), datetime.datetime(2025, 5, 19, 17, 0), datetime.datetime(2025, 5, 20, 7, 0), None, None, None, None] >>> p.desaparca('GGG') >>> p.desaparca('2126-RRR') >>> p.desaparca('9876-MKF') >>> p.desaparca('2126-RRR') >>> p.desaparca('TTT') >>> p.aparca('PPP', datetime(2025, 11, 3, hour= 5)) >>> p.matricules # doctesttag: +TAG=3_robopark ['PPP', '', 'B-1578-TL', '', 'SSS', '', '', '', ''] >>> p.arribades # doctesttag: +TAG=3_robopark [datetime.datetime(2025, 11, 3, 5, 0), None, datetime.datetime(2025, 5, 16, 7, 34), None, datetime.datetime(2025, 5, 20, 7, 0), None, None, None, None] >>> p.ocupacio() # doctesttag: +TAG=3_robopark (3, 6) Tests funció preu ----------------- >>> from parkings import Parking >>> from datetime import datetime >>> from cobrament import preu >>> p = Parking(10) >>> p.aparca(3, '9876-MKF', datetime(2025, 5, 12, hour=10, minute=0)) >>> p.aparca(6, '1234-ABC', datetime(2025, 5, 13, hour=10, minute=20)) >>> preu(p, '9876-MKF', datetime(2025, 5, 12, hour=12, minute=0)) # doctesttag: +TAG=4_preu 11.0 >>> preu(p, '9876-MKF', datetime(2025, 5, 12, hour=12, minute=20)) # doctesttag: +TAG=4_preu 11.5 >>> preu(p, '1234-ABC', datetime(2025, 5, 13, hour=17, minute=20)) # doctesttag: +TAG=4_preu 13.5 >>> preu(p, '1234-ABC', datetime(2025, 5, 18, hour=12, minute=20)) # doctesttag: +TAG=4_preu 71.0 >>> preu(p, '9876-MKF', datetime(2025, 6, 12, hour=17, minute=1)) # doctesttag: +TAG=4_preu 386.0 >>> preu(p, '1234-ABC', datetime(2025, 7, 4, hour=9, minute=0)) # doctesttag: +TAG=4_preu 633.5