package Ġbot . features . poll . model Ċ Ċ import Ġbot . features . poll . data . max Poll Options Number Ċ import Ġbot . features . poll . data . poll Default Thumbnail Url Ċ import Ġbot . features . poll . model . results . Poll Creation Result Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . test . run Blocking Test Ċ import Ġkotlinx . datetime . Instant Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . test . assertEquals Ċ Ċ @ Experimental Cor outines Api Ċ internal Ġclass ĠPoll Engine Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Should Ġreturn Ġerror Ġwhen Ġpoll Ġis Ġcreated Ġwith Ġan Ġinvalid Ġnumber Ġof Ġmax Ġanswers `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= ĠPoll Engine . instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġ" a / b " ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" me " ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠInstant . from Epoch Milliseconds ( 9 2 4 9 0 4 8 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Answers Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġthumbnail Url Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPoll Creation Result . Invalid Max Answers ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġengine . make Poll ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresult ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Should Ġreturn Ġerror Ġwhen Ġpoll Ġis Ġcreated Ġwithout Ġenough Ġoptions `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= ĠPoll Engine . instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġ" aaa /// " ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" me " ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠInstant . from Epoch Milliseconds ( 9 2 4 9 0 4 8 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Answers Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġthumbnail Url Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPoll Creation Result . Not En ough Options ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġengine . make Poll ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Should Ġreturn Ġerror Ġwhen Ġpoll Ġis Ġcreated Ġwith Ġtoo Ġmany Ġoptions `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= ĠPoll Engine . instance () ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġ" a / ". repeat ( max Poll Options Number Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" me " ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠInstant . from Epoch Milliseconds ( 9 2 4 9 0 4 8 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Answers Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġthumbnail Url Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPoll Creation Result . Too Many Options ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġengine . make Poll ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Should Ġreturn Ġpoll Ġwith Ġdefault Ġthumbnail Ġurl Ġand Ġnumber Ġof Ġmax Ġanswers `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġrng Ġ= ĠRandom ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= ĠPoll Engine ( rng ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġ" a / b " ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" me " ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠInstant . from Epoch Milliseconds ( 9 2 4 9 0 4 8 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Answers Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġthumbnail Url Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPoll Creation Result . Poll Created ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġpoll Default Thumbnail Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= ĠInt . MAX _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll Option ("\ uD 8 3 D \ u DD 2 5 ", Ġ" a "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll Option ("\ uD 8 3 D \ u DE 8 2 ", Ġ" b "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġengine . make Poll ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Should Ġreturn Ġpoll Ġwith Ġcustom Ġthumbnail Ġurl Ġand Ġnumber Ġof Ġmax Ġanswers `() Ġ= Ġrun Blocking Test Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠG IV EN ĊĠĠĠĠĠĠĠ Ġval Ġrng Ġ= ĠRandom ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= ĠPoll Engine ( rng ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġ" a / b " ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġ" me " ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= ĠInstant . from Epoch Milliseconds ( 9 2 4 9 0 4 8 0 0 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Answers Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġthumbnail Url Ġ= Ġ" thumbnail Url " ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠPoll Creation Result . Poll Created ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll Option ("\ uD 8 3 D \ u DD 2 5 ", Ġ" a "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll Option ("\ uD 8 3 D \ u DE 8 2 ", Ġ" b "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWHEN ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġengine . make Poll ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquestion Ġ= Ġquestion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= Ġtimestamp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmax Answers Ġ= Ġmax Answers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Url Ġ= Ġthumbnail Url ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTHEN ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġresult ) ĊĠĠĠ Ġ} Ċ }