 		XCTAssert(path == "/private/tmp")
 	}
 	
+	func testRWLockCacheReading() {
+		
+		struct Test {
+			let a: String
+			let b: String
+		}
+		
+		let cache = RWLockCache<String, Test>()
+		let queue = dispatch_queue_create("Test Queue", DISPATCH_QUEUE_CONCURRENT)
+		let threadCount = 100
+		let threadLoopCount = 10000
+		
+		cache.setValueForKey("thekey", value: Test(a: "a", b: "b"))
+		
+		for i in 0..<threadCount {
+			
+			let threadId = "Thread \(i)"
+			let clientExpectation = self.expectationWithDescription(threadId)
+			
+			dispatch_async(queue) {
+				
+				for _ in 0..<threadLoopCount {
+					let value = cache.valueForKey("thekey")!
+					XCTAssert(value.a == "a")
+				}
+				
+				clientExpectation.fulfill()
+			}
+		}
+		
+		self.waitForExpectationsWithTimeout(10000) {
+			(_: NSError?) in
+			
+			XCTAssert(true)
+		}
+	}
+	
 	func testRWLockCache() {
 		
 		let cache = RWLockCache<String, String>()

			
		}
	}
	
	func testSQLite() {
		

		super.tearDown()
	}
	
	// !FIX! broken test
	/*
	func testJSONEncodeDecode() {
		
		let srcAry: [[String:JSONValue]] = [["i": -41451, "i2": 41451, "d": -42E+2, "t": true, "f": false, "n": JSONNull(), "a":[1, 2, 3, 4]], ["another":"one"]]
