mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-11 13:38:33 +00:00
+ Added some + and - operator tests
+ Adjusted behavior so that using + or - repeatedly adds to the same Union/Difference object instead of a nasty nested chain
This commit is contained in:
parent
160986eb95
commit
69a739c12f
@ -13,17 +13,19 @@ namespace OSCADSharp.ConsoleTests
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
var obj = new Cube(5, 10, 20).Mirror(0, 0, 1).Mirror(0, 1, 0)
|
||||
.Rotate(15, -45, 120).Translate(-20, 10, 15).Rotate(90, 15, 25)
|
||||
.Translate(-10, -20, -20).Rotate(-90, -90, -45);
|
||||
//var obj = new Cube(5, 10, 20).Mirror(0, 0, 1).Mirror(0, 1, 0)
|
||||
// .Rotate(15, -45, 120).Translate(-20, 10, 15).Rotate(90, 15, 25)
|
||||
// .Translate(-10, -20, -20).Rotate(-90, -90, -45);
|
||||
|
||||
var pos = obj.Position();
|
||||
var cyl1 = new Cylinder(1, 100, true).Translate(pos);
|
||||
var cyl2 = new Cylinder(1, 100, true).Rotate(0, 90, 0).Translate(pos);
|
||||
var cyl3 = new Cylinder(1, 100, true).Rotate(90, 0, 0).Translate(pos);
|
||||
var axisHelper = cyl1.Union(cyl2, cyl3).Color("Red");
|
||||
var obj = new Cube() + new Sphere() + new Sphere().Translate(2, 2, 2) - new Cylinder(2, 5) + new Text3D("Hey hey!");
|
||||
|
||||
string script = obj.Union(axisHelper).ToString();
|
||||
//var pos = obj.Position();
|
||||
//var cyl1 = new Cylinder(1, 100, true).Translate(pos);
|
||||
//var cyl2 = new Cylinder(1, 100, true).Rotate(0, 90, 0).Translate(pos);
|
||||
//var cyl3 = new Cylinder(1, 100, true).Rotate(90, 0, 0).Translate(pos);
|
||||
//var axisHelper = cyl1.Union(cyl2, cyl3).Color("Red");
|
||||
|
||||
string script = obj.ToString(); //obj.Union(axisHelper).ToString();
|
||||
|
||||
File.WriteAllLines("test.scad", new string[] { script.ToString() });
|
||||
//Console.ReadKey();
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using OSCADSharp.Solids;
|
||||
using System.Linq;
|
||||
|
||||
namespace OSCADSharp.UnitTests
|
||||
{
|
||||
@ -15,5 +16,25 @@ namespace OSCADSharp.UnitTests
|
||||
|
||||
var pos = diff.Position();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Difference_MinusOperatorCreatesDifferenceObject()
|
||||
{
|
||||
var obj = new Cube() - new Sphere();
|
||||
var diff = new Sphere().Difference(new Cube());
|
||||
|
||||
Assert.IsTrue(obj.GetType() == diff.GetType());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Difference_ChainingMinusOperationAddsToTheSameDifferenceObject()
|
||||
{
|
||||
var obj = new Cube() - new Sphere() - new Text3D("WOW!") - new Cylinder().Translate(1, 2, 5);
|
||||
var diff = new Sphere().Difference(new Cube());
|
||||
|
||||
var childrenThatAreDiffs = obj.Children().Where(child => child.GetType() == diff.GetType()).Count();
|
||||
|
||||
Assert.AreEqual(0, childrenThatAreDiffs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,5 +48,25 @@ namespace OSCADSharp.UnitTests
|
||||
|
||||
Assert.IsTrue(script.IndexOf("cube(") < script.IndexOf("cylinder("));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Union_AddingObjectsCreatesUnion()
|
||||
{
|
||||
var obj = new Cube() + new Cylinder();
|
||||
var union = new Cube().Union(new Cylinder());
|
||||
|
||||
Assert.IsTrue(obj.GetType() == union.GetType());
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void Union_ChainingAdditionAddsToTheSameUnion()
|
||||
{
|
||||
var obj = new Cube() + new Sphere() + new Text3D("WOW!") + new Cylinder().Translate(1, 2, 5);
|
||||
var union = new Sphere().Union(new Cube());
|
||||
|
||||
var unionChildrenCount = obj.Children().Where(child => child.GetType() == union.GetType()).Count();
|
||||
|
||||
Assert.AreEqual(0, unionChildrenCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -307,7 +307,20 @@ namespace OSCADSharp
|
||||
/// <returns></returns>
|
||||
public static OSCADObject operator +(OSCADObject left, OSCADObject right)
|
||||
{
|
||||
return new Union(new OSCADObject[] {left, right });
|
||||
if(left.GetType() == typeof(Union))
|
||||
{
|
||||
left.children.Add(right);
|
||||
return left;
|
||||
}
|
||||
else if(right.GetType() == typeof(Union))
|
||||
{
|
||||
right.children.Add(left);
|
||||
return right;
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Union(new OSCADObject[] {left, right });
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -318,7 +331,20 @@ namespace OSCADSharp
|
||||
/// <returns></returns>
|
||||
public static OSCADObject operator -(OSCADObject left, OSCADObject right)
|
||||
{
|
||||
return new Difference(new OSCADObject[] {left, right });
|
||||
if (left.GetType() == typeof(Difference))
|
||||
{
|
||||
left.children.Add(right);
|
||||
return left;
|
||||
}
|
||||
else if (right.GetType() == typeof(Difference))
|
||||
{
|
||||
right.children.Add(left);
|
||||
return right;
|
||||
}
|
||||
else
|
||||
{
|
||||
return new Difference(new OSCADObject[] {left, right });
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user