Category Archives: Uncategorized

Unity3D’s Vector2 and Vector3 NUnit asserts

It could be just me missing something but I couldn’t find any usable Assert methods for Unity’s Vector2 and Vector3 equality. The following simple code implements the old school NUnit asserts for them using the new constraint based assert method.

The code works by calculating distance between 2 vectors and asserting that it’s smaller than delta. Comparing squared distance to squared delta would be faster but would make the code less readable. Keep in mind that even 0.001f is quite an aggressive tolerance in these cases and could easily fail for close vectors that are too far from the origin point.

Commented is code that compares all components pairwise. This may work better when you have vectors that often have NaN or Infinite components but other than that I don’t recommend using it.

/*
 * Copyright (c) 2014 Martin Preisler
 * Licensed under http://opensource.org/licenses/MIT
 */

using UnityEngine;
using NUnit.Framework;
using System;

class TestUtils
{
	#region Vector2
	public static void AreEqual(Vector2 expected, Vector2 actual, float delta, string message)
	{
		if (delta <= 0)
			delta = 0.001f;

		float distance = Vector2.Distance(expected, actual);

		if (string.IsNullOrEmpty(message))
			message = String.Format("Expected: Vector2({0}, {1})\nBut was:  Vector2({2}, {3})\nDistance: {4} is greated than allowed delta {5}",
			                        expected.x, expected.y, actual.x, actual.y,
			                        distance, delta);

		Assert.That(distance, Is.LessThanOrEqualTo(delta), message);

		/*
		if (float.IsNaN(expected.x) || float.IsInfinity(expected.x))
			Assert.That(actual.x, Is.EqualTo(expected.x), message);
		else
			Assert.That(actual.x, Is.EqualTo(expected.x).Within(delta), message);

		if (float.IsNaN(expected.y) || float.IsInfinity(expected.y))
			Assert.That(actual.y, Is.EqualTo(expected.y), message);
		else
			Assert.That(actual.y, Is.EqualTo(expected.y).Within(delta), message);
		*/
	}

	public static void AreEqual(Vector2 expected, Vector2 actual, float delta)
	{
		AreEqual(expected, actual, delta, null);
	}

	public static void AreEqual(Vector2 expected, Vector2 actual, string message)
	{
		AreEqual(expected, actual, 0, message);
	}

	public static void AreEqual(Vector2 expected, Vector2 actual)
	{
		AreEqual(expected, actual, 0, null);
	}
	#endregion

	#region Vector3
	public static void AreEqual(Vector3 expected, Vector3 actual, float delta, string message)
	{
		if (delta <= 0)
			delta = 0.001f;

		float distance = Vector3.Distance(expected, actual);

		if (string.IsNullOrEmpty(message))
			message = String.Format("Expected: Vector3({0}, {1}, {2})\nBut was:  Vector3({3}, {4}, {5})\nDistance: {6} is greated than allowed delta {7}",
			                        expected.x, expected.y, expected.z,
			                        actual.x, actual.y, actual.z,
			                        distance, delta);

		Assert.That(distance, Is.LessThanOrEqualTo(delta), message);

		/*
		if (float.IsNaN(expected.x) || float.IsInfinity(expected.x))
			Assert.That(actual.x, Is.EqualTo(expected.x), message);
		else
			Assert.That(actual.x, Is.EqualTo(expected.x).Within(delta), message);

		if (float.IsNaN(expected.y) || float.IsInfinity(expected.y))
			Assert.That(actual.y, Is.EqualTo(expected.y), message);
		else
			Assert.That(actual.y, Is.EqualTo(expected.y).Within(delta), message);

		if (float.IsNaN(expected.z) || float.IsInfinity(expected.z))
			Assert.That(actual.z, Is.EqualTo(expected.z), message);
		else
			Assert.That(actual.z, Is.EqualTo(expected.z).Within(delta), message);
		*/
	}

	public static void AreEqual(Vector3 expected, Vector3 actual, float delta)
	{
		AreEqual(expected, actual, delta, null);
	}

	public static void AreEqual(Vector3 expected, Vector3 actual, string message)
	{
		AreEqual(expected, actual, 0, message);
	}

	public static void AreEqual(Vector3 expected, Vector3 actual)
	{
		AreEqual(expected, actual, 0, null);
	}
	#endregion
}

Aldous Huxley – Brave New World (1932) EPUB + MOBI

I was looking for the aforementioned book on the internet for my Kindle and even though it’s been in public domain for a long time, there are no properly formatted versions around! The only versions I found didn’t have any TOC or chapter breaks.

The following files are my attempt to remedy the situation. They have proper chapter breaks and TOC. Feel free to submit / share this anywhere, I don’t claim any credit for reformatting the book – the files are public domain as is the book.

Reuploaded zip file: Brave_New_World.zip

Google has since disabled public sharing on the original files because it allegedly violates their guidelines. It’s public domain but Google robots can’t be reasoned with.

Brave New World – Aldous Huxley.epub
Brave New World – Aldous Huxley.mobi (this file will work on your Kindle)