mono/MonoGame — pull request #240 by kungfubanana (2012-01-25 20:08:59+00:00)
Title: Adds a testing harness and a few XNA conformance tests.

On Windows, the Tests solution contains a version of the tests which can be run against XNA as well as a version that can be run against MonoGame. These are standard NUnit test assemblies, and should be run as normal with NUnit.

For Mac and Linux, the state of NUnit is trickier. Mono/MonoDevelop ship with quite an old version, so a custom runner is used. So, rather than using NUnit or MonoDevelop's built-in runner, a custom runner is provided that executes the tests using the version of NUnit in ThirdParty/Libs. After the tests have completed, the default browser is invoked to view the HTML version of the results.

It would be straightforward to add support for the custom runner on Windows, if anyone wants it.

### GameTest
- Collects various tests that make assertions about the contract of the
Game class in XNA vs the current contract in MonoGame.

### GameTest+Properties
- Makes assertions about the Game class's properties.
- Tests for default values, read-only or read-write status, availability
during the lifetime of the Game, etc.

### CommandLineInterface
- Wraps the core logic for invoking NUnit into an opaque wrapper that
can be easily invoked from different platforms.
- Currently writes NUnit results in an abbreviated format to stdout, the
standard NUnit xml format as test_results.xml, and an xsl-transformed
test_results.html for easy viewing.

### Game
- Added InactiveSleepTime as a to-be-implemented property.

### MonoGame.Tests/Resources
- Houses the xsl used by CommandLineInterface, as well as sample data
and a Makefile for easy development (well, easy on Mac, anyway).