/* Ċ Ġ* ĠModule : Ġr 2 - streamer - kotlin Ċ Ġ* ĠDevelopers : ĠQu ent in ĠG li os ca Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 . ĠRead ium ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġa ĠBSD - style Ġlicense Ġwhich Ġis Ġdetailed Ġin Ġthe Ċ Ġ* ĠLICENSE Ġfile Ġpresent Ġin Ġthe Ġproject Ġrepository Ġwhere Ġthis Ġsource Ġcode Ġis Ġmaintained . Ċ Ġ*/ Ċ Ċ package Ġorg . read ium . r 2 . streamer . parser . ep ub Ċ Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . entry Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . read ium . r 2 . shared . publication .* Ċ import Ġorg . read ium . r 2 . shared . publication . ep ub . E pub Layout Ċ import Ġorg . read ium . r 2 . shared . publication . presentation . Presentation Ċ import Ġorg . read ium . r 2 . shared . publication . presentation . presentation Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġkotlin . test . assertNotNull Ċ import Ġorg . read ium . r 2 . shared . publication . Link Ġas ĠShared Link Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠContributor Parsing Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġe pub 2 Metadata Ġ= Ġparse Package Document (" package / contributors - ep ub 2 . op f "). metadata ĊĠĠĠ Ġprivate Ġval Ġe pub 3 Metadata Ġ= Ġparse Package Document (" package / contributors - ep ub 3 . op f "). metadata ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` dc _ creator Ġis Ġby Ġdefault Ġan Ġauthor `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Author Ġ 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . authors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . authors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` dc _ publisher Ġis Ġa Ġpublisher `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Publisher Ġ 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . publish ers ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . publish ers ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` dc _ contributor Ġis Ġby Ġdefault Ġa Ġcontributor `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Contributor Ġ 1 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . contributors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . contributors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Unknown Ġroles Ġare Ġignored `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Contributor Ġ 2 "), Ġroles Ġ= Ġset Of (" unknown ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . contributors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . contributors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` file - as Ġis Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Contributor Ġ 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Sort As Ġ= ĠLocal ized String (" Sorting ĠKey ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . contributors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . contributors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Localized Ġcontributors Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Name Ġ= ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġ" Contributor Ġ 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fr " Ġto Ġ" Contribut eur Ġ 4 Ġen Ġfr anÃ§ ais " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . contributors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Only Ġthe Ġfirst Ġrole Ġis Ġconsidered Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" C ame leon ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . authors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . publish ers ). does Not Contain ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Media ĠOverlay s Ġn arr ators Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Media ĠOverlay s ĠN arr ator ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . n arr ators ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Author Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Author Ġ 2 ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . authors ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . authors ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Publisher Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Publisher Ġ 2 ") ĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . publish ers ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . publish ers ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Translator Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Translator ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . trans l ators ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . trans l ators ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Artist Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( localized Name Ġ= ĠLocal ized String (" Artist ")) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . artists ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . artists ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Ill ustr ator Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Name Ġ= ĠLocal ized String (" Ill ustr ator "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroles Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . ill ustr ators ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . ill ustr ators ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Color ist Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Name Ġ= ĠLocal ized String (" Color ist "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroles Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . color ists ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . color ists ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` N arr ator Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontributor Ġ= ĠContributor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocalized Name Ġ= ĠLocal ized String (" N arr ator "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroles Ġ= Ġempty Set () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . n arr ators ). contains ( contributor ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . n arr ators ). contains ( contributor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` No Ġmore Ġcontributor Ġthan Ġneeded `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . authors ). size (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . publish ers ). size (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . trans l ators ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . editor s ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . artists ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . ill ustr ators ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . color ists ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . n arr ators ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . contributors ). size (). isEqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . authors ). size (). isEqualTo ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . publish ers ). size (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . trans l ators ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . editor s ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . artists ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . ill ustr ators ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . color ists ). size (). isEqualTo ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . n arr ators ). size (). isEqualTo ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . contributors ). size (). isEqualTo ( 4 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠTitle Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġe pub 2 Metadata Ġ= Ġparse Package Document (" package / titles - ep ub 2 . op f "). metadata ĊĠĠĠ Ġprivate Ġval Ġe pub 3 Metadata Ġ= Ġparse Package Document (" package / titles - ep ub 3 . op f "). metadata ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Title Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . localized Title ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġ" Alice 's ĠAd vent ures Ġin ĠW onder land " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . localized Title ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġto Ġ" Alice 's ĠAd vent ures Ġin ĠW onder land ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fr " Ġto Ġ" Les ĠA vent ures Ġd ' Alice Ġau Ġp ays Ġdes Ġmer ve il les " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Subtitle Ġis Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . localized Subtitle ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" en - GB " Ġto Ġ" Alice Ġreturns Ġto Ġthe Ġmag ical Ġworld Ġfrom Ġher Ġchild hood Ġad venture ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fr " Ġto Ġ" Alice Ġre to urne Ġdans Ġle Ġmon de Ġmag ique Ġdes Ġa vent ures Ġde Ġson Ġen f ance " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` file - as Ġis Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . sort As ). isEqualTo (" Ad vent ures ") ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . sort As ). isEqualTo (" Ad vent ures ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Main Ġtitle Ġtakes Ġprecedence Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġparse Package Document (" package / title - main - pre cedence . op f "). metadata ĊĠĠĠĠĠĠĠ ĠassertThat ( metadata . title ). isEqualTo (" Main Ġtitle Ġtakes Ġprecedence ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` The Ġselected Ġsubtitle Ġhas Ġthe Ġlowest Ġdisplay - seq Ġproperty Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġparse Package Document (" package / title - multiple - subtitle s . op f "). metadata ĊĠĠĠĠĠĠĠ ĠassertThat ( metadata . localized Subtitle ). isEqualTo ( Localized String . from Strings ( map Of ( null Ġto Ġ" Subtitle Ġ 2 "))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠSubject Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcomplex Metadata Ġ= Ġparse Package Document (" package / subjects - complex . op f "). metadata Ġ// Ġe pub 3 Ġonly ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Localized Ġsubjects Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġcomplex Metadata . subjects . first () ĊĠĠĠĠĠĠĠ ĠassertNotNull ( subject ) ĊĠĠĠĠĠĠĠ ĠassertThat ( subject . localized Name ). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" en " Ġto Ġ" FI CTION Ġ/ ĠOcc ult Ġ& ĠSuper natural ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fr " Ġto Ġ" FI CTION Ġ/ ĠOcc ult e Ġ& ĠS urn ature l " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` file - as Ġis Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġcomplex Metadata . subjects . first () ĊĠĠĠĠĠĠĠ ĠassertNotNull ( subject ) ĊĠĠĠĠĠĠĠ ĠassertThat ( subject . sort As ). isEqualTo (" occ ult ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` code Ġand Ġscheme Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġcomplex Metadata . subjects . first () ĊĠĠĠĠĠĠĠ ĠassertNotNull ( subject ) ĊĠĠĠĠĠĠĠ ĠassertThat ( subject . scheme ). isEqualTo (" B IS AC ") ĊĠĠĠĠĠĠĠ ĠassertThat ( subject . code ). isEqualTo (" F IC 0 2 4 0 0 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Comma Ġseparated Ġsingle Ġsubject Ġis Ġsplit ted `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubjects Ġ= Ġparse Package Document (" package / subjects - single . op f "). metadata . subjects ĊĠĠĠĠĠĠĠ ĠassertThat ( subjects ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( localized Name Ġ= ĠLocal ized String (" apple ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( localized Name Ġ= ĠLocal ized String (" ban ana ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( localized Name Ġ= ĠLocal ized String (" pear ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Comma Ġseparated Ġmultiple Ġsubjects Ġare Ġnot Ġsplit ted `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubjects Ġ= Ġparse Package Document (" package / subjects - multiple . op f "). metadata . subjects ĊĠĠĠĠĠĠĠ ĠassertThat ( subjects ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( localized Name Ġ= ĠLocal ized String (" fi ction ")), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSubject ( localized Name Ġ= ĠLocal ized String (" apple ; Ġban ana , Ġ Ġp ear ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠDate Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġe pub 2 Metadata Ġ= Ġparse Package Document (" package / dates - ep ub 2 . op f "). metadata ĊĠĠĠ Ġprivate Ġval Ġe pub 3 Metadata Ġ= Ġparse Package Document (" package / dates - ep ub 3 . op f "). metadata ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Publication Ġdate Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠDateTime . parse (" 1 8 6 5 - 0 7 - 0 4 T 0 0 : 0 0 : 0 0 Z "). toDate () ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . published ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . published ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Modification Ġdate Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠDateTime . parse (" 2 0 1 2 - 0 4 - 0 2 T 1 2 : 4 7 : 0 0 Z "). toDate () ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . modified ). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . modified ). isEqualTo ( expected ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠMetadata Misc Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` con forms To Ġcontains Ġthe ĠE PUB Ġprofile `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe pub 2 Metadata Ġ= Ġparse Package Document (" package / contributors - ep ub 2 . op f "). metadata ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . con forms To ). isEqualTo ( set Of ( Publication . Profile . EP UB )) ĊĠĠĠĠĠĠĠ Ġval Ġe pub 3 Metadata Ġ= Ġparse Package Document (" package / contributors - ep ub 3 . op f "). metadata ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . con forms To ). isEqualTo ( set Of ( Publication . Profile . EP UB )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Unique Ġidentifier Ġis Ġright ly Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" urn : uuid : 2 " ĊĠĠĠĠĠĠĠ ĠassertThat ( parse Package Document (" package / identifier - unique . op f "). metadata . identifier ). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` R end ition Ġproperties Ġare Ġparsed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpresentation Ġ= Ġparse Package Document (" package / presentation - metadata . op f "). metadata . presentation ĊĠĠĠĠĠĠĠ ĠassertThat ( presentation . continuous ). isEqualTo ( false ) ĊĠĠĠĠĠĠĠ ĠassertThat ( presentation . overflow ). isEqualTo ( Presentation . Overflow . SC ROL LED ) ĊĠĠĠĠĠĠĠ ĠassertThat ( presentation . spread ). isEqualTo ( Presentation . Spread . BOTH ) ĊĠĠĠĠĠĠĠ ĠassertThat ( presentation . orientation ). isEqualTo ( Presentation . Orientation . LAND SC APE ) ĊĠĠĠĠĠĠĠ ĠassertThat ( presentation . layout ). isEqualTo ( E pub Layout . FIXED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Cover Ġlink Ġis Ġright ly Ġidentified `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠShared Link ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhref Ġ= Ġ"/ O EB PS / cover . jpg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġ" image / jpeg ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrel s Ġ= Ġset Of (" cover ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( parse Package Document (" package / cover - ep ub 2 . op f "). resources . first With Rel (" cover ")). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( parse Package Document (" package / cover - ep ub 3 . op f "). resources . first With Rel (" cover ")). isEqualTo ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( parse Package Document (" package / cover - mix . op f "). resources . first With Rel (" cover ")). isEqualTo ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( timeout Ġ= ĠPAR SE _ PUB _ TIMEOUT ) ĊĠĠĠ Ġfun Ġ` Building Ġof ĠMeta Items Ġtermin ates Ġeven Ġif Ġmetadata Ġcontain Ġcross Ġref in ings `() Ġ{ ĊĠĠĠĠĠĠĠ Ġparse Package Document (" package / meta - termination . op f ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` other Metadata Ġis Ġright ly Ġfilled `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġother Metadata Ġ= Ġparse Package Document (" package / meta - others . op f "). metadata . other Metadata ĊĠĠĠĠĠĠĠ ĠassertThat ( other Metadata ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV ocab ular ies . D CT ER MS Ġ+ Ġ" source ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" Feed books ", Ġmap Of ("@ value " Ġto Ġ" Web ", Ġ" http :// my . url /# scheme " Ġto Ġ" http "), Ġ" Internet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// my . url /# property 0 ", Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ value " Ġto Ġ" ref ines 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// my . url /# property 1 " Ġto Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ value " Ġto Ġ" ref ines 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// my . url /# property 2 " Ġto Ġ" ref ines 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// my . url /# property 3 " Ġto Ġ" ref ines 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( other Metadata ). contains Only Keys ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV ocab ular ies . D CT ER MS Ġ+ Ġ" source ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" presentation ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// my . url /# property 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ RunWith ( Ro bo lectric TestRunner :: class ) Ċ class ĠCollection Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġe pub 2 Metadata Ġ= Ġparse Package Document (" package / collections - ep ub 2 . op f "). metadata ĊĠĠĠ Ġprivate Ġval Ġe pub 3 Metadata Ġ= Ġparse Package Document (" package / collections - ep ub 3 . op f "). metadata ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Basic Ġcollection Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly )` () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . belongsTo Collections ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollection ( localized Name Ġ= ĠLocal ized String . from Strings ( map Of (" en " Ġto Ġ" Collection ĠB "))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Collections Ġwith Ġunknown Ġtype Ġare Ġput Ġinto Ġbelongs To Collections Ġ( ep ub 3 Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . belongsTo Collections ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollection ( localized Name Ġ= ĠLocal ized String . from Strings ( map Of (" en " Ġto Ġ" Collection ĠA "))) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Localized Ġseries Ġare Ġright ly Ġparsed Ġ( ep ub 3 Ġonly `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnames Ġ= ĠLocal ized String . from Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" en " Ġto Ġ" Series ĠA ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fr " Ġto Ġ" S Ã© rie ĠA " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . belongsTo Series ). contains ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollection ( localized Name Ġ= Ġnames , Ġidentifier Ġ= Ġ" ser - a ", Ġposition Ġ= Ġ 2 . 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Series Ġwith Ġposition Ġare Ġright ly Ġcomputed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCollection ( localized Name Ġ= ĠLocal ized String . from Strings ( map Of (" en " Ġto Ġ" Series ĠB ")), Ġposition Ġ= Ġ 1 . 5 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 2 Metadata . belongsTo Series ). contains ( expected ) ĊĠĠĠĠĠĠĠ ĠassertThat ( ep ub 3 Metadata . belongsTo Series ). contains ( expected ) ĊĠĠĠ Ġ} ĊĊ Ċ }