// ĠCopyright Ġ 2 0 2 1 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . jetbrains . ui Ċ Ċ import Ġcom . intellij . openapi . ui . Component Validator Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . intellij . test Framework . Application Rule Ċ import Ġcom . intellij . test Framework . Disposable Rule Ċ import Ġcom . intellij . test Framework . Ed t Rule Ċ import Ġcom . intellij . test Framework . Runs In Ed t Ċ import Ġcom . intellij . ui . components . JB TextField Ċ import Ġcom . intellij . ui . layout . apply To Component Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġjavax . swing . JButton Ċ import Ġjavax . swing . JTextField Ċ Ċ @ Runs In Ed t Ċ class ĠValid ating Panel Test Ġ{ ĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġdis posable Rule Ġ= ĠDis posable Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġexecute On Ed t Rule Ġ= ĠE dt Rule () ĊĊĠĠĠ Ġ@ Rule ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġapp Rule Ġ= ĠApplication Rule () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` valid Ġpanels Ġcan Ġexecute Ġactions `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Panel Ġ= ĠTest Panel ( initial Text Value Ġ= Ġ" Valid Ġtext ") ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isTrue ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . normal Button . isEnabled ). isTrue ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Valid ating Button ()). isTrue ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Normal Button ()). isTrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invalid Ġpanels Ġcan Ġonly Ġexecute Ġnormal Ġactions `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Panel Ġ= ĠTest Panel () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isTrue ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . normal Button . isEnabled ). isTrue ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Valid ating Button ()). isFalse ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Normal Button ()). isTrue ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isFalse ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . normal Button . isEnabled ). isTrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` errors Ġget Ġapplied Ġon Ġexecuting Ġa Ġvalidating Ġaction `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Panel Ġ= ĠTest Panel () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Validator ?. validation Info ). isNull () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Valid ating Button ()). isFalse ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isFalse ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Validator ?. validation Info ?. message ). isNotEmpty ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` errors Ġget Ġapplied Ġand Ġcleared Ġon Ġtyping `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Panel Ġ= ĠTest Panel () ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Validator ?. validation Info ). isNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isTrue ĊĊĠĠĠĠĠĠĠ Ġtest Panel . textField Component . text Ġ= Ġ" Foo " ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Validator ?. validation Info ?. message ). isNotEmpty ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isFalse ĊĊĠĠĠĠĠĠĠ Ġtest Panel . textField Component . text Ġ= Ġ" Valid ĠText " ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Validator ?. validation Info ). isNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . valid ating Button . isEnabled ). isTrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` valid Ġpanels Ġcan Ġapply Ġtheir Ġstate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial Text Ġ= Ġ" Initial ĠText " ĊĠĠĠĠĠĠĠ Ġval Ġupdated Text Ġ= Ġ" Updated ĠText " ĊĠĠĠĠĠĠĠ Ġval Ġtest Panel Ġ= ĠTest Panel ( initial Text Value Ġ= Ġinitial Text ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . textField Component . text ). isEqualTo ( initial Text ) ĊĊĠĠĠĠĠĠĠ Ġtest Panel . textField Component . text Ġ= Ġupdated Text ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . execute Valid ating Button ()). isTrue ĊĊĠĠĠĠĠĠĠ ĠassertThat ( test Panel . test Text ). isEqualTo ( updated Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠTest Panel ( initial Text Value : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtest Text Ġ= Ġinitial Text Value ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalidating Button Name Ġ= Ġ" Needs Validation " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnormal Button Name Ġ= Ġ" DoesNot Need Validation " ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġvalidating Button R an Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnormal Button R an Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġtext Field Component : ĠJTextField ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġvalidating Button : ĠJButton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġnormal Button : ĠJButton ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpanel Ġ= Ġvalidating Panel ( dis posable Rule . dis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidating Button ( valid ating Button Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidating Button R an Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply To Component Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidating Button Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( normal Button Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Button R an Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply To Component Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Button Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field (:: test Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Validation On Input Ġ{ Ġit . validate Text () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Validation On Apply Ġ{ Ġit . validate Text () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply To Component Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Field Component Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠJ B TextField . validate Text () Ġ= Ġif Ġ( this . text . length Ġ< Ġ 5 ) ĠValidation Info (" Test ĠError , Ġ'${ this . text }'. length () Ġ< Ġ 5 ", Ġthis ) Ġelse Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġexecute Valid ating Button (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidating Button R an Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidating Button . do Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalidating Button R an ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġexecute Normal Button (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Button R an Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Button . do Click () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnormal Button R an ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Field Validator : ĠComponent Validator ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠComponent Validator . getInstance ( textField Component ). orElse Get ( null ) ĊĠĠĠ Ġ} Ċ } Ċ