/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . example . subscriptions . data Ċ Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertFalse Ċ import Ġorg . junit . Assert . assertNotNull Ċ import Ġorg . junit . Assert . assertNull Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Test Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . InputStream Reader Ċ Ċ class ĠSubscription Status Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġalready Owned IsNot Valid () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsub Ġ= ĠSubscription Status . already Owned Subscription ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsku Ġ= Ġ" TEST _ SK U ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token Ġ= Ġ" TEST _ PUR CH ASE _ TOKEN " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( sub . sku , Ġ" TEST _ SK U ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( sub . purchase Token , Ġ" TEST _ PUR CH ASE _ TOKEN ") ĊĠĠĠĠĠĠĠ ĠassertFalse (" Sub Ġmust Ġnot Ġbe Ġactive ", Ġsub . is Ent itlement Active ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" Sub Ġmust Ġbe Ġalready Ġowned ", Ġsub . sub Already Owned ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Empty FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" empty . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ ĠassertTrue (" Empty Ġdata Ġmust Ġcreate Ġan Ġempty Ġlist ", Ġsub List . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Empty From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" empty . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" Empty Ġdata Ġmust Ġcreate Ġan Ġempty Ġlist ", Ġsub List . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Invalid Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" invalid . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNull (" Invalid Ġdata Ġmust Ġreturn Ġnull ", Ġsub List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdo Not Crash With Unrecognized Key FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" unrecognized . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNull (" Unrecognized Ġdata Ġmust Ġreturn Ġnull ", Ġsub List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdo Not Crash With Unrecognized Key From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" unrecognized _ key ", Ġ" should Ġnot Ġcrash ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNull (" Unrecognized Ġdata Ġmust Ġreturn Ġnull ", Ġsub List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Basic Subscription FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" basic . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġbasic ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Basic Subscription From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" basic . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġbasic ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Basic Subscription FromJson With Unrecognized Key () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" unrecognized basic . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġbasic ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Basic Subscription From HashMap With Unrecognized Key () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" unrecognized basic . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmap [" unrecognized _ key "] Ġ= Ġ" should Ġnot Ġcrash " ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġbasic ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Prem ium Subscription From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" premium . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġprem ium ", Ġ" premium _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Prem ium Subscription FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" premium . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L J " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" S gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 7 0 5 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Subscription Ġmust Ġbe Ġprem ium ", Ġ" premium _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Account Hold FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" ac co un th old . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" SK U Ġmust Ġmatch ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" j lb ja ef kl cl b ngo bo hi j od fa ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 O zh _ Nn Sw 4 YW qc GN a V XB nd Xh Uz 1 z S - 6 v _ ND W 6 Ba V TL CM 9 V OS fj LX TV g T 2 Al Jd QD 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" TT xx e _ k WV 6 U 3 mk l XZ go J 7 Hx Y Eq tp k Ut Fs Of Vj M 0 hf 1 0 t KX HZ 1 CP H 4 d Vg Gb Cp Fy 2 e I 6 ct Y Vg G ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Renew al Ġmust Ġmatch ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 2 4 6 4 1 4 7 5 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Account Hold From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" ac co un th old . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" SK U Ġmust Ġmatch ", Ġ" basic _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" j lb ja ef kl cl b ngo bo hi j od fa ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 O zh _ Nn Sw 4 YW qc GN a V XB nd Xh Uz 1 z S - 6 v _ ND W 6 Ba V TL CM 9 V OS fj LX TV g T 2 Al Jd QD 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" TT xx e _ k WV 6 U 3 mk l XZ go J 7 Hx Y Eq tp k Ut Fs Of Vj M 0 hf 1 0 t KX HZ 1 CP H 4 d Vg Gb Cp Fy 2 e I 6 ct Y Vg G ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Renew al Ġmust Ġmatch ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 2 4 6 4 1 4 7 5 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Grace Period FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" grace period . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġgrace Ġperiod ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Grace Period From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" grace period . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġgrace Ġperiod ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Canceled Subscription FromJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" c anceled . json ") ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list FromJson String ( testData ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" SK U Ġmust Ġmatch ", Ġ" che ap _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JS gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 6 9 3 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparse Canceled Subscription From HashMap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= Ġread TestData (" c anceled . json ") ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap FromJson ( testData ) Ġ?: ĠHashMap < String , ĠAny >(). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Could Ġnot Ġrun Ġtest Ġbecause ĠHashMap Ġcould Ġnot Ġbe Ġcreated ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠSubscription Status . list From Map ( map ) ĊĠĠĠĠĠĠĠ ĠassertNotNull (" List Ġmust Ġnot Ġbe Ġnull ", Ġsub List ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sub List Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġbe Ġempty ", Ġsub List . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġsub List [ 0 ]. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" SK U Ġmust Ġmatch ", Ġ" che ap _ subscription ", Ġsku ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Token Ġmust Ġmatch ", Ġ" on hh in ben ec fb po h lg pk p ica ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AO - J 1 Oy HD w G fi 2 2 Sv G 2 V de G dr R 9 nz 0 D 3 WY _ YP da 6 qr 7 y ss md Q 6 o X 2 P KE i K fa N 4 B 9 LV x 1 L " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" JS gk LV fu Wb ho 2 Re ug y G Th Dg Ny 6 6 a 4 Elt Fl L GV w Z 4 JK _ Cf TE 5 yp Yz 7 E 0 S Gu y O 4 w QN It R 4 h UP ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpurchase Token ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue (" Subscription Ġmust Ġbe Ġactive ", Ġis Ent itlement Active ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Subscription Ġmust Ġnot Ġrenew ", Ġwill Renew ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Expiry Ġtime Ġmust Ġmatch ", Ġ 1 5 2 3 3 4 6 9 3 4 1 8 4 L , Ġactive Until Milli sec ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Free Ġtrial Ġmust Ġmatch ", Ġis Free Trial ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Grace Ġperiod Ġmust Ġmatch ", Ġis Grace Period ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse (" Account Ġhold Ġmust Ġmatch ", Ġis Account Hold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRead ĠJSON Ġfile Ġdata Ġfor Ġtesting . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġread TestData ( filename : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= Ġjava Class . getResource AsStream ( filename ) ĊĠĠĠĠĠĠĠ Ġval Ġreader Ġ= ĠBufferedReader ( InputStream Reader ( inputStream )) ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġvar Ġline : ĠString ? ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Ġ= Ġreader . readLine () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( line Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( line Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate ĠHashMap Ġfrom ĠJSON Ġstring Ġfor Ġtesting . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġmap FromJson ( data : ĠString ): ĠHashMap < String , ĠAny >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubscriptions Ġ= ĠSubscription Status . list FromJson String ( data ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠHashMap < String , ĠAny >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= ĠArrayList < HashMap < String , ĠAny >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( subscription Status Ġin Ġsubscriptions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap < String , ĠAny >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . sku Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . SK U _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . purchase Token Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . PUR CH ASE _ TOKEN _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . is Ent itlement Active Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . IS _ ENT IT LEMENT _ ACTIVE _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . will Renew Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . W ILL _ RE NEW _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . active Until Milli sec Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . ACTIVE _ UNT IL _ MILLI SEC _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . is Free Trial Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . IS _ FREE _ TR IAL _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . is Grace Period Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . IS _ GR ACE _ PERIOD _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscription Status . is Account Hold Ġas ? ĠAny )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . IS _ ACCOUNT _ H OLD _ KEY , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( Subscription Status . SUB SCRIPTION S _ KEY , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ