2022-10-06 13:34:50 +03:00
from datetime import datetime , timedelta
from os import makedirs
2022-10-12 18:42:42 +03:00
from typing import Any
2022-10-06 13:34:50 +03:00
from ujson import loads , dumps , JSONDecodeError
from test_colors import *
import pyrmv
try :
with open ( " test_key.json " , mode = " r " , encoding = " utf-8 " ) as file :
key = loads ( file . read ( ) ) [ " key " ]
file . close ( )
except FileNotFoundError :
key = input ( " File ' test_key.json ' does not exist. Enter your RMV API key to continue: " ) . strip ( )
key_save = input ( " To skip entering your key every time I can save your apikey here. Should I do that? (Y/n) > " ) . strip ( ) . lower ( )
if key_save == " y " :
try :
with open ( " test_key.json " , mode = " w " , encoding = " utf-8 " ) as file :
file . write ( dumps ( { " key " : key } ) )
file . close ( )
except Exception as exp :
print ( f " Could not save ' test_key.json ' with your apikey due to { exp } " , flush = True )
else :
print ( " To skip entering your key every time create file ' test_key.json ' with your apikey as a value for ' key ' dict key. " , flush = True )
2022-10-08 13:27:13 +03:00
def test ( name : str , data : Any , raw : bool = False ) - > None :
2022-10-06 13:34:50 +03:00
makedirs ( " tests " , exist_ok = True )
if isinstance ( data , dict ) :
if " errorCode " in data :
print ( f " { BBLACK } [ { BRED } ER { BBLACK } ] { RESET } Test of { YELLOW } { name } { RESET } did not go well. ErrorCode is { BRED } { data [ ' errorCode ' ] } { RESET } . Check { CYAN } tests/ { name } .json { RESET } for more information. " , flush = True )
else :
print ( f " { BBLACK } [ { BGREEN } OK { BBLACK } ] { RESET } Test of { YELLOW } { name } { RESET } seems to be alright. " , flush = True )
if raw :
try :
with open ( f " tests/ { name } .json " , " w " , encoding = " utf-8 " ) as file :
file . write ( dumps ( data , indent = 4 , ensure_ascii = False ) )
file . close ( )
except JSONDecodeError :
print ( f " { BBLACK } [ { BRED } ER { BBLACK } ] { RESET } Test of { YELLOW } { name } { RESET } did not go well. ErrorCode is { BRED } { data [ ' errorCode ' ] } { RESET } . Check { CYAN } tests/ { name } .json { RESET } for more information. " , flush = True )
else :
with open ( f " tests/ { name } .txt " , " w " , encoding = " utf-8 " ) as file :
2022-10-06 15:35:10 +03:00
if isinstance ( data , list ) :
list_2 = [ ]
for item in data :
list_2 . append ( str ( item ) + " \n " )
file . writelines ( list_2 )
else :
file . write ( str ( data ) )
2022-10-06 13:34:50 +03:00
file . close ( )
if data in [ " " , " \n " ] :
2022-10-08 13:27:13 +03:00
print ( f " { BBLACK } [ { BRED } ER { BBLACK } ] { RESET } Test of { YELLOW } { name } { RESET } did not go well. ErrorCode is { BRED } { data [ ' errorCode ' ] } { RESET } . Check { CYAN } tests/ { name } .txt { RESET } for more information. " , flush = True ) # type: ignore
2022-10-06 13:34:50 +03:00
else :
print ( f " { BBLACK } [ { BGREEN } OK { BBLACK } ] { RESET } Test of { YELLOW } { name } { RESET } is not empty, so might be fine. Check { CYAN } tests/ { name } .txt { RESET } for more information. " , flush = True )
2022-10-07 12:35:02 +03:00
client = pyrmv . Client ( key )
2022-10-06 13:34:50 +03:00
2022-10-06 13:41:08 +03:00
test ( " raw_board_arrival " , pyrmv . raw . board_arrival ( key , id = " A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@X=8783648@Y=50083822@U=80@L=3008012@ " , maxJourneys = 5 ) , raw = True )
test ( " raw_board_departure " , pyrmv . raw . board_departure ( key , id = " A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@X=8783648@Y=50083822@U=80@L=3008012@ " , maxJourneys = 5 ) , raw = True )
2022-10-07 14:25:33 +03:00
test ( " raw_him_search " , pyrmv . raw . him_search ( key , dateE = datetime . now ( ) + timedelta ( days = 10 ) , timeE = datetime . now ( ) + timedelta ( days = 10 ) , minprio = 2 , trainnames = [ " S9 " ] ) , raw = True )
2022-10-06 13:34:50 +03:00
test ( " raw_journey_detail " , pyrmv . raw . journey_detail ( key , id = " 2|#VN#1#ST#1664906549#PI#0#ZI#12709#TA#0#DA#61022#1S#3008007#1T#1248#LS#3008043#LT#1323#PU#80#RT#1#CA#1aE#ZE#101#ZB#Bus 101 #PC#6#FR#3008007#FT#1248#TO#3008043#TT#1323# " ) , raw = True )
2022-10-06 15:35:10 +03:00
test ( " raw_stop_by_name " , pyrmv . raw . stop_by_name ( key , " Groß Karben " , maxNo = 3 ) , raw = True )
test ( " raw_stop_by_coords " , pyrmv . raw . stop_by_coords ( key , 50.131140 , 8.733362 , radius = 300 , maxNo = 3 ) , raw = True )
2022-10-06 13:41:08 +03:00
test ( " raw_trip_find " , pyrmv . raw . trip_find ( key , originCoordLat = " 50.084659 " , originCoordLong = " 8.785948 " , destCoordLat = 50.1233048 , destCoordLong = 8.6129742 , trafficMessages = True , numF = 3 ) , raw = True )
2022-10-08 13:27:13 +03:00
test ( " raw_trip_recon " , pyrmv . raw . trip_recon ( key , ctx = " ¶HKI¶G@F$A=2@O=50.084659, 8.785948@X=8785948@Y=50084659@u=0@a=128@$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$202210061243$202210061247$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Tempelsee Wilhelm-Schramm-Straße@L=3008012@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@L=3002510@a=128@$202210061247$202210061300$Bus 101 $$1$$$$$$§W$A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@L=3002510@a=128@$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$202210061300$202210061304$$$1$$$$$$§T$A=1@O=Offenbach (Main)-Zentrum Marktplatz@L=3011265@a=128@$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$202210061306$202210061319$ S2$$1$$$$$$§T$A=1@O=Frankfurt (Main) Taunusanlage@L=3000011@a=128@$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$202210061322$202210061333$ S5$$1$$$$$$§G@F$A=1@O=Frankfurt (Main) Rödelheim Bahnhof@L=3001217@a=128@$A=2@O=50.123304, 8.612974@X=8612974@Y=50123304@u=0@a=128@$202210061333$202210061344$$$1$$$$$$¶GP¶ft@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§bt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§tt@0@2000@120@1@100@1@@0@@@@@false@0@-1@0@-1@-1@$f@$f@$f@$f@$f@$§¶KRCC¶#VE#1# " ) , raw = True )
2022-10-06 13:34:50 +03:00
2022-10-07 12:35:02 +03:00
test ( " board_arrival " , client . board_arrival ( " A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@ " , journeys_max = 5 ) )
2022-10-12 18:42:42 +03:00
test ( " board_departure " , client . board_departure ( " A=1@O=Frankfurt (Main) Taunusanlage@X=8668765@Y=50113478@U=80@L=3000011@ " , journeys_max = 5 , retrieve_stops = False ) )
2022-10-07 14:25:33 +03:00
test ( " him_search " , client . him_search ( date_end = datetime . now ( ) + timedelta ( days = 10 ) , priority_min = 2 , train_names = [ " S9 " ] ) )
2022-10-07 12:37:38 +03:00
test ( " journey_detail " , client . journey_detail ( " 2|#VN#1#ST#1664906549#PI#0#ZI#12709#TA#0#DA#61022#1S#3008007#1T#1248#LS#3008043#LT#1323#PU#80#RT#1#CA#1aE#ZE#101#ZB#Bus 101 #PC#6#FR#3008007#FT#1248#TO#3008043#TT#1323# " , real_time_mode = pyrmv . enums . RealTimeMode . FULL ) )
2022-10-07 12:35:02 +03:00
test ( " stop_by_coords " , client . stop_by_coords ( 50.131140 , 8.733362 , radius = 300 , max_number = 3 ) )
2022-10-08 13:27:13 +03:00
test ( " stop_by_id " , client . stop_by_id ( " A=1@O=Offenbach (Main)-Zentrum Marktplatz/Frankf. Straße@X=8764456@Y=50105181@U=80@L=3002510@ " ) )
2022-10-07 12:35:02 +03:00
test ( " stop_by_name " , client . stop_by_name ( " Groß Karben " , max_number = 3 ) )
test ( " trip_find " , client . trip_find ( origin_coord_lat = " 50.084659 " , origin_coord_lon = " 8.785948 " , destination_coord_lat = 50.1233048 , destination_coord_lon = 8.6129742 , messages = True ) )
test ( " trip_recon " , client . trip_recon ( client . trip_find ( origin_coord_lat = " 50.084659 " , origin_coord_lon = " 8.785948 " , destination_coord_lat = 50.1233048 , destination_coord_lon = 8.6129742 , messages = True , trips_after_time = 1 ) [ 0 ] ) )