mirror of
https://github.com/eliasstepanik/OSCADSharpDotnet7.git
synced 2026-01-11 21:48:34 +00:00
209 lines
6.5 KiB
C#
209 lines
6.5 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Collections.Generic;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using OSCADSharp.Utility;
|
|
using OSCADSharp.Spatial;
|
|
using OSCADSharp.DataBinding;
|
|
using OSCADSharp.Solids;
|
|
|
|
namespace OSCADSharp.UnitTests
|
|
{
|
|
[TestClass]
|
|
public class CubeTests
|
|
{
|
|
[TestMethod]
|
|
public void Cube_LengthWidthHeightAffectSizeVector()
|
|
{
|
|
const double length = 10;
|
|
const double width = 7;
|
|
const double height = 9;
|
|
|
|
var cube = new Cube(length, width, height);
|
|
|
|
Assert.AreEqual(length, cube.Size.X);
|
|
Assert.AreEqual(width, cube.Size.Y);
|
|
Assert.AreEqual(height, cube.Size.Z);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_SizeAppearsInOutput()
|
|
{
|
|
var cube = new Cube(new Vector3(1.5, 5.5, 8.7));
|
|
|
|
string script = cube.ToString();
|
|
|
|
Assert.IsTrue(script.Contains(String.Format("size = [{0}, {1}, {2}]", 1.5, 5.5, 8.7)));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_CloneYieldsSameScript()
|
|
{
|
|
var cube = new Cube(new Vector3(1.5, 5.5, 8.7));
|
|
|
|
var clone = cube.Clone();
|
|
|
|
Assert.IsTrue(clone.IsSameAs(cube));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_ParameterlessCubeHasMethodCallInIt()
|
|
{
|
|
var cube = new Cube();
|
|
|
|
string script = cube.ToString();
|
|
|
|
Assert.IsTrue(script.StartsWith("cube("));
|
|
Assert.IsTrue(script.TrimEnd().EndsWith(");"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_InitialPositionForNonCenteredCubeIsHalfLengthWidthAndHeight()
|
|
{
|
|
var cube = new Cube(10, 10, 10);
|
|
|
|
Assert.IsTrue(cube.Position() == new Vector3(5, 5, 5));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_InitialPositionIfCenteredIsOrigin()
|
|
{
|
|
var cube = new Cube(25, 25, 25, true);
|
|
|
|
Assert.AreEqual(new Vector3(), cube.Position());
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_PositionMovesWithCubeOnTranslate()
|
|
{
|
|
var cube = new Cube(50, 50, 50).Translate(10, 10, 0);
|
|
|
|
Assert.AreEqual(new Vector3(35, 35, 25), cube.Position());
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_PositionMovesWithCubeOnNegativeTranslate()
|
|
{
|
|
var cube = new Cube(50, 50, 50, true).Translate(-5, 0, -15);
|
|
|
|
Assert.AreEqual(new Vector3(-5, 0, -15), cube.Position());
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_BoundsAreInExpectedPositionNotCentered()
|
|
{
|
|
var obj = new Cube(5, 5, 20, false);
|
|
|
|
Assert.AreEqual(new Vector3(5, 5, 20), obj.Bounds().TopRight);
|
|
Assert.AreEqual(new Vector3(), obj.Bounds().BottomLeft);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_BoundsAreInExpectedPositionCentered()
|
|
{
|
|
var obj = new Cube(5, 5, 20, true);
|
|
|
|
Assert.AreEqual(new Vector3(2.5, 2.5, 10), obj.Bounds().TopRight);
|
|
Assert.AreEqual(new Vector3(-2.5, -2.5, -10), obj.Bounds().BottomLeft);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_Size_XYZBindingsAppearInOutput()
|
|
{
|
|
Variable xValue = new Variable("xVal", 10.125);
|
|
Variable yValue = new Variable("yVal", 15.5);
|
|
Variable zValue = new Variable("zVal", 25);
|
|
|
|
var obj = new Cube();
|
|
obj.Bind("Size.X", xValue);
|
|
obj.Bind("Size.Y", yValue);
|
|
obj.Bind("Size.Z", zValue);
|
|
|
|
string script = obj.ToString();
|
|
|
|
Assert.AreEqual(Convert.ToDouble(xValue.Value), obj.Size.X);
|
|
Assert.AreEqual(Convert.ToDouble(yValue.Value), obj.Size.Y);
|
|
Assert.AreEqual(Convert.ToDouble(zValue.Value), obj.Size.Z);
|
|
Assert.IsTrue(script.Contains("size = [xVal, yVal, zVal]"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_Size_LengthWidthHeightindingsAppearInOutput()
|
|
{
|
|
Variable xValue = new Variable("xVal", 10.125);
|
|
Variable yValue = new Variable("yVal", 15.5);
|
|
Variable zValue = new Variable("zVal", 25);
|
|
|
|
var obj = new Cube();
|
|
obj.Bind("Length", xValue);
|
|
obj.Bind("Width", yValue);
|
|
obj.Bind("Height", zValue);
|
|
|
|
string script = obj.ToString();
|
|
|
|
Assert.AreEqual(Convert.ToDouble(xValue.Value), obj.Size.X);
|
|
Assert.AreEqual(Convert.ToDouble(yValue.Value), obj.Size.Y);
|
|
Assert.AreEqual(Convert.ToDouble(zValue.Value), obj.Size.Z);
|
|
Assert.IsTrue(script.Contains("size = [xVal, yVal, zVal]"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_CenterBindingAppearsInOutput()
|
|
{
|
|
Variable centerVal = new Variable("isCentered", true);
|
|
|
|
var obj = new Cube();
|
|
obj.Bind("Center", centerVal);
|
|
|
|
string script = obj.ToString();
|
|
|
|
Assert.AreEqual(centerVal.Value, obj.Center);
|
|
Assert.IsTrue(script.Contains("center = isCentered"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_ConstructorBindingsAppearInOutput()
|
|
{
|
|
var length = new Variable("deckBoxLength", Inches.Sixteenth * 32);
|
|
var width = new Variable("deckBoxWidth", Inches.Sixteenth * 32);
|
|
var height = new Variable("deckboxHeight", Inches.ToMillimeters(2.5));
|
|
var centered = new Variable("isCentered", true);
|
|
|
|
var cube = new Cube(length, width, height, centered);
|
|
|
|
string script = cube.ToString();
|
|
|
|
Assert.IsTrue(script.Contains("size = [deckBoxLength, deckBoxWidth, deckboxHeight]"));
|
|
Assert.IsTrue(script.Contains("center = isCentered"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_CloneHasSameBindings()
|
|
{
|
|
var cubeHeight = new Variable("myHeight", 35);
|
|
var cubeXTranslation = new Variable("xOffset", 50);
|
|
|
|
OSCADObject cube = new Cube(15, 5, 15);
|
|
cube.Bind("Height", cubeHeight);
|
|
cube = cube.Translate(cubeXTranslation, 0, 0);
|
|
|
|
var clone = cube.Clone();
|
|
|
|
string script = clone.ToString();
|
|
|
|
Assert.IsTrue(script.Contains("translate(v = [xOffset"));
|
|
Assert.IsTrue(script.Contains("size = [15, 5, myHeight]"));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void Cube_LengthWidthHeightAppearsInScriptOutput()
|
|
{
|
|
var cube = new Cube(15, 5, 12);
|
|
|
|
string script = cube.ToString();
|
|
|
|
Assert.IsTrue(script.Contains("size = [15, 5, 12]"));
|
|
}
|
|
}
|
|
}
|