package Ġcom . github . mv ys ny . k ari bud sl . v 1 0 Ċ Ċ import Ġcom . github . mv ys ny . dyn atest . Dyn a Node Group Ċ import Ġcom . github . mv ys ny . dyn atest . Dyn a Test Ċ import Ġcom . github . mv ys ny . k ari but esting . v 1 0 . Mock V aad in Ċ import Ġcom . vaadin . flow . component . Abstract Field Ċ import Ġcom . vaadin . flow . data . binder . Binder Ċ import Ġcom . vaadin . flow . component . checkbox . Checkbox Ċ import Ġcom . vaadin . flow . component . HasValue Ċ import Ġcom . vaadin . flow . component . datepicker . DatePicker Ċ import Ġcom . vaadin . flow . component . ordered layout . Vertical Layout Ċ import Ġcom . vaadin . flow . component . text field . Number Field Ċ import Ġcom . vaadin . flow . component . text field . TextArea Ċ import Ġcom . vaadin . flow . component . text field . TextField Ċ import Ġjava . io . Serializable Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . BigInteger Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Zone Id Ċ import Ġjavax . validation . constraints . NotNull Ċ import Ġjavax . validation . constraints . Past Or Present Ċ import Ġjavax . validation . constraints . Size Ċ import Ġkotlin . test . expect Ċ Ċ fun ĠDyn a Node Group . binder UtilsTest () Ġ{ ĊĊĠĠĠ ĠbeforeEach Ġ{ ĠMock V aad in . setup () Ġ} ĊĠĠĠ ĠafterEach Ġ{ ĠMock V aad in . te ar Down () Ġ} ĊĊĠĠĠ Ġtest (" Read Bean With Null Fields ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / vaadin / framework / issues / 8 6 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm ( binder ) ĊĠĠĠĠĠĠĠ Ġform . clear () ĊĠĠĠĠĠĠĠ Ġbinder . read Bean ( Person ()) ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . fullName . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( null ) Ġ{ Ġform . date OfBirth . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( false ) Ġ{ Ġform . is Alive . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . comment . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . test Double . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . test Int . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . test BD . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . test BI . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ("") Ġ{ Ġform . test Long . value Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Write Bean With Null Fields ") Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// github . com / vaadin / framework / issues / 8 6 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm ( binder ) ĊĠĠĠĠĠĠĠ Ġform . clear () ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= ĠPerson (" Z aph od ĠBe eb le bro x ", ĠLocalDate . of ( 2 0 1 0 , Ġ 1 , Ġ 2 5 ), Ġfalse , Ġnull , Ġ" some Ġcomment ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 . 5 , Ġ 5 , Ġ 5 5 5 L , ĠBigDecimal (" 7 7 . 1 1 "), ĠBigInteger (" 1 2 3 ")) ĊĠĠĠĠĠĠĠ Ġbinder . write Bean ( person ) ĊĠĠĠĠĠĠĠ Ġexpect ( Person ( test Boolean Ġ= Ġfalse )) Ġ{ Ġperson Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Simple Bindings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm ( binder ) ĊĠĠĠĠĠĠĠ Ġform . test Double . value Ġ= Ġ" 2 5 . 5 " ĊĠĠĠĠĠĠĠ Ġform . test Int . value Ġ= Ġ" 5 " ĊĠĠĠĠĠĠĠ Ġform . test Long . value Ġ= Ġ" 5 5 5 " ĊĠĠĠĠĠĠĠ Ġform . test BI . value Ġ= Ġ" 1 2 3 " ĊĠĠĠĠĠĠĠ Ġform . test BD . value Ġ= Ġ" 7 7 . 1 1 " ĊĠĠĠĠĠĠĠ Ġform . test Boolean . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġform . test Instant . value Ġ= ĠLocalDate . of ( 2 0 1 5 , Ġ 1 , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= ĠPerson () ĊĠĠĠĠĠĠĠ Ġexpect ( true ) Ġ{ Ġbinder . write Bean If Valid ( person ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinstant Ġ= ĠLocalDate . of ( 2 0 1 5 , Ġ 1 , Ġ 2 5 ). at Start OfDay ( Zone Id . of (" UTC ")). to Instant () ĊĠĠĠĠĠĠĠ Ġexpect ( Person (" Z aph od ĠBe eb le bro x ", ĠLocalDate . of ( 2 0 1 0 , Ġ 1 , Ġ 2 5 ), Ġfalse , Ġtrue , Ġ" some Ġcomment ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 . 5 , Ġ 5 , Ġ 5 5 5 L , ĠBigDecimal (" 7 7 . 1 1 "), ĠBigInteger (" 1 2 3 "), Ġinstant )) Ġ{ Ġperson Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Valid ating Bindings ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= Ġbean Validation Binder < Person >() ĊĠĠĠĠĠĠĠ ĠForm ( binder ) ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= ĠPerson () ĊĠĠĠĠĠĠĠ Ġexpect ( true ) Ġ{ Ġbinder . write Bean If Valid ( person ) Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Person (" Z aph od ĠBe eb le bro x ", ĠLocalDate . of ( 2 0 1 0 , Ġ 1 , Ġ 2 5 ), Ġfalse , Ġfalse , Ġ" some Ġcomment ")) Ġ{ Ġperson Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" test Ġvalidation Ġerrors ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= Ġbean Validation Binder < Person >() ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm ( binder ) ĊĠĠĠĠĠĠĠ Ġform . fullName . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= ĠPerson () ĊĠĠĠĠĠĠĠ Ġexpect ( false ) Ġ{ Ġbinder . write Bean If Valid ( person ) Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Person ()) Ġ{ Ġperson Ġ} Ġ Ġ// Ġmake Ġsure Ġthat Ġno Ġvalue Ġhas Ġbeen Ġwritten ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" test Ġthat Ġbind () Ġsupports Ġboth Ġnon - nullable Ġand Ġnullable Ġproperties ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠTesting Person ( var Ġfoo : ĠString ?, Ġvar Ġbaz : ĠString ) ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= Ġbean Validation Binder < Testing Person >() ĊĠĠĠĠĠĠĠ ĠTextField (). bind ( binder ). bind ( Testing Person :: foo ) ĊĠĠĠĠĠĠĠ ĠTextField (). bind ( binder ). bind ( Testing Person :: baz ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Simple Bindings Ġwith ĠNumber Field : Ġwrite ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm 2 ( binder ) ĊĠĠĠĠĠĠĠ Ġform . test Int . value Ġ= Ġ 5 . 0 ĊĠĠĠĠĠĠĠ Ġform . test Long . value Ġ= Ġ 5 5 5 . 0 ĊĠĠĠĠĠĠĠ Ġform . test BI . value Ġ= Ġ 1 2 3 . 0 ĊĠĠĠĠĠĠĠ Ġform . test BD . value Ġ= Ġ 7 7 . 1 1 ĊĠĠĠĠĠĠĠ Ġval Ġperson Ġ= ĠPerson () ĊĠĠĠĠĠĠĠ Ġexpect ( true ) Ġ{ Ġbinder . write Bean If Valid ( person ) Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( Person ( test Int Ġ= Ġ 5 , Ġtest Long Ġ= Ġ 5 5 5 L , Ġtest BD Ġ= ĠBigDecimal (" 7 7 . 1 1 "), Ġtest BI Ġ= ĠBigInteger (" 1 2 3 "))) Ġ{ Ġperson Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" Simple Bindings Ġwith ĠNumber Field : Ġload ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġform Ġ= ĠForm 2 ( binder ) ĊĠĠĠĠĠĠĠ Ġbinder . read Bean ( Person ( test Int Ġ= Ġ 5 , Ġtest Long Ġ= Ġ 5 5 5 L , Ġtest BD Ġ= ĠBigDecimal (" 7 7 . 1 1 "), Ġtest BI Ġ= ĠBigInteger (" 1 2 3 "))) ĊĠĠĠĠĠĠĠ Ġexpect ( 5 . 0 ) Ġ{ Ġform . test Int . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 5 5 5 . 0 ) Ġ{ Ġform . test Long . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 1 2 3 . 0 ) Ġ{ Ġform . test BI . value Ġ} ĊĠĠĠĠĠĠĠ Ġexpect ( 7 7 . 1 1 ) Ġ{ Ġform . test BD . value Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtest (" guess Is ReadOnly ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinder Ġ= ĠB inder < Person >( Person :: class . java ) ĊĠĠĠĠĠĠĠ Ġexpect ( false ) Ġ{ Ġbinder . guess Is ReadOnly Ġ} ĊĠĠĠĠĠĠĠ ĠForm 2 ( binder ) ĊĠĠĠĠĠĠĠ Ġexpect ( false ) Ġ{ Ġbinder . guess Is ReadOnly Ġ} ĊĠĠĠĠĠĠĠ Ġbinder . set ReadOnly ( true ) ĊĠĠĠĠĠĠĠ Ġexpect ( true ) Ġ{ Ġbinder . guess Is ReadOnly Ġ} ĊĠĠĠĠĠĠĠ Ġbinder . set ReadOnly ( false ) ĊĠĠĠĠĠĠĠ Ġexpect ( false ) Ġ{ Ġbinder . guess Is ReadOnly Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠForm 2 ( binder : ĠB inder < Person >): ĠVertical Layout () Ġ{ ĊĠĠĠ Ġval Ġtest Int : ĠNumber Field ĊĠĠĠ Ġval Ġtest Long : ĠNumber Field ĊĠĠĠ Ġval Ġtest BD : ĠNumber Field ĊĠĠĠ Ġval Ġtest BI : ĠNumber Field ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Int Ġ= Ġnumber Field (" Test ĠInt :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). toInt (). bind ( Person :: test Int ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Long Ġ= Ġnumber Field (" Test ĠLong :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to Long (). bind ( Person :: test Long ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest BD Ġ= Ġnumber Field (" Test ĠBigDecimal :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to BigDecimal (). bind ( Person :: test BD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest BI Ġ= Ġnumber Field (" Test ĠBigInteger :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to BigInteger (). bind ( Person :: test BI ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( test Int , Ġtest Long , Ġtest BD , Ġtest BI ). forEach Ġ{ Ġit . value Ġ= Ġnull Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠForm ( binder : ĠB inder < Person >): ĠVertical Layout () Ġ{ ĊĠĠĠ Ġval ĠfullName : ĠTextField ĊĠĠĠ Ġval Ġdate OfBirth : ĠDate Picker ĊĠĠĠ Ġval Ġis Alive : ĠCheckbox ĊĠĠĠ Ġval Ġtest Boolean : ĠCheckbox ĊĠĠĠ Ġval Ġcomment : ĠText Area ĊĠĠĠ Ġval Ġtest Double : ĠTextField ĊĠĠĠ Ġval Ġtest Int : ĠTextField ĊĠĠĠ Ġval Ġtest Long : ĠTextField ĊĠĠĠ Ġval Ġtest BD : ĠTextField ĊĠĠĠ Ġval Ġtest BI : ĠTextField ĊĠĠĠ Ġval Ġtest Instant : ĠDate Picker ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠfullName Ġ= Ġtext Field (" Full ĠName :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbinding Ġto Ġa ĠBean Validation Binder Ġwill Ġalso Ġvalidate Ġthe Ġvalue Ġautomatically . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġplease Ġread Ġhttps :// vaadin . com / docs /-/ part / framework / datamodel / datamodel - forms . html Ġfor Ġmore Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). tri mm ing Converter (). bind ( Person :: fullName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" Z aph od ĠBe eb le bro x " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= Ġdate Picker (" Date Ġof ĠB irth :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). bind ( Person :: date OfBirth ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= ĠLocalDate . of ( 2 0 1 0 , Ġ 1 , Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis Alive Ġ= ĠcheckBox (" Is ĠA live ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). bind ( Person :: alive ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Boolean Ġ= ĠcheckBox (" Test ĠBoolean :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). bind ( Person :: test Boolean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomment Ġ= Ġtext Area (" Comment :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). bind ( Person :: comment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ" some Ġcomment " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Double Ġ= Ġtext Field (" Test ĠDouble :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). toDouble (). bind ( Person :: test Double ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Int Ġ= Ġtext Field (" Test ĠInt :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). toInt (). bind ( Person :: test Int ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Long Ġ= Ġtext Field (" Test ĠLong :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to Long (). bind ( Person :: test Long ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest BD Ġ= Ġtext Field (" Test ĠBigDecimal :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to BigDecimal (). bind ( Person :: test BD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest BI Ġ= Ġtext Field (" Test ĠBigInteger :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to BigInteger (). bind ( Person :: test BI ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Instant Ġ= Ġdate Picker (" Created :") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( binder ). to Instant (). bind ( Person :: created ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf < HasValue < Abstract Field . Component Value ChangeEvent < TextField , ĠString >, ĠString >>( fullName , Ġtest Double , Ġtest Int , Ġtest Long , Ġtest BD , Ġtest BI ). forEach Ġ{ Ġit . value Ġ= Ġ"" Ġ} ĊĠĠĠĠĠĠĠ Ġcomment . value Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġdate OfBirth . value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġis Alive . value Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠPerson (@ field : NotNull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : Size ( min Ġ= Ġ 3 , Ġmax Ġ= Ġ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠfullName : ĠString ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : NotNull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : Past Or Present ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdate OfBirth : ĠLocalDate ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ field : NotNull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġalive : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Boolean : ĠBoolean ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcomment : ĠString ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Double : ĠDouble ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Int : ĠInt ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Long : ĠLong ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest BD : ĠBigDecimal ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest BI : ĠBigInteger ? Ġ= Ġnull , ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcreated : ĠInstant ? Ġ= Ġnull Ċ ) Ġ: ĠSerializable Ċ