Files
shape_library/UnitTests/CircleTests.cs
2019-10-25 23:25:50 -06:00

118 lines
3.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using Moq;
using NUnit.Framework;
using Shapes;
namespace Tests
{
public class CircleTests
{
private Mock<Stream> _mockFileStream;
private Mock<IFileIO> _mockFileIO;
[SetUp]
public void Setup()
{
_mockFileIO = new Mock<IFileIO>();
_mockFileStream = new Mock<Stream>();
}
[Test]
public void CircleXYTest()
{
var circle = new Circle(10, 10, 1);
Assert.AreEqual(10, circle.CenterPoint.X);
Assert.AreEqual(10, circle.CenterPoint.Y);
Assert.AreEqual(2, circle.Height);
Assert.AreEqual(2, circle.Height);
Assert.AreEqual(2, circle.Width);
Assert.AreEqual(Color.Empty, circle.Fill);
Assert.AreEqual(Color.Black, circle.Stroke);
circle.Fill = Color.Aqua;
Assert.AreEqual(Color.Aqua, circle.Fill);
Assert.IsNull(circle.Points);
Assert.AreEqual(1, circle.Radius);
Assert.IsFalse(circle.CompositeShape);
}
[Test]
public void CirclePointRadiusTest()
{
var circle = new Circle(new Shapes.Point(10, 10), 1);
Assert.AreEqual(10, circle.CenterPoint.X);
Assert.AreEqual(10, circle.CenterPoint.Y);
Assert.AreEqual(2, circle.Height);
Assert.AreEqual(2, circle.Height);
Assert.AreEqual(2, circle.Width);
Assert.AreEqual(Color.Empty, circle.Fill);
Assert.AreEqual(Color.Black, circle.Stroke);
circle.Fill = Color.Aqua;
Assert.AreEqual(Color.Aqua, circle.Fill);
Assert.IsNull(circle.Points);
Assert.AreEqual(1, circle.Radius);
Assert.IsFalse(circle.CompositeShape);
}
[Test]
public void InvalidCircleXYTest()
{
Assert.That(() => new Circle(10, 10, -1), Throws.TypeOf<ShapeException>()
.With.Message.EqualTo("Invalid radius"));
}
[Test]
public void InvalidCirclePointRadiusTest()
{
Assert.That(() => new Circle(new Shapes.Point(10, 10), -1), Throws.TypeOf<ShapeException>()
.With.Message.EqualTo("Invalid radius"));
}
[Test]
public void ScaleTest()
{
var circle = new Circle(10, 10, 1);
circle.Scale(10);
Assert.AreEqual(10, circle.Radius);
}
[Test]
public void BadScaleTest()
{
var circle = new Circle(10, 10, 1);
Assert.That(() => circle.Scale(-10), Throws.TypeOf<ShapeException>()
.With.Message.EqualTo("Invalid scale factor"));
}
[Test]
public void ComputeAreaTest()
{
var circle = new Circle(10, 10, 1.26);
Assert.AreEqual(Math.PI * Math.Pow(1.26, 2), circle.ComputeArea());
}
[Test]
public void SaveTest()
{
Shape createdObj = null;
var circle = new Circle(
new Shapes.Point(20, 20), 5);
_mockFileIO.Setup(x => x.SaveShape(It.IsAny<Stream>(), It.IsAny<Shape>()))
.Callback<Stream, Shape>((i, x) => { createdObj = x; });
circle._fileWriter = _mockFileIO.Object;
circle.Save(_mockFileStream.Object);
Assert.AreEqual(circle, createdObj);
_mockFileIO.Verify(x => x.SaveShape(It.IsAny<Stream>(),
It.IsAny<Shape>()), Times.Once);
}
}
}