2017-06-04 10:20:47 -07:00
/ *
Copyright ( c ) 2017 , John Lewin
All rights reserved .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions are met :
1. Redistributions of source code must retain the above copyright notice , this
list of conditions and the following disclaimer .
2. Redistributions in binary form must reproduce the above copyright notice ,
this list of conditions and the following disclaimer in the documentation
and / or other materials provided with the distribution .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES
( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies ,
either expressed or implied , of the FreeBSD Project .
* /
using System ;
using System.Diagnostics ;
2018-12-18 09:10:05 -08:00
using System.Linq ;
2017-06-04 10:20:47 -07:00
using System.Threading ;
using System.Threading.Tasks ;
using MatterHackers.MatterControl.Library ;
2018-12-18 09:10:05 -08:00
using MatterHackers.MatterControl.PartPreviewWindow ;
using MatterHackers.MatterControl.SlicerConfiguration ;
2017-06-04 10:20:47 -07:00
using NUnit.Framework ;
2022-07-15 17:28:39 -07:00
using TestInvoker ;
2017-06-04 10:20:47 -07:00
namespace MatterHackers.MatterControl.Tests.Automation
{
2022-07-15 17:28:39 -07:00
[TestFixture, Category("MatterControl.UI.Automation"), Parallelizable(ParallelScope.Children)]
2017-06-04 10:20:47 -07:00
public class MatterControlTests
{
2022-07-15 17:28:39 -07:00
[Test, ChildProcessTest]
2017-06-04 10:20:47 -07:00
public async Task ThumbnailGenerationMode ( )
{
await MatterControlUtilities . RunTest ( async ( testRunner ) = >
{
// Automation tests should initialize with orthographic thumbnails
var item = new FileSystemFileItem ( MatterControlUtilities . GetTestItemPath ( "Rook.amf" ) ) ;
var provider = ApplicationController . Instance . Library . GetContentProvider ( item ) ;
// Generate thumbnail
var stopWatch = Stopwatch . StartNew ( ) ;
2018-06-20 22:22:37 -07:00
await provider . GetThumbnail ( item , 400 , 400 ) ;
2017-06-04 10:20:47 -07:00
Assert . Less ( stopWatch . ElapsedMilliseconds , 2000 , "Elapsed thumbnail generation for Rook.amf should be less than 2 seconds for expected orthographic mode" ) ;
} ) ;
}
2017-12-22 10:01:19 -08:00
2022-07-15 17:28:39 -07:00
[Test, ChildProcessTest]
2020-10-01 19:34:55 -07:00
public async Task ViewGenerateSupportMenu ( )
{
await MatterControlUtilities . RunTest ( testRunner = >
{
testRunner . WaitForFirstDraw ( ) ;
testRunner . AddAndSelectPrinter ( "Airwolf 3D" , "HD" ) ;
testRunner . ClickByName ( "Support SplitButton" ) ;
testRunner . ClickByName ( "Generate Support Button" ) ;
return Task . CompletedTask ;
} ) ;
}
2022-07-15 17:28:39 -07:00
[Test, ChildProcessTest]
2018-12-18 09:10:05 -08:00
public async Task PrinterTabRemainsAfterReloadAll ( )
{
await MatterControlUtilities . RunTest ( ( testRunner ) = >
{
testRunner . WaitForFirstDraw ( ) ;
// Add Guest printers
testRunner . AddAndSelectPrinter ( "Airwolf 3D" , "HD" ) ;
Assert . AreEqual (
1 ,
ApplicationController . Instance . ActivePrinters . Count ( ) ,
"One printer should exist after Airwolf add" ) ;
testRunner . SwitchToSliceSettings ( ) ;
// Move to Adhesion tab
2021-01-31 18:33:34 -08:00
testRunner . SelectSliceSettingsField ( SettingsKey . skirts ) ;
2018-12-18 09:10:05 -08:00
// Click Brim toggle field forcing ReloadAll
2020-12-31 09:33:43 -08:00
testRunner . WaitForReloadAll ( ( ) = >
{
testRunner . ClickByName ( "Create Brim Field" ) ;
ApplicationController . Instance . ReloadAll ( ) ;
} ) ;
2018-12-18 09:10:05 -08:00
// Ensure tabs remain
Assert . AreEqual (
1 ,
ApplicationController . Instance . ActivePrinters . Count ( ) ,
"One printer should exist after Airwolf add" ) ;
2020-12-31 09:33:43 -08:00
testRunner . Delay ( 1 ) ;
2019-01-16 09:06:30 -08:00
2018-12-18 09:10:05 -08:00
Assert . AreEqual (
1 ,
2019-01-16 09:06:30 -08:00
ApplicationController . Instance . MainView . TabControl . AllTabs . Select ( t = > t . TabContent ) . OfType < PrinterTabPage > ( ) . Count ( ) ,
2018-12-18 09:10:05 -08:00
"One printer tab should exist after ReloadAll" ) ;
return Task . CompletedTask ;
} , maxTimeToRun : 120 ) ;
}
2017-06-04 10:20:47 -07:00
}
}