Getting interaction volumes to be able to be scripted in automation runner
Better testing of offsets Refactoring
This commit is contained in:
parent
b9cc00c2e9
commit
a84701be03
7 changed files with 108 additions and 58 deletions
|
|
@ -26,7 +26,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
// Get View3DWidget
|
||||
View3DWidget view3D = testRunner.GetWidgetByName("View3DWidget", out _, 3) as View3DWidget;
|
||||
|
|
@ -59,7 +59,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
// Get View3DWidget and count Scene.Children before Copy button is clicked
|
||||
View3DWidget view3D = testRunner.GetWidgetByName("View3DWidget", out _, 3) as View3DWidget;
|
||||
|
|
@ -81,6 +81,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
// Get MeshGroupCount before Group is clicked
|
||||
Assert.AreEqual(6, scene.Children.Count, "Scene should have 6 parts after copy loop");
|
||||
|
||||
// select all
|
||||
testRunner.Type("^a");
|
||||
|
||||
testRunner.ClickByName("3D View Group");
|
||||
|
|
@ -102,7 +103,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
var view3D = testRunner.GetWidgetByName("View3DWidget", out _) as View3DWidget;
|
||||
var scene = view3D.InteractionLayer.Scene;
|
||||
|
|
@ -137,7 +138,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
var view3D = testRunner.GetWidgetByName("View3DWidget", out _) as View3DWidget;
|
||||
var scene = view3D.InteractionLayer.Scene;
|
||||
|
|
@ -192,7 +193,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
// Get View3DWidget
|
||||
var view3D = testRunner.GetWidgetByName("View3DWidget", out _) as View3DWidget;
|
||||
|
|
@ -237,13 +238,54 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
await MatterControlUtilities.RunTest((testRunner) =>
|
||||
{
|
||||
AutomationRunner.TimeToMoveMouse = .1;
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
testRunner.AddAndSelectPrinter("Airwolf 3D", "HD");
|
||||
|
||||
var view3D = testRunner.GetWidgetByName("View3DWidget", out _) as View3DWidget;
|
||||
var scene1 = view3D.InteractionLayer.Scene;
|
||||
|
||||
testRunner.AddDefaultFileToBedplate(partName: "Row Item MatterControl - Coin.stl");
|
||||
testRunner.NavigateToFolder("Calibration Parts Row Item Collection");
|
||||
|
||||
// test group 2 objects
|
||||
RunDoUndoTest(testRunner, scene1, (scene) =>
|
||||
{
|
||||
AddBoxABoxBToBed(testRunner, scene);
|
||||
Assert.AreEqual(2, scene1.Children.Count());
|
||||
},
|
||||
(scene) =>
|
||||
{
|
||||
testRunner.ClickByName("View3DWidget"); // place focus back in the scene
|
||||
testRunner.Type("^a"); // select all
|
||||
testRunner.ClickByName("3D View Group");
|
||||
testRunner.ClickByName("View3DWidget"); // place focus back in the scene
|
||||
testRunner.Type(" "); // select none
|
||||
testRunner.Delay(() => scene1.Children.Count() == 1, .5);
|
||||
Assert.AreEqual(1, scene1.Children.Count());
|
||||
testRunner.Delay(() => scene.SelectedItem == null, .5);
|
||||
});
|
||||
|
||||
// test mirror operations
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button X");
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button Y");
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button Z");
|
||||
|
||||
var coinName = "MatterControl - Coin.stl";
|
||||
// test drag x y translation
|
||||
RunDoUndoTest(testRunner, scene1, (scene) =>
|
||||
{
|
||||
AddCoinToBed(testRunner, scene);
|
||||
},
|
||||
(scene) =>
|
||||
{
|
||||
var part = testRunner.GetObjectByName(coinName, out _) as IObject3D;
|
||||
var start = part.GetAxisAlignedBoundingBox(Matrix4X4.Identity).Center;
|
||||
testRunner.DragDropByName(coinName, coinName, offsetDrop: new Point2D(40, 0));
|
||||
var end = part.GetAxisAlignedBoundingBox(Matrix4X4.Identity).Center;
|
||||
Assert.Greater(end.x, start.x);
|
||||
Assert.Less(end.y, start.y);
|
||||
Assert.True(Math.Abs(end.z - start.z) < .001);
|
||||
});
|
||||
|
||||
// test z translation
|
||||
RunDoUndoTest(testRunner, scene1, (scene) =>
|
||||
|
|
@ -252,22 +294,12 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
},
|
||||
(scene) =>
|
||||
{
|
||||
testRunner.DragDropByName("MoveInZControl", "MoveInZControl", offsetDrop: new Point2D(0, 40));
|
||||
});
|
||||
|
||||
// test mirror operations
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button X");
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button Y");
|
||||
TestMirrorDoUndo(testRunner, scene1, "Mirror Button Z");
|
||||
|
||||
// test drag x y translation
|
||||
RunDoUndoTest(testRunner, scene1, (scene) =>
|
||||
{
|
||||
AddCoinToBed(testRunner, scene);
|
||||
},
|
||||
(scene) =>
|
||||
{
|
||||
testRunner.DragDropByName("MatterControl - Coin.stl", "MatterControl - Coin.stl", offsetDrop: new Point2D(40, 0));
|
||||
var part = testRunner.GetObjectByName(coinName, out _) as IObject3D;
|
||||
var startZ = part.GetAxisAlignedBoundingBox(Matrix4X4.Identity).Center.z;
|
||||
// TODO: the offest drag is due to the aabb not being a great representation of the object, improve that and remove this offset.
|
||||
testRunner.DragDropByName("MoveInZControl", "MoveInZControl", offsetDrag: new Point2D(8, 0), offsetDrop: new Point2D(0, 40));
|
||||
var endZ = part.GetAxisAlignedBoundingBox(Matrix4X4.Identity).Center.z;
|
||||
Assert.Greater(endZ, startZ);
|
||||
});
|
||||
|
||||
view3D.CloseOnIdle();
|
||||
|
|
@ -279,7 +311,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
|
||||
private static void AddCoinToBed(AutomationRunner testRunner, InteractiveScene scene)
|
||||
{
|
||||
testRunner.AddSelectedItemToBedplate();
|
||||
testRunner.AddItemToBedplate(partName: "Row Item MatterControl - Coin.stl");
|
||||
testRunner.Delay(.1);
|
||||
// TODO: assert the part is centered on the bed
|
||||
|
||||
|
|
@ -287,6 +319,23 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
Assert.IsNotNull(scene.SelectedItem);
|
||||
}
|
||||
|
||||
private static void AddBoxABoxBToBed(AutomationRunner testRunner, InteractiveScene scene)
|
||||
{
|
||||
var item = "Calibration - Box.stl";
|
||||
testRunner.AddItemToBedplate(item);
|
||||
testRunner.Delay(.1);
|
||||
// move the first one over
|
||||
testRunner.DragDropByName(item, item, offsetDrop: new Point2D(40, 40));
|
||||
var part = testRunner.GetObjectByName(item, out _) as IObject3D;
|
||||
part.Name = "BoxA";
|
||||
|
||||
testRunner.AddItemToBedplate();
|
||||
testRunner.Delay(.1);
|
||||
|
||||
part = testRunner.GetObjectByName(item, out _) as IObject3D;
|
||||
part.Name = "BoxB";
|
||||
}
|
||||
|
||||
private void TestMirrorDoUndo(AutomationRunner testRunner, InteractiveScene scene1, string mirrorButtonName)
|
||||
{
|
||||
RunDoUndoTest(testRunner, scene1, (scene) =>
|
||||
|
|
@ -307,9 +356,12 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
string scenePath = GetSceneTempPath();
|
||||
|
||||
// clear the bed
|
||||
testRunner.ClickByName("Bed Options Menu");
|
||||
testRunner.ClickByName("Clear Bed Menu Item");
|
||||
if (scene.Children.Count() > 0)
|
||||
{
|
||||
// clear the bed
|
||||
testRunner.ClickByName("Bed Options Menu");
|
||||
testRunner.ClickByName("Clear Bed Menu Item");
|
||||
}
|
||||
|
||||
InitializeTest(scene);
|
||||
|
||||
|
|
@ -333,10 +385,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
// unselect the part
|
||||
testRunner.ClickByName("View3DWidget"); // place focus back in the scene
|
||||
testRunner.Type(" "); // clear the selection (type a space)
|
||||
testRunner.Delay(() =>
|
||||
{
|
||||
return scene.SelectedItem == null;
|
||||
}, .5);
|
||||
testRunner.Delay(() => scene.SelectedItem == null, .5);
|
||||
Assert.IsNull(scene.SelectedItem);
|
||||
|
||||
// with the part unselected
|
||||
|
|
@ -374,7 +423,8 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
return true;
|
||||
}
|
||||
|
||||
if (v1.Contains("Matrix"))
|
||||
if (v1.Contains("Matrix")
|
||||
&& v2.Contains("Matrix"))
|
||||
{
|
||||
double[] test = new double[] { 0, 1, 2, 3 };
|
||||
var expected = JsonConvert.SerializeObject(test, Formatting.Indented);
|
||||
|
|
@ -433,7 +483,7 @@ namespace MatterHackers.MatterControl.Tests.Automation
|
|||
{
|
||||
testRunner.CloseSignInAndPrinterSelect();
|
||||
|
||||
testRunner.AddDefaultFileToBedplate();
|
||||
testRunner.AddItemToBedplate();
|
||||
|
||||
var view3D = testRunner.GetWidgetByName("View3DWidget", out _) as View3DWidget;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue