 import XCTest
 import Math
 
-class MatrixTests: XCTestCase {
+class MatrixTests: XCTestCase, TypeTest {
+	
+	override func setUp() {
+		for _ in 0..<30 {
+			let size = (columns: (random() & 0xF) + 1, rows: (random() & 0xF) + 1)
+			var elem = [[Int]]()
+			for _ in 0..<size.rows {
+				var e = [Int]()
+				for _ in 0..<size.columns {
+					e.append(random() % Int8.max.integer)
+				}
+				elem.append(e)
+			}
+			elements.append(Matrix(elem))
+		}
+	}
+	
+	var elements : [Matrix<Int>] = []
 	
 	let abc = [[0,1,2], [3,4,5], [6,7,8]]
 	

		XCTAssert((b[0] - 7.87298334620742	).abs <= 1e-14	)
		XCTAssert((b[1] - 0.127016653792583	).abs <= 1e-14	)
	}
	
}

	}
	
	func testRowEchelonForm() {
		forAll(assert: { $1 == true }) { $0.rowEchelonForm.rank == $0.reducedRowEchelonForm.rank }
	}
	
	func testIsSquare() {
