   expectEqual(1, testRun.unexpectedExceptionCount)
   expectEqual(1, testRun.totalFailureCount)
   expectFalse(testRun.hasSucceeded)
+}
+
+XCTestTestSuite.test("XCTAssertEqual/T") {
+  class AssertEqualTestCase: XCTestCase {
+    dynamic func test_whenEqual_passes() {
+      XCTAssertEqual(1, 1)
+    }
+
+    dynamic func test_whenNotEqual_fails() {
+      XCTAssertEqual(1, 2)
+    }
+  }
+
+  let passingTestCase = AssertEqualTestCase(selector: #selector(AssertEqualTestCase.test_whenEqual_passes))
+  execute(passingTestCase.run)
+  let passingTestRun = passingTestCase.testRun!
+  expectTrue(passingTestRun.hasSucceeded)
+
+  let failingTestCase = AssertEqualTestCase(selector: #selector(AssertEqualTestCase.test_whenNotEqual_fails))
+  let observer = FailureDescriptionObserver()
+  execute(observers: [observer], failingTestCase.run)
+  let failingTestRun = failingTestCase.testRun!
+  expectEqual(1, failingTestRun.failureCount)
+  expectEqual(0, failingTestRun.unexpectedExceptionCount)
+  expectEqual(observer.failureDescription, "XCTAssertEqual failed: (\"1\") is not equal to (\"2\") - ")
 }
 
 XCTestTestSuite.test("XCTAssertEqual/Optional<T>") {

//       instantiate an NSInvocation with the given selector.


func execute(_ run: () -> ()) {
  run()
}

XCTestTestSuite.test("exceptions") {

  expectTrue(passingTestRun.hasSucceeded)

  let failingTestCase = AssertEqualOptionalTestCase(selector: #selector(AssertEqualOptionalTestCase.test_whenOptionalsAreNotEqual_fails))
  let observer = FailureDescriptionObserver()
  execute(observers: [observer], failingTestCase.run)
  let failingTestRun = failingTestCase.testRun!
  expectEqual(1, failingTestRun.testCaseCount)
  expectEqual(1, failingTestRun.executionCount)
