2016-03-18 00:08:38 -07:00

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]"));
}
}
}