2727import java .util .Properties ;
2828
2929import org .eclipse .swt .widgets .ProgressBar ;
30+ import org .eclipse .swt .widgets .Tree ;
31+ import org .eclipse .swt .widgets .TreeItem ;
3032import org .junit .jupiter .api .Assertions ;
3133import org .junit .jupiter .api .BeforeAll ;
3234import org .junit .jupiter .api .Test ;
3638import de .carne .swt .platform .PlatformIntegration ;
3739import de .carne .test .swt .DisableIfThreadNotSWTCapable ;
3840import de .carne .test .swt .tester .SWTTest ;
41+ import de .carne .test .swt .tester .accessor .ButtonAccessor ;
3942import de .carne .test .swt .tester .accessor .ControlAccessor ;
4043import de .carne .test .swt .tester .accessor .ItemAccessor ;
44+ import de .carne .test .swt .tester .accessor .ShellAccessor ;
4145
4246/**
4347 * Test {@link FileScannerMain} class.
@@ -55,7 +59,9 @@ void testFileScanner() {
5559 Script script = script (Application ::run ).args ("--debug" );
5660
5761 script .add (this ::doOpenFile );
58- script .add (this ::waitScanFinished , this ::doVerifyScanResult , 60 * 1000 );
62+ script .add (this ::waitScanFinished , this ::doVerifyScanResult , 60 * 1000l );
63+ script .add (this ::doOpenExport , true );
64+ script .add (() -> accessShell ("Export scan result" ), this ::doVerifyExport , 60 * 1000l );
5965 script .add (this ::doClose );
6066 script .execute ();
6167 }
@@ -73,7 +79,7 @@ private void doOpenFile() {
7379
7480 private ControlAccessor <ProgressBar > waitScanFinished () {
7581 ControlAccessor <ProgressBar > progressBarAccessor = accessShell ().accessChild (ControlAccessor ::wrapControl ,
76- ProgressBar .class , ( control ) -> true );
82+ ProgressBar .class , control -> true );
7783 Optional <? extends ProgressBar > optionalProgressBar = progressBarAccessor .getOptional ();
7884
7985 return (optionalProgressBar .isPresent () && isProgressBarMaxedOut (optionalProgressBar .get ())
@@ -85,8 +91,32 @@ private boolean isProgressBarMaxedOut(ProgressBar progressBar) {
8591 return progressBar .getSelection () >= progressBar .getMaximum ();
8692 }
8793
94+ private static final String ZIP_ARCHIVE_RESULT_NAME = "ZIP archive" ;
95+
8896 private void doVerifyScanResult (ControlAccessor <ProgressBar > progressBar ) {
97+ Tree resultView = accessShell ().accessChild (ControlAccessor ::wrapControl , Tree .class , control -> true ).get ();
98+
99+ TreeItem rootItem = resultView .getItem (0 );
100+
101+ Assertions .assertNotNull (rootItem );
102+ Assertions .assertTrue (rootItem .getExpanded ());
103+ Assertions .assertTrue (rootItem .getItemCount () == 1 );
104+
105+ TreeItem zipArchiveItem = rootItem .getItem (0 );
106+
107+ Assertions .assertEquals (ZIP_ARCHIVE_RESULT_NAME , zipArchiveItem .getText ());
108+
109+ resultView .setSelection (zipArchiveItem );
110+ }
111+
112+ private void doOpenExport () {
113+ traceAction ();
114+
115+ accessShell ().accessMenuBar ().accessMenuItem (ItemAccessor .matchText ("&Export\u2026 " )).select ();
116+ }
89117
118+ private void doVerifyExport (ShellAccessor exportDialog ) {
119+ exportDialog .accessButton (ButtonAccessor .matchText ("Cancel" )).select ();
90120 }
91121
92122 private void doClose () {
0 commit comments