package Ġcom . tur bom ates . kotlin . l sport s . sdk . serializer Ċ Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . Bet Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . Score board Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . Fixture Update Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . Heartbeat Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . KeepAlive Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . L ives core Update Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . Market Update Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . Out right Le ag ues Message Ċ import Ġcom . tur bom ates . kotlin . l sport s . sdk . model . message . Set tlement Message Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . util . UUID Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠMessage Serializer Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` fixture Ġupdate Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 1 ,\" Msg Id \": 2 ,\" Msg Guid \":\" 0 e 4 4 cf 1 e - 8 1 9 4 - 4 9 7 4 - ae 2 b - ec 1 bf 1 a 8 7 f 0 d \",\" Server Timestamp \": 1 6 4 1 9 8 9 9 5 2 }, \" Body \":{\" Events \": [{ \" Fixture Id \": 8 0 6 9 3 2 4 ,\" Fixture \":{\" Sport \":{\" Id \": 4 8 2 4 2 ,\" Name \":\" Basket ball \" }, \" Location \":{\" Id \": 2 4 8 ,\" Name \":\" International \" }, \" League \":{\" Id \": 4 3 9 0 2 ,\" Name \":\" N BA ĠL iga ĠPro Ġ 4 x 5 mins Ġ( E ) \" }, \" StartDate \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 8 : 0 0 \",\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 0 0 . 2 4 4 9 6 5 \",\" Status \": 1 ,\" Participants \": [{ \" Id \": 5 2 6 5 1 3 6 3 ,\" Name \":\" San ĠAnt onio ĠSp urs Ġ( ole - g 4 2 0 )\ ", \" Position \":\" 1 \" },{ \" Id \": 5 2 6 0 1 7 5 5 ,\" Name \":\" boss vl ados 0 _ 0 Ġes ports \",\" Position \":\" 2 \" }] }, \" L ives core \": null ,\" Mark ets \": null }] }}" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠFix ture Update Message ) ĊĠĠĠĠĠĠĠ Ġval Ġfixture Update Message Ġ= Ġmessage Ġas ĠFix ture Update Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . FIX TURE _ UPDATE , Ġfixture Update Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 0 e 4 4 cf 1 e - 8 1 9 4 - 4 9 7 4 - ae 2 b - ec 1 bf 1 a 8 7 f 0 d "), Ġfixture Update Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 6 9 3 2 4 , Ġfixture Update Message . body . events . first (). fixture Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 2 6 5 1 3 6 3 , Ġfixture Update Message . body . events . first (). fixture . participants . first (). id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` li ves core Ġupdate Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 2 ,\" Msg Id \": 1 ,\" Msg Guid \":\" 0 ba 4 f 0 8 c - 4 1 9 0 - 4 a 1 8 - b 6 b 7 - c 3 0 8 8 bbd 7 aa 0 \",\" Server Timestamp \": 1 6 4 1 9 8 9 9 5 7 }, \" Body \":{\" Events \": [{ \" Fixture Id \": 8 0 6 7 5 4 0 ,\" L ives core \":{\" Score board \":{\" Status \": 3 ,\" Current Period \": 1 0 0 ,\" Time \":\" 5 4 0 0 \",\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 1 \" },{ \" Position \":\" 2 \",\" Value \":\" 2 \" }] }, \" Periods \": [{ \" Type \": 1 0 0 ,\" Is Finished \": true ,\" Is Confirmed \": true ,\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 1 \" },{ \" Position \":\" 2 \",\" Value \":\" 2 \" }], \" Incident s \": null ,\" Sub Periods \": null ,\" SequenceNumber \": 0 },{ \" Type \": 1 0 ,\" Is Finished \": true ,\" Is Confirmed \": true ,\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 0 \" },{ \" Position \":\" 2 \",\" Value \":\" 1 \" }], \" Incident s \": [{ \" Period \": 1 0 ,\" Incident Type \": 1 ,\" Seconds \": 0 ,\" Participant Position \":\" 0 \",\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 0 \" },{ \" Position \":\" 2 \",\" Value \":\" 1 \" }]} ],\" Sub Periods \": null ,\" SequenceNumber \": 0 },{ \" Type \": 2 0 ,\" Is Finished \": true ,\" Is Confirmed \": true ,\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 1 \" },{ \" Position \":\" 2 \",\" Value \":\" 1 \" }], \" Incident s \": [{ \" Period \": 2 0 ,\" Incident Type \": 1 ,\" Seconds \": 0 ,\" Participant Position \":\" 0 \",\" Results \": [{ \" Position \":\" 1 \",\" Value \":\" 1 \" },{ \" Position \":\" 2 \",\" Value \":\" 2 \" }]} ],\" Sub Periods \": null ,\" SequenceNumber \": 0 }], \" L ives core Extra Data \": [] }, \" Mark ets \": null }] }}" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠL ives core Update Message ) ĊĠĠĠĠĠĠĠ Ġval Ġlives core Update Message Ġ= Ġmessage Ġas ĠL ives core Update Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . LI V ES CORE _ UPDATE , Ġlives core Update Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 0 ba 4 f 0 8 c - 4 1 9 0 - 4 a 1 8 - b 6 b 7 - c 3 0 8 8 bbd 7 aa 0 "), Ġlives core Update Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 6 7 5 4 0 , Ġlives core Update Message . body . events . first (). fixture Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Score board . Status . FINISHED , Ġlives core Update Message . body . events . first (). li ves core . score board . status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` market Ġupdate Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 3 ,\" Msg Id \": 0 ,\" Msg Guid \":\" 4 e 0 e 2 9 5 5 - 6 3 4 0 - 4 9 2 6 - 9 7 9 9 - 0 6 4 a 9 8 cb 1 7 6 6 \",\" Server Timestamp \": 1 6 4 1 9 8 9 9 6 7 }, \" Body \":{\" Events \": [{ \" Fixture Id \": 8 0 6 1 8 6 3 ,\" L ives core \": null ,\" Mark ets \": [{ \" Id \": 2 2 6 ,\" Name \":\" 1 2 ĠIncluding ĠOver time \",\" Providers \": [{ \" Id \": 1 3 ,\" Name \":\" B Win \",\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 2 7 . 8 3 1 5 4 0 6 Z \",\" B ets \": [{ \" Id \": 1 1 6 3 9 0 9 6 7 6 8 0 6 1 8 6 3 ,\" Name \":\" 1 \",\" Status \": 1 ,\" Start Price \":\" 2 . 1 5 \",\" Price \":\" 2 . 5 \",\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 2 7 . 8 3 1 5 4 0 6 Z \" },{ \" Id \": 1 5 6 4 9 7 3 6 7 9 8 0 6 1 8 6 3 ,\" Name \":\" 2 \",\" Status \": 1 ,\" Start Price \":\" 1 . 6 5 \",\" Price \":\" 1 . 5 \",\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 2 7 . 8 3 1 5 4 0 6 Z \" }]} ]} ]} ] }}" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠMarket Update Message ) ĊĠĠĠĠĠĠĠ Ġval Ġmarket Update Message Ġ= Ġmessage Ġas ĠMarket Update Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . MARK ET _ UPDATE , Ġmarket Update Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 4 e 0 e 2 9 5 5 - 6 3 4 0 - 4 9 2 6 - 9 7 9 9 - 0 6 4 a 9 8 cb 1 7 6 6 "), Ġmarket Update Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 6 1 8 6 3 , Ġmarket Update Message . body . events . first (). fixture Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 . 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarket Update Message . body . events . first (). mark ets . first (). providers . first (). b ets . first (). start Price ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` market Ġupdate Ġmessage Ġwith Ġset tlement Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= Ġ"{\" Header \":{\" Type \": 3 ,\" Msg Id \": 0 ,\" Msg Guid \":\" 9 9 4 9 8 c 2 8 - c 2 0 b - 4 fb 3 - 9 6 8 c - ad 6 1 4 6 1 3 e 9 a 0 \",\" Server Timestamp \": 1 6 4 4 4 5 1 4 0 4 }, \" Body \":{\" Events \": [{ \" Fixture Id \": 8 0 9 0 2 2 6 ,\" L ives core \": null ,\" Mark ets \": [{ \" Id \": 7 1 1 ,\" Name \":\" Player ĠTo ĠScore ĠIn ĠAny time \",\" Providers \": [{ \" Id \": 1 3 ,\" Name \":\" B Win \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 4 . 2 5 7 6 2 5 5 Z \",\" B ets \": [{ \" Id \": 1 8 8 2 1 3 6 7 2 4 8 0 9 0 2 2 6 ,\" Name \":\" J osh ĠB row nh ill \",\" Status \": 2 ,\" Start Price \":\" 1 3 . 0 \",\" Price \":\" 1 3 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 4 8 3 9 6 3 4 6 8 8 0 9 0 2 2 6 ,\" Name \":\" A aron ĠW an - B iss aka \",\" Status \": 2 ,\" Start Price \":\" 2 1 . 0 \",\" Price \":\" 2 1 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 8 6 3 7 9 3 9 6 4 8 0 9 0 2 2 6 ,\" Name \":\" J ad on ĠSan cho \",\" Status \": 2 ,\" Start Price \":\" 3 . 6 \",\" Price \":\" 3 . 6 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 7 4 5 4 6 6 8 8 0 9 0 2 2 6 ,\" Name \":\" D io go ĠD al ot \",\" Status \": 2 ,\" Start Price \":\" 1 3 . 0 \",\" Price \":\" 1 5 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 8 9 4 9 1 7 8 1 2 8 0 9 0 2 2 6 ,\" Name \":\" H arry ĠMag u ire \",\" Status \": 2 ,\" Start Price \":\" 1 0 . 0 \",\" Price \":\" 1 0 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 6 1 2 6 3 7 5 1 4 8 0 9 0 2 2 6 ,\" Name \":\" J ay ĠRod rig ue z \",\" Status \": 3 ,\" Start Price \":\" 3 . 6 \",\" Price \":\" 3 . 6 \",\" Set tlement \": 2 ,\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 8 5 4 9 0 8 2 1 2 8 0 9 0 2 2 6 ,\" Name \":\" A aron ĠLen non \",\" Status \": 2 ,\" Start Price \":\" 1 0 . 0 \",\" Price \":\" 1 0 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 8 8 8 7 5 3 2 2 0 8 0 9 0 2 2 6 ,\" Name \":\" Ben ĠM ee \",\" Status \": 2 ,\" Start Price \":\" 1 3 . 0 \",\" Price \":\" 1 3 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 9 9 9 1 3 0 0 4 8 0 9 0 2 2 6 ,\" Name \":\" N eman ja ĠM atic \",\" Status \": 2 ,\" Start Price \":\" 1 0 . 0 \",\" Price \":\" 1 0 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 9 7 0 8 7 6 0 1 2 8 0 9 0 2 2 6 ,\" Name \":\" Phil ĠJ ones \",\" Status \": 2 ,\" Start Price \":\" 2 1 . 0 \",\" Price \":\" 2 1 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 7 1 0 1 2 4 0 1 2 8 0 9 0 2 2 6 ,\" Name \":\" Char lie ĠT aylor \",\" Status \": 2 ,\" Start Price \":\" 4 1 . 0 \",\" Price \":\" 5 1 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 5 2 5 9 7 1 5 7 0 8 0 9 0 2 2 6 ,\" Name \":\" Alex ĠT el les \",\" Status \": 2 ,\" Start Price \":\" 1 5 . 0 \",\" Price \":\" 1 5 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 0 5 8 6 2 1 8 8 8 0 9 0 2 2 6 ,\" Name \":\" An thon y ĠE lang a \",\" Status \": 2 ,\" Start Price \":\" 3 . 5 \",\" Price \":\" 3 . 7 5 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 5 1 3 0 3 6 3 5 6 8 0 9 0 2 2 6 ,\" Name \":\" Lu ke ĠSh aw \",\" Status \": 2 ,\" Start Price \":\" 1 5 . 0 \",\" Price \":\" 1 5 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 3 9 0 1 0 3 5 2 4 8 0 9 0 2 2 6 ,\" Name \":\" Mar cus ĠR ash ford \",\" Status \": 2 ,\" Start Price \":\" 2 . 4 \",\" Price \":\" 2 . 5 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 9 3 4 9 4 3 4 6 2 8 0 9 0 2 2 6 ,\" Name \":\" J esse ĠL ing ard \",\" Status \": 2 ,\" Start Price \":\" 3 . 6 \",\" Price \":\" 3 . 6 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 5 1 1 7 0 8 2 0 4 8 0 9 0 2 2 6 ,\" Name \":\" K evin ĠLong \",\" Status \": 2 ,\" Start Price \":\" 2 6 . 0 \",\" Price \":\" 2 6 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 6 1 7 4 8 0 6 6 0 8 0 9 0 2 2 6 ,\" Name \":\" Pa ul ĠP og ba \",\" Status \": 3 ,\" Start Price \":\" 4 . 5 \",\" Price \":\" 4 . 5 \",\" Set tlement \": 2 ,\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 2 1 2 6 3 8 5 2 8 0 9 0 2 2 6 ,\" Name \":\" F red \",\" Status \": 2 ,\" Start Price \":\" 8 . 0 \",\" Price \":\" 8 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 1 9 1 6 1 4 0 9 2 8 0 9 0 2 2 6 ,\" Name \":\" B run o ĠF ern an des \",\" Status \": 2 ,\" Start Price \":\" 2 . 7 \",\" Price \":\" 2 . 7 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 3 0 5 5 5 9 7 6 4 8 0 9 0 2 2 6 ,\" Name \":\" Ed in son ĠC av ani \",\" Status \": 2 ,\" Start Price \":\" 2 . 4 \",\" Price \":\" 2 . 4 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 9 4 8 2 6 7 3 2 8 0 9 0 2 2 6 ,\" Name \":\" J uan ĠMan uel ĠM ata \",\" Status \": 2 ,\" Start Price \":\" 5 . 0 \",\" Price \":\" 5 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 6 2 9 6 2 3 0 2 0 8 0 9 0 2 2 6 ,\" Name \":\" D ale ĠSte ph ens \",\" Status \": 2 ,\" Start Price \":\" 1 7 . 0 \",\" Price \":\" 1 9 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 5 4 4 1 4 6 2 5 2 8 0 9 0 2 2 6 ,\" Name \":\" O wen ĠD od gson \",\" Status \": 2 ,\" Start Price \":\" 1 2 . 0 \",\" Price \":\" 1 3 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 5 2 2 7 4 5 6 1 2 8 0 9 0 2 2 6 ,\" Name \":\" Jack ĠC ork \",\" Status \": 2 ,\" Start Price \":\" 1 7 . 0 \",\" Price \":\" 1 9 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 6 2 2 7 7 9 9 2 4 8 0 9 0 2 2 6 ,\" Name \":\" Conn or ĠRob erts \",\" Status \": 2 ,\" Start Price \":\" 1 7 . 0 \",\" Price \":\" 1 7 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 6 0 4 4 2 2 3 1 6 8 0 9 0 2 2 6 ,\" Name \":\" E ric ĠB ail ly \",\" Status \": 2 ,\" Start Price \":\" 1 7 . 0 \",\" Price \":\" 1 7 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 9 7 2 9 6 8 4 5 0 8 0 9 0 2 2 6 ,\" Name \":\" C rist iano ĠR onal do \",\" Status \": 2 ,\" Start Price \":\" 2 . 1 5 \",\" Price \":\" 2 . 1 5 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 8 6 2 2 0 3 6 6 8 8 0 9 0 2 2 6 ,\" Name \":\" B arn es , ĠA sh ley \",\" Status \": 2 ,\" Start Price \":\" 3 . 6 \",\" Price \":\" 3 . 6 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 7 3 8 9 0 9 2 9 2 8 0 9 0 2 2 6 ,\" Name \":\" N athan ĠCol lin s \",\" Status \": 2 ,\" Start Price \":\" 2 1 . 0 \",\" Price \":\" 2 3 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 5 0 5 4 1 9 7 3 2 8 0 9 0 2 2 6 ,\" Name \":\" B obby ĠThomas \",\" Status \": 2 ,\" Start Price \":\" 3 4 . 0 \",\" Price \":\" 3 4 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 7 3 1 2 2 9 4 3 0 8 0 9 0 2 2 6 ,\" Name \":\" James ĠT ark owski \",\" Status \": 2 ,\" Start Price \":\" 2 1 . 0 \",\" Price \":\" 2 3 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 7 7 6 5 1 3 2 6 0 8 0 9 0 2 2 6 ,\" Name \":\" R aph ael ĠVar ane \",\" Status \": 3 ,\" Start Price \":\" 1 5 . 0 \",\" Price \":\" 1 5 . 0 \",\" Set tlement \": - 1 ,\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 8 4 7 3 8 7 5 6 4 8 0 9 0 2 2 6 ,\" Name \":\" Mat thew ĠLow ton \",\" Status \": 2 ,\" Start Price \":\" 2 9 . 0 \",\" Price \":\" 2 9 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 5 2 1 6 3 6 3 2 4 8 0 9 0 2 2 6 ,\" Name \":\" A sh ley ĠWest wood \",\" Status \": 2 ,\" Start Price \":\" 1 5 . 0 \",\" Price \":\" 1 5 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 7 6 2 3 5 1 3 3 2 8 0 9 0 2 2 6 ,\" Name \":\" V ictor ĠL inde lo f \",\" Status \": 2 ,\" Start Price \":\" 1 7 . 0 \",\" Price \":\" 1 7 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 9 8 7 5 0 4 1 2 8 0 9 0 2 2 6 ,\" Name \":\" E rik ĠP iet ers \",\" Status \": 2 ,\" Start Price \":\" 2 6 . 0 \",\" Price \":\" 2 6 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 4 2 4 7 8 6 8 9 2 8 0 9 0 2 2 6 ,\" Name \":\" S cott ĠM ct om in ay \",\" Status \": 2 ,\" Start Price \":\" 6 . 5 \",\" Price \":\" 6 . 5 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 3 9 2 3 6 2 6 4 4 8 0 9 0 2 2 6 ,\" Name \":\" W out ĠWe gh or st \",\" Status \": 2 ,\" Start Price \":\" 3 . 3 \",\" Price \":\" 3 . 3 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 2 6 0 1 4 2 2 8 8 0 9 0 2 2 6 ,\" Name \":\" B ards ley , ĠPhil \",\" Status \": 2 ,\" Start Price \":\" 2 9 . 0 \",\" Price \":\" 3 4 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 8 4 1 2 3 7 7 3 0 8 0 9 0 2 2 6 ,\" Name \":\" Max w el ĠCor net \",\" Status \": 2 ,\" Start Price \":\" 3 . 2 5 \",\" Price \":\" 3 . 3 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" },{ \" Id \": 1 2 3 1 1 3 0 1 5 0 8 0 9 0 2 2 6 ,\" Name \":\" Dw ight ĠMc ne il \",\" Status \": 2 ,\" Start Price \":\" 1 0 . 0 \",\" Price \":\" 1 0 . 0 \",\" Last Update \":\" 2 0 2 2 - 0 2 - 1 0 T 0 0 : 0 3 : 2 3 . 0 9 6 1 6 2 8 Z \" }]} ]} ]} ] }}" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠMarket Update Message ) ĊĠĠĠĠĠĠĠ Ġval Ġmarket Update Message Ġ= Ġmessage Ġas ĠMarket Update Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . MARK ET _ UPDATE , Ġmarket Update Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 9 9 4 9 8 c 2 8 - c 2 0 b - 4 fb 3 - 9 6 8 c - ad 6 1 4 6 1 3 e 9 a 0 "), Ġmarket Update Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 9 0 2 2 6 , Ġmarket Update Message . body . events . first (). fixture Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 3 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarket Update Message . body . events . first (). mark ets . first (). providers . first (). b ets . first (). start Price ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` keep Ġalive Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 3 1 ,\" Msg Guid \":\" 3 7 a 4 cf 5 a - 1 9 a 9 - 4 5 5 c - b 7 5 0 - c 4 0 8 5 7 0 fb cb 9 \",\" Server Timestamp \": 1 6 4 2 0 7 4 0 1 8 }, \" Body \":{\" KeepAlive \":{\" Active Events \": [ 8 0 6 6 6 1 5 , 8 0 6 7 0 0 7 , 8 0 6 8 0 4 9 , 8 0 6 8 5 0 2 , 8 0 7 0 3 0 9 , 8 0 7 0 4 4 3 , 8 0 7 0 4 8 7 , 8 0 7 0 5 9 3 , 8 0 7 1 0 8 4 , 8 0 6 1 9 5 3 ],\" Extra Data \": null ,\" Provider Id \": 7 5 }} }" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠKeep Alive Message ) ĊĠĠĠĠĠĠĠ Ġval Ġkeep Alive Message Ġ= Ġmessage Ġas ĠKeep Alive Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . KEEP _ AL IVE , Ġkeep Alive Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 3 7 a 4 cf 5 a - 1 9 a 9 - 4 5 5 c - b 7 5 0 - c 4 0 8 5 7 0 fb cb 9 "), Ġkeep Alive Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 6 6 6 1 5 , Ġmessage . body . keep Alive . active Events . first ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` heartbeat Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 3 2 ,\" Msg Guid \":\" eab 4 4 cc 7 - 8 0 7 0 - 4 f 3 9 - 9 a 6 d - 3 ccf 1 0 9 1 6 dc 5 \",\" Server Timestamp \": 1 6 4 1 9 8 9 9 3 9 }}" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠHeart beat Message ) ĊĠĠĠĠĠĠĠ Ġval Ġheartbeat Message Ġ= Ġmessage Ġas ĠHeart beat Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . HE ART BE AT , Ġheartbeat Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" eab 4 4 cc 7 - 8 0 7 0 - 4 f 3 9 - 9 a 6 d - 3 ccf 1 0 9 1 6 dc 5 "), Ġheartbeat Message . header . msg Guid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` set tlement Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 3 5 ,\" Msg Id \": 1 ,\" Msg Guid \":\" ca 4 da 5 7 0 - a 8 7 d - 4 e 0 6 - 9 d 6 8 - 7 7 0 b 2 2 9 a 2 df 4 \",\" Server Timestamp \": 1 6 4 1 9 8 9 9 5 5 }, \" Body \":{\" Events \": [{ \" Fixture Id \": 8 0 6 6 4 3 0 ,\" L ives core \": null ,\" Mark ets \": [{ \" Id \": 9 ,\" Name \":\" Correct ĠScore Ġ 1 st ĠPeriod \",\" Providers \": [{ \" Id \": 1 4 5 ,\" Name \":\" 1 X Bet \",\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 1 5 . 8 4 0 8 9 2 5 Z \",\" B ets \": [{ \" Id \": 1 3 6 0 4 6 9 3 7 1 8 0 6 6 4 3 0 ,\" Name \":\" 6 - 2 \",\" Status \": 3 ,\" Start Price \":\" 6 . 0 \",\" Price \":\" 5 . 5 \",\" Set tlement \": 1 ,\" Last Update \":\" 2 0 2 2 - 0 1 - 1 2 T 1 2 : 1 9 : 1 5 . 8 3 7 4 2 7 Z \" }]} ]} ]} ] }}\ n " ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠSet tlement Message ) ĊĠĠĠĠĠĠĠ Ġval Ġset tlement Message Ġ= Ġmessage Ġas ĠSet tlement Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . SETT LEMENT S , Ġset tlement Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" ca 4 da 5 7 0 - a 8 7 d - 4 e 0 6 - 9 d 6 8 - 7 7 0 b 2 2 9 a 2 df 4 "), Ġset tlement Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 0 6 6 4 3 0 , Ġset tlement Message . body . events . first (). fixture Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBet . Set tlement . LO SER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset tlement Message . body . events . first (). mark ets . first (). providers . first (). b ets . first (). set tlement ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` out right Ġle ag ues Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"{\" Header \":{\" Type \": 3 8 ,\" Msg Id \": 1 0 ,\" Msg Guid \":\" c 6 4 c 8 f 2 b - de 0 b - 4 1 2 b - a 9 2 7 - 4 2 3 f 1 fc 3 3 8 4 b \",\" Server Timestamp \": 1 6 4 4 3 1 3 4 1 1 }, \" Body \":{\" Comp etition \":{\" Id \": 4 0 5 6 7 ,\" Name \":\" AT P ĠR ome \",\" Type \": 3 ,\" Comp et itions \": [{ \" Id \": 2 0 2 1 ,\" Name \":\" 2 0 2 1 \",\" Type \": 4 ,\" Events \": [{ \" Fixture Id \": 6 9 3 6 3 8 8 ,\" L ives core \": null ,\" Mark ets \": null ,\" Out right League \":{\" Sport \":{\" Id \": 5 4 0 9 4 ,\" Name \":\" T enn is \" }, \" Location \":{\" Id \": 2 1 5 ,\" Name \":\" It aly \" }, \" Last Update \":\" 2 0 2 1 - 0 9 - 1 3 T 1 7 : 2 2 : 3 0 . 4 8 9 2 4 2 \",\" Status \": 3 }} ]} ]}} }" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠOut right Le ag ues Message ) ĊĠĠĠĠĠĠĠ Ġval Ġout right Le ag ues Message Ġ= Ġmessage Ġas ĠOut right Le ag ues Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . OUT RIGHT _ LE AG UES , Ġout right Le ag ues Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" c 6 4 c 8 f 2 b - de 0 b - 4 1 2 b - a 9 2 7 - 4 2 3 f 1 fc 3 3 8 4 b "), Ġout right Le ag ues Message . header . msg Guid ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 9 3 6 3 8 8 , Ġout right Le ag ues Message . body . comp etition . compet itions !!. first (). events !!. first (). fixture Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` out right Ġle ag ues Ġbad Ġmessage Ġde serialization `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġincome Data Ġ= Ġ"{\" Header \":{\" Type \": 3 8 ,\" Msg Id \": 2 8 ,\" Msg Guid \":\" 7 4 ce 0 6 2 5 - a 3 bc - 4 1 d 4 - 9 a 6 b - a 4 1 5 9 eb 3 6 2 0 0 \",\" Server Timestamp \": 1 6 4 4 4 1 2 1 8 3 }, \" Body \":{\" Comp etition \":{\" Id \": 0 ,\" Name \": null ,\" Type \": 0 }} }" ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠJson . decode FromString ( Message Serializer , Ġincome Data ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( message Ġis ĠOut right Le ag ues Message ) ĊĠĠĠĠĠĠĠ Ġval Ġout right Le ag ues Message Ġ= Ġmessage Ġas ĠOut right Le ag ues Message ĊĠĠĠĠĠĠĠ ĠassertEquals ( Message . Type . OUT RIGHT _ LE AG UES , Ġout right Le ag ues Message . header . type ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( UUID . fromString (" 7 4 ce 0 6 2 5 - a 3 bc - 4 1 d 4 - 9 a 6 b - a 4 1 5 9 eb 3 6 2 0 0 "), Ġout right Le ag ues Message . header . msg Guid ) ĊĠĠĠ Ġ} Ċ } Ċ