package Ġcom . jetbrains . edu . course creator . yaml Ċ Ċ import Ġcom . fasterxml . jackson . databind . exc . Invalid Definition Exception Ċ import Ġcom . intellij . util . Throwable Runnable Ċ import Ġcom . jetbrains . edu . learning . E du Names Ċ import Ġcom . jetbrains . edu . learning . co def or ces . Code forces Names Ċ import Ġcom . jetbrains . edu . learning . co def or ces . course Format . Code forces Course Ċ import Ġcom . jetbrains . edu . learning . course Format . Course Ċ import Ġcom . jetbrains . edu . learning . course Format . Course Mode Ċ import Ġcom . jetbrains . edu . learning . course Format . E du Course Ċ import Ġcom . jetbrains . edu . learning . course Format . E du Format Names . DEFAULT _ ENVIRONMENT Ċ import Ġcom . jetbrains . edu . learning . course Format . Framework Lesson Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . E du Task Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . Ide Task Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . Output Task Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . choice . Choice Option Status Ċ import Ġcom . jetbrains . edu . learning . course Format . tasks . choice . Choice Task Ċ import Ġcom . jetbrains . edu . learning . cour ser a . Cour ser aC ourse Ċ import Ġcom . jetbrains . edu . learning . cour ser a . Cour ser a Names Ċ import Ġcom . jetbrains . edu . learning . step ik . hyper skill . HY PER SK ILL _ TYPE Ċ import Ġcom . jetbrains . edu . learning . step ik . hyper skill . course Format . Remote E du Task Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Deserializer . deserialize Course Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Deserializer . deserialize Lesson Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Deserializer . deserialize Section Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Deserializer . deserialize Task Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Deserializer . getC ourse Mode Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Format Synchron izer . MAP PER Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml TestCase Ċ import Ġjava . util .* ĊĊ Ċ class ĠYaml Deserialization Test Ġ: ĠYaml TestCase () Ġ{ ĊĊĠ Ġfun Ġ` test Ġcourse `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġsolutions Hidden Ġ= Ġtrue ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" the Ġfirst Ġlesson " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" the Ġsecond Ġlesson " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| solutions _ hidden : Ġ$ solutions Hidden ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertEquals ( name , Ġcourse . name ) ĊĠĠĠ ĠassertEquals ( language , Ġcourse . human Language ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertEquals ( solutions Hidden , Ġcourse . solutions Hidden ) ĊĠĠĠ ĠassertNull ( course . language Version ) ĊĠĠĠ ĠassertNotNull ( course . description ) ĊĠĠĠ ĠassertEquals ( DEFAULT _ ENVIRONMENT , Ġcourse . environment ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġcourse . items . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ ĠassertFalse ( course . is Market place ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġno Ġcontent `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertFalse ( course . solutions Hidden ) ĊĠĠĠ Ġassert Empty ( course . items ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġenvironment `() Ġ{ ĊĠĠĠ Ġval Ġenvironment Ġ= ĠE du Names . ANDROID ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠEnglish ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| environment : Ġ$ environment ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġlesson 1 ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertEquals ( environment , Ġcourse . environment ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcour ser a Ġcourse `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" the Ġfirst Ġlesson " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" the Ġsecond Ġlesson " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġ${ Cour ser a Names . CO URSE _ TYPE } ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) Ġas ĠCour ser aC ourse ĊĠĠĠ ĠassertEquals ( name , Ġcourse . name ) ĊĠĠĠ ĠassertEquals ( language , Ġcourse . human Language ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertFalse ( course . submit Man ually ) ĊĠĠĠ ĠassertNotNull ( course . description ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġcourse . items . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ ĠassertFalse ( course . is Market place ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġtype `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" the Ġfirst Ġlesson " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" the Ġsecond Ġlesson " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġ${ HY PER SK ILL _ TYPE } ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= ĠMAP PER . deserialize Course ( yaml Content ) ĊĠĠĠ ĠassertEquals ( name , Ġcourse . name ) ĊĠĠĠ ĠassertEquals ( language , Ġcourse . human Language ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġcourse . items . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ ĠassertFalse ( course . is Market place ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġlanguage Ġversion `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġprogramming Language Version Ġ= Ġ" 1 . 4 2 " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| programming _ language _ version : Ġ$ programming Language Version ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertEquals ( programming Language Version , Ġcourse . language Version ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġlink `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġlink Ġ= Ġ" https :// course _ link . com " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| feedback _ link : Ġ$ link ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertEquals ( link , Ġcourse . feedback Link ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcourse Ġwith Ġcontent Ġtags `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġcontent Tags Ġ= ĠlistOf (" kotlin ", Ġ" cycles ") ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| tags : Ġ$ content Tags ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertEquals ( content Tags , Ġcourse . content Tags ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcourse Ġwith Ġprogram TypeId `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġprogram TypeId Ġ= Ġ" 1 0 0 0 " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġ${ Code forces Names . CODE FOR CES _ CO URSE _ TYPE } ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : ĠEnglish ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| program _ type _ id : Ġ$ program TypeId ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) Ġas ĠCode forces Course ĊĠĠĠ ĠassertEquals ( name , Ġcourse . name ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertEquals ( program TypeId , Ġcourse . program TypeId ) ĊĠĠĠ ĠassertNotNull ( course . description ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcode forces Ġcourse Ġwithout Ġprogram TypeId `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġ${ Code forces Names . CODE FOR CES _ CO URSE _ TYPE } ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : ĠEnglish ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) Ġas ĠCode forces Course ĊĠĠĠ ĠassertEquals ( name , Ġcourse . name ) ĊĠĠĠ ĠassertEquals ( programming Language , Ġcourse . language ById !!. displayName ) ĊĠĠĠ ĠassertEquals (" 0 ", Ġcourse . program TypeId ) ĊĠĠĠ ĠassertNotNull ( course . description ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġsection `() Ġ{ ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" Introduction ĠLess on " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" Advanced ĠLess on " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġsection Ġ= ĠMAP PER . deserialize Section ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġsection . items . map Ġ{ Ġit . name Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġsection Ġwith Ġcustom Ġpresent able Ġname `() Ġ{ ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" Introduction ĠLess on " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" Advanced ĠLess on " ĊĠĠĠ Ġval Ġcustom Section Name Ġ= Ġ" custom Ġsection Ġname " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| custom _ name : Ġ$ custom Section Name ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġsection Ġ= ĠMAP PER . deserialize Section ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġsection . items . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ ĠassertEquals ( custom Section Name , Ġsection . custom Present able Name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġsection Ġwith Ġcontent Ġtags `() Ġ{ ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" Introduction ĠLess on " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" Advanced ĠLess on " ĊĠĠĠ Ġval Ġcontent Tags Ġ= ĠlistOf (" kotlin ", Ġ" cycles ") ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠĠĠ Ġ| tags : Ġ$ content Tags ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġsection Ġ= ĠMAP PER . deserialize Section ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Lesson , Ġsecond Lesson ), Ġsection . items . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ ĠassertEquals ( content Tags , Ġsection . content Tags ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġlesson `() Ġ{ ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Task , Ġsecond Task ), Ġlesson . task List . map Ġ{ Ġit . name Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġlesson Ġwith Ġcustom Ġpresent able Ġname `() Ġ{ ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġlesson Custom Name Ġ= Ġ" my Ġbest Ġlesson " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| custom _ name : Ġ$ lesson Custom Name ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Task , Ġsecond Task ), Ġlesson . task List . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ ĠassertEquals ( lesson Custom Name , Ġlesson . custom Present able Name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġlesson Ġwith Ġexplicit Ġtype `() Ġ{ ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġlesson ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertEquals ( listOf ( first Task , Ġsecond Task ), Ġlesson . task List . map Ġ{ Ġit . name Ġ}) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġlesson Ġwith Ġcontent Ġtags `() Ġ{ ĊĠĠĠ Ġval Ġlesson Custom Name Ġ= Ġ" first Ġlesson " ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġcontent Tags Ġ= ĠlistOf (" kotlin ", Ġ" cycles ") ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| custom _ name : Ġ$ lesson Custom Name ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠĠĠ Ġ| tags : Ġ$ content Tags ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertEquals ( content Tags , Ġlesson . content Tags ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġframework Ġlesson `() Ġ{ ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġframework ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ Ġcheck ( lesson Ġis ĠFramework Lesson ) ĊĠĠĠ ĠassertEquals ( listOf ( first Task , Ġsecond Task ), Ġlesson . task List . map Ġ{ Ġit . name Ġ}) ĊĠĠĠ ĠassertTrue ( lesson . is Template Based ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġframework Ġlesson Ġwith Ġcontent Ġtags `() Ġ{ ĊĠĠĠ Ġval Ġfirst Task Ġ= Ġ" Introduction ĠTask " ĊĠĠĠ Ġval Ġsecond Task Ġ= Ġ" Advanced ĠTask " ĊĠĠĠ Ġval Ġcontent Tags Ġ= ĠlistOf (" kotlin ", Ġ" cycles ") ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġframework ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Task ĊĠĠĠĠĠ Ġ|- Ġ$ second Task ĊĠĠĠĠĠ Ġ| tags : Ġ$ content Tags ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ Ġcheck ( lesson Ġis ĠFramework Lesson ) ĊĠĠĠ ĠassertEquals ( content Tags , Ġlesson . content Tags ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġframework Ġlesson `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġframework ĊĠĠĠĠĠ Ġ| ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertTrue ( lesson Ġis ĠFramework Lesson ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġnon Ġtemp lated Ġbased Ġframework Ġlesson `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġframework ĊĠĠĠĠĠ Ġ| is _ template _ based : Ġfalse ĊĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ Ġcheck ( lesson Ġis ĠFramework Lesson ) ĊĠĠĠ ĠassertFalse ( lesson . is Template Based ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġoutput Ġtask `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġoutput ĊĠĠĠ Ġ| solution _ hidden : Ġfalse ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠOutput Task ) ĊĠĠĠ ĠassertEquals ( listOf (" Test . java "), Ġtask . task Files . map Ġ{ Ġit . key Ġ}) ĊĠĠĠ ĠassertEquals ( false , Ġtask . solution Hidden ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġide Ġtask `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġide ĊĠĠĠ Ġ| solution _ hidden : Ġtrue ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠIde Task ) ĊĠĠĠ ĠassertEquals ( listOf (" Test . java "), Ġtask . task Files . map Ġ{ Ġit . key Ġ}) ĊĠĠĠ ĠassertEquals ( true , Ġtask . solution Hidden ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġchoice Ġtask `() Ġ{ ĊĠĠĠ Ġval Ġcorrect Ġ= Ġ" correct " ĊĠĠĠ Ġval Ġincorrect Ġ= Ġ" incorrect " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġchoice ĊĠĠĠĠĠ Ġ| files : ĊĠĠĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠĠĠ Ġ| Ġ Ġvisible : Ġtrue ĊĠĠĠĠĠ Ġ| is _ multiple _ choice : Ġfalse ĊĠĠĠĠĠ Ġ| message _ correct : Ġ$ correct ĊĠĠĠĠĠ Ġ| message _ incorrect : Ġ$ incorrect ĊĠĠĠĠĠ Ġ| options : ĊĠĠĠĠĠ Ġ|- Ġtext : Ġ 1 ĊĠĠĠĠĠ Ġ| Ġ Ġis _ correct : Ġtrue ĊĠĠĠĠĠ Ġ|- Ġtext : Ġ 2 ĊĠĠĠĠĠ Ġ| Ġ Ġis _ correct : Ġfalse ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠChoice Task ) ĊĠĠĠ ĠassertEquals ( listOf (" Test . java "), Ġtask . task Files . map Ġ{ Ġit . key Ġ}) ĊĠĠĠ ĠassertEquals ( map Of (" 1 " Ġto ĠChoice Option Status . CORRECT , Ġ" 2 " Ġto ĠChoice Option Status . IN CORRECT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( task Ġas ĠChoice Task ). choice Options . associate By ({ Ġit . text Ġ}, Ġ{ Ġit . status Ġ})) ĊĠĠĠ ĠassertEquals ( correct , Ġtask . message Correct ) ĊĠĠĠ ĠassertEquals ( incorrect , Ġtask . message Incorrect ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġchoice Ġtask Ġwithout Ġanswers `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġchoice ĊĠĠĠĠĠ Ġ| files : ĊĠĠĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠĠĠ Ġ| Ġ Ġvisible : Ġtrue ĊĠĠĠĠĠ Ġ| is _ multiple _ choice : Ġfalse ĊĠĠĠĠĠ Ġ| options : ĊĠĠĠĠĠ Ġ|- Ġtext : Ġ 1 ĊĠĠĠĠĠ Ġ|- Ġtext : Ġ 2 ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠChoice Task ) ĊĠĠĠ ĠassertEquals ( listOf (" Test . java "), Ġtask . task Files . map Ġ{ Ġit . key Ġ}) ĊĠĠĠ ĠassertEquals ( map Of (" 1 " Ġto ĠChoice Option Status . UNKNOWN , Ġ" 2 " Ġto ĠChoice Option Status . UNKNOWN ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( task Ġas ĠChoice Task ). choice Options . associate By ({ Ġit . text Ġ}, Ġ{ Ġit . status Ġ})) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġedu Ġtask `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġtype Ġhere ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ ĠassertEquals ( 3 , Ġanswer Placeholder . length ) ĊĠĠĠ ĠassertEquals (" type Ġhere ", Ġanswer Placeholder . placeholder Text ) ĊĠĠĠ ĠassertEquals (" lesson 1 # task 1 # Test . java # 1 ", Ġanswer Placeholder . placeholder Dependency . toString ()) ĊĠĠĠ ĠassertNull ( task . solution Hidden ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġremote Ġedu Ġtask Ġwith Ġcheck Ġprofile `() Ġ{ ĊĠĠĠ Ġval Ġcheck Profile Ġ= Ġ" hyper skill _ go " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġremote _ edu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| check _ profile : Ġ$ check Profile ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠRemote E du Task ) ĊĠĠĠ ĠassertEquals (( task Ġas ĠRemote E du Task ). check Profile , Ġcheck Profile ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġwith Ġcustom Ġpresent able Ġname `() Ġ{ ĊĠĠĠ Ġval Ġcustom Name Ġ= Ġ" custom Ġname " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| custom _ name : Ġ$ custom Name ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġtype Ġhere ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ ĠassertEquals ( custom Name , Ġtask . custom Present able Name ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġplaceholder `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġ"" ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ ĠassertEquals ("", Ġanswer Placeholder . placeholder Text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġplaceholder Ġstarts Ġwith Ġspaces `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġ' ĠĠ Ġtype Ġhere ' ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ ĠassertEquals (" ĠĠ Ġtype Ġhere ", Ġanswer Placeholder . placeholder Text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġplaceholder Ġends Ġwith Ġspaces `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġ' type Ġhere ĠĠ Ġ' ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ ĠassertEquals (" type Ġhere ĠĠ Ġ", Ġanswer Placeholder . placeholder Text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġplaceholder Ġwith Ġinvisible Ġdependency `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġ' type Ġhere ĠĠ Ġ' ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġfalse ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ Ġval Ġplaceholder Dependency Ġ= Ġanswer Placeholder . placeholder Dependency ĊĠĠĠ ĠassertNotNull ( placeholder Dependency ) ĊĠĠĠ ĠassertFalse ( placeholder Dependency !!. isVisible ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġedu Ġtask Ġwithout Ġdependency `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġtype Ġhere ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġanswer Placeholder Ġ= Ġtask . task Files [" Test . java "] !!. answer Place holders [ 0 ] ĊĠĠĠ ĠassertEquals ( 3 , Ġanswer Placeholder . length ) ĊĠĠĠ ĠassertEquals (" type Ġhere ", Ġanswer Placeholder . placeholder Text ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġedu Ġtask Ġwith Ġcontent Ġtags `() Ġ{ ĊĠĠĠ Ġval Ġcontent Tags Ġ= ĠlistOf (" kotlin ", Ġ" cycles ") ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| custom _ name : Ġcustom ĠName ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| Ġ Ġplaceholders : ĊĠĠĠ Ġ| Ġ Ġ- Ġoffset : Ġ 0 ĊĠĠĠ Ġ| ĠĠĠ Ġlength : Ġ 3 ĊĠĠĠ Ġ| ĠĠĠ Ġplaceholder _ text : Ġtype Ġhere ĊĠĠĠ Ġ| ĠĠĠ Ġdependency : ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġlesson : Ġlesson 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġtask : Ġtask 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġfile : ĠTest . java ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġplaceholder : Ġ 1 ĊĠĠĠ Ġ| ĠĠĠĠĠ Ġis _ visible : Ġtrue ĊĠĠĠ Ġ| tags : Ġ$ content Tags ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ ĠassertEquals ( content Tags , Ġtask . content Tags ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġfeedback Ġlink `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| feedback _ link : Ġhttp :// example . com ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : ĠTest . java ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ ĠassertEquals (" http :// example . com ", Ġtask . feedback Link ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġvendor Ġwith Ġemail `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| vendor : ĊĠĠĠĠĠ Ġ| Ġ Ġname : ĠJet brains ĊĠĠĠĠĠ Ġ| Ġ Ġemail : Ġa cademy @ jetbrains . com ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ Ġval Ġvendor Ġ= Ġcourse . vendor ĊĠĠĠ ĠcheckNotNull ( vendor ) ĊĠĠĠ ĠassertEquals (" Jet brains ", Ġvendor . name ) ĊĠĠĠ ĠassertEquals (" academy @ jetbrains . com ", Ġvendor . email ) ĊĠĠĠ ĠassertNull ( vendor . url ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġvendor Ġwith Ġurl `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| vendor : ĊĠĠĠĠĠ Ġ| Ġ Ġname : ĠJet brains ĊĠĠĠĠĠ Ġ| Ġ Ġurl : Ġjet brains . com ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ Ġval Ġvendor Ġ= Ġcourse . vendor ĊĠĠĠ ĠcheckNotNull ( vendor ) ĊĠĠĠ ĠassertEquals (" Jet brains ", Ġvendor . name ) ĊĠĠĠ ĠassertEquals (" jetbrains . com ", Ġvendor . url ) ĊĠĠĠ ĠassertNull ( vendor . email ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġis Market place `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġmarket place ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertTrue ( course . is Market place ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġprivate Ġcourse `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| is _ private : Ġtrue ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertTrue ( course . is Market place Private ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġpublic Ġcourse `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertFalse ( course . is Market place Private ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġdefault Ġcourse Version `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġmarket place ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ ĠassertTrue ( course Ġis ĠE du Course ) ĊĠĠĠ ĠassertEquals ( 1 , Ġcourse . marketplace Course Version ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġfile Ġvisibility `() Ġ{ ĊĠĠĠ Ġval Ġtask FileName Ġ= Ġ" Task . java " ĊĠĠĠ Ġval Ġtest FileName Ġ= Ġ" Test . java " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| files : ĊĠĠĠ Ġ|- Ġname : Ġ$ task FileName ĊĠĠĠ Ġ| Ġ Ġvisible : Ġtrue ĊĠĠĠ Ġ|- Ġname : Ġ$ test FileName ĊĠĠĠ Ġ| Ġ Ġvisible : Ġfalse ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ ĠassertTrue ( task Ġis ĠE du Task ) ĊĠĠĠ Ġval Ġtask File Ġ= Ġtask . task Files [ task FileName ] !! ĊĠĠĠ ĠassertTrue ("$ task FileName Ġexpected Ġto Ġbe Ġvisible ", Ġtask File . isVisible ) ĊĠĠĠ Ġval Ġtest File Ġ= Ġtask . task Files [ test FileName ] !! ĊĠĠĠ ĠassertTrue ("$ test FileName Ġexpected Ġto Ġbe Ġinvisible ", Ġ! test File . isVisible ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġedu Ġtask `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| type : Ġedu ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġtask Ġ= ĠMAP PER . deserialize Task ( yaml Content ) ĊĠĠĠ Ġassert Empty ( task . task Files . values ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġlesson `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| ĊĠĠĠ Ġ| {} ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ ĠassertTrue ( lesson . task List . isEmpty ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġlesson Ġwith Ġempty Ġconfig `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġlesson Ġ= ĠMAP PER . deserialize Lesson ( yaml Content ) ĊĠĠĠ Ġassert Empty ( lesson . task List ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġsection `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| ĊĠĠĠ Ġ| {} ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġsection Ġ= ĠMAP PER . deserialize Section ( yaml Content ) ĊĠĠĠ ĠassertTrue ( section . lessons . isEmpty ()) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġempty Ġsection Ġwith Ġempty Ġconfig `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġsection Ġ= ĠMAP PER . deserialize Section ( yaml Content ) ĊĠĠĠ Ġassert Empty ( section . lessons ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcour ser a Ġmanual Ġsubmit `() Ġ{ ĊĠĠĠ Ġval Ġname Ġ= Ġ" Test ĠCourse " ĊĠĠĠ Ġval Ġlanguage Ġ= Ġ" R ussian " ĊĠĠĠ Ġval Ġprogramming Language Ġ= Ġ" Plain Ġtext " ĊĠĠĠ Ġval Ġfirst Lesson Ġ= Ġ" the Ġfirst Ġlesson " ĊĠĠĠ Ġval Ġsecond Lesson Ġ= Ġ" the Ġsecond Ġlesson " ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| type : Ġ${ Cour ser a Names . CO URSE _ TYPE } ĊĠĠĠĠĠ Ġ| submit _ man ually : Ġtrue ĊĠĠĠĠĠ Ġ| title : Ġ$ name ĊĠĠĠĠĠ Ġ| language : Ġ$ language ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : Ġ$ programming Language ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġ$ first Lesson ĊĠĠĠĠĠ Ġ|- Ġ$ second Lesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĠĠĠ Ġval Ġcourse Ġ= Ġdeserialize NotNull ( yaml Content ) Ġas ĠCour ser aC ourse ĊĠĠĠ ĠassertTrue ( course . submit Man ually ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġnon - english Ġlocale `() Ġ{ ĊĠĠĠ Ġval Ġdefault Locale Ġ= ĠLocale . getDefault () ĊĠĠĠ ĠLocale . setDefault ( Locale . K ORE AN ) ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġthe Ġfirst Ġlesson ĊĠĠĠĠĠ Ġ|- Ġthe Ġsecond Ġlesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĊĠĠĠ Ġassert No Exception ( Invalid Definition Exception :: class . java , ĠThrowable Runnable Ġ{ ĊĠĠĠĠĠ Ġdeserialize NotNull ( yaml Content ) ĊĠĠĠ Ġ}) ĊĠĠĠ ĠLocale . setDefault ( default Locale ) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġcc Ġmode `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġthe Ġfirst Ġlesson ĊĠĠĠĠĠ Ġ|- Ġthe Ġsecond Ġlesson ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĊĠĠĠ ĠassertNull ( getC ourse Mode ( yaml Content )) ĊĠ Ġ} ĊĊĠ Ġfun Ġ` test Ġstudy Ġmode `() Ġ{ ĊĠĠĠ Ġval Ġyaml Content Ġ= Ġ""" ĊĠĠĠĠĠ Ġ| title : ĠTest ĠCourse ĊĠĠĠĠĠ Ġ| language : ĠR ussian ĊĠĠĠĠĠ Ġ| summary : Ġ|- ĊĠĠĠĠĠ Ġ| Ġ ĠThis Ġis Ġa Ġcourse Ġabout Ġstring Ġtheory . ĊĠĠĠĠĠ Ġ| Ġ ĠWhy Ġnot ?" ĊĠĠĠĠĠ Ġ| programming _ language : ĠPlain Ġtext ĊĠĠĠĠĠ Ġ| content : ĊĠĠĠĠĠ Ġ|- Ġthe Ġfirst Ġlesson ĊĠĠĠĠĠ Ġ|- Ġthe Ġsecond Ġlesson ĊĠĠĠĠĠ Ġ| mode : ĠStudy ĊĠĠĠĠĠ Ġ| """. trim Margin () ĊĊĠĠĠ ĠassertEquals ( Course Mode . ST UD ENT , Ġget Course Mode ( yaml Content )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdeserialize NotNull ( yaml Content : ĠString ) Ġ: ĠCourse Ġ= ĠMAP PER . deserialize Course ( yaml Content ) Ċ }