package Ġkotlinx . kotlin ui čĊč Ċ import Ġio . mock k .* č Ċ import Ġkotlinx . serialization . json . Json č Ċ import Ġorg . junit . Assert č Ċ import Ġorg . junit . Test č Ċ import Ġandroid . graphics . Type face Ġas ĠUX Font čĊč Ċ class ĠFont Test Ġ{ čĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġserialize () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠJson Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ// ĠNormal čĊĠĠĠĠĠĠĠ Ġval Ġorig _ n Ġ= ĠFont . title čĊĠĠĠĠĠĠĠ Ġval Ġdata _ n Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ n ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ n Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ n ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ n , Ġjson _ n ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" title " č Ċ } """. trim Indent (), Ġdata _ n čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠNamed Provider čĊĠĠĠĠĠĠĠ Ġval Ġorig _ np _ a Ġ= ĠFont . custom (" name ", Ġ 1 f ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ np _ a Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ np _ a ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ np _ a Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ np _ a ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ np _ a , Ġjson _ np _ a ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" named ", čĊĠĠĠ Ġ" name ": Ġ" name ", čĊĠĠĠ Ġ" size ": Ġ 1 . 0 č Ċ } """. trim Indent (), Ġdata _ np _ a čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġval Ġorig _ np _ b Ġ= ĠFont . custom (" name ", Ġ 1 f ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ np _ b Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ np _ b ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ np _ b Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ np _ b ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ np _ b , Ġjson _ np _ b ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" named ", čĊĠĠĠ Ġ" name ": Ġ" name ", čĊĠĠĠ Ġ" size ": Ġ 1 . 0 č Ċ } """. trim Indent (), Ġdata _ np _ b čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠĠĠĠĠ Ġval Ġorig _ np _ c Ġ= ĠFont . custom (" name ", Ġ 1 f , ĠFont . TextStyle . body ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ np _ c Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ np _ c ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ np _ c Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ np _ c ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ np _ c , Ġjson _ np _ c ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" named ", čĊĠĠĠ Ġ" name ": Ġ" name ", čĊĠĠĠ Ġ" size ": Ġ 1 . 0 , čĊĠĠĠ Ġ" text Style ": Ġ" body " č Ċ } """. trim Indent (), Ġdata _ np _ c čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠPlatform Font Provider čĊĠĠĠĠĠĠĠ Ġmock k Static ( UX Font :: class ) čĊĠĠĠĠĠĠĠ Ġval Ġu xf ont Ġ= Ġmock k < UX Font >( relax ed Ġ= Ġtrue ) čĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġu xf ont . toString () Ġ} Ġreturns Ġ" font " čĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠUX Font . create (" font ", Ġany ()) Ġ} Ġreturns Ġu xf ont čĊĠĠĠĠĠĠĠ Ġval Ġorig _ p fp Ġ= ĠFont ( ux font ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ p fp Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ p fp ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ p fp Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ p fp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ p fp , Ġjson _ p fp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" platform ", čĊĠĠĠ Ġ" platform ": Ġ" font ", čĊĠĠĠ Ġ" size ": Ġ 0 . 0 č Ċ } """. trim Indent (), Ġdata _ p fp čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠSystem Provider čĊĠĠĠĠĠĠĠ Ġval Ġorig _ sp Ġ= ĠFont . system ( 1 f , ĠFont . Weight . regular , ĠFont . Design . serif ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ sp Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ sp ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ sp Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ sp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ sp , Ġjson _ sp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" system ", čĊĠĠĠ Ġ" size ": Ġ 1 . 0 , čĊĠĠĠ Ġ" design ": Ġ" serif " č Ċ } """. trim Indent (), Ġdata _ sp čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠTextStyle Provider čĊĠĠĠĠĠĠĠ Ġval Ġorig _ t sp Ġ= ĠFont . system ( Font . TextStyle . body , ĠFont . Design . serif ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ t sp Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ t sp ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ t sp Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ t sp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ t sp , Ġjson _ t sp ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" text Style ", čĊĠĠĠ Ġ" style ": Ġ" body ", čĊĠĠĠ Ġ" design ": Ġ" serif " č Ċ } """. trim Indent (), Ġdata _ t sp čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠIt alic Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ im Ġ= ĠFont . body . italic () čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ im Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ im ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ im Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ im ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ im , Ġjson _ mp _ im ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" italic ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ} č Ċ } """. trim Indent (), Ġdata _ mp _ im čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠLower case Small Caps Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ l scm Ġ= ĠFont . body . lowercase Small Caps () čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ l scm Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ l scm ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ l scm Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ l scm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ l scm , Ġjson _ mp _ l scm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" lowercase Small Caps ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ} č Ċ } """. trim Indent (), Ġdata _ mp _ l scm čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠUpper case Small Caps Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ uc sm Ġ= ĠFont . body . uppercase Small Caps () čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ uc sm Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ uc sm ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ uc sm Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ uc sm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ uc sm , Ġjson _ mp _ uc sm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" uppercase Small Caps ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ} č Ċ } """. trim Indent (), Ġdata _ mp _ uc sm čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠMono spaced Digit Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ md m Ġ= ĠFont . body . mono spaced Digit () čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ md m Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ md m ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ md m Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ md m ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ md m , Ġjson _ mp _ md m ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" mono spaced Digit ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ} č Ċ } """. trim Indent (), Ġdata _ mp _ md m čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠWeight Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ wm Ġ= ĠFont . body . weight ( Font . Weight . bold ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ wm Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ wm ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ wm Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ wm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ wm , Ġjson _ mp _ wm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" weight ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ}, čĊĠĠĠ Ġ" modifier ": Ġ" bold " č Ċ } """. trim Indent (), Ġdata _ mp _ wm čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠB old Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ bm Ġ= ĠFont . body . bold () čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ bm Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ bm ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ bm Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ bm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ bm , Ġjson _ mp _ bm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" bold ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ} č Ċ } """. trim Indent (), Ġdata _ mp _ bm čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠLead ing Modifier čĊĠĠĠĠĠĠĠ Ġval Ġorig _ mp _ lm Ġ= ĠFont . body . leading ( Font . Leading . standard ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ mp _ lm Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ mp _ lm ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ mp _ lm Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ mp _ lm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ mp _ lm , Ġjson _ mp _ lm ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" leading ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" body " čĊĠĠĠ Ġ}, čĊĠĠĠ Ġ" modifier ": Ġ" standard " č Ċ } """. trim Indent (), Ġdata _ mp _ lm čĊĠĠĠĠĠĠĠ Ġ) čĊčĊĠĠĠĠĠĠĠ Ġ// ĠNested čĊĠĠĠĠĠĠĠ Ġval Ġorig _ 0 Ġ= ĠFont . custom (" name ", Ġ 1 f ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( Font . Weight . bold ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. leading ( Font . Leading . standard ) čĊĠĠĠĠĠĠĠ Ġval Ġdata _ 0 Ġ= Ġjson . encode ToString ( Font . Serializer , Ġorig _ 0 ) čĊĠĠĠĠĠĠĠ Ġval Ġjson _ 0 Ġ= Ġjson . decode FromString ( Font . Serializer , Ġdata _ 0 ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( orig _ 0 , Ġjson _ 0 ) čĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { čĊĠĠĠ Ġ" font ": Ġ" leading ", čĊĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠ Ġ" font ": Ġ" weight ", čĊĠĠĠĠĠĠĠ Ġ" base ": Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" font ": Ġ" named ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" name ", čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" size ": Ġ 1 . 0 čĊĠĠĠĠĠĠĠ Ġ}, čĊĠĠĠĠĠĠĠ Ġ" modifier ": Ġ" bold " čĊĠĠĠ Ġ}, čĊĠĠĠ Ġ" modifier ": Ġ" standard " č Ċ } """. trim Indent (), Ġdata _ 0 čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} č Ċ }