diff --git a/pyqtgraph/util/__init__.py b/pyqtgraph/util/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/pyqtgraph/lru_cache.py b/pyqtgraph/util/lru_cache.py
similarity index 100%
rename from pyqtgraph/lru_cache.py
rename to pyqtgraph/util/lru_cache.py
diff --git a/pyqtgraph/util/tests/test_lru_cache.py b/pyqtgraph/util/tests/test_lru_cache.py
new file mode 100644
index 0000000000000000000000000000000000000000..c0cf9f8aaaada8a1168ca1be55208457903cd86b
--- /dev/null
+++ b/pyqtgraph/util/tests/test_lru_cache.py
@@ -0,0 +1,50 @@
+from pyqtgraph.util.lru_cache import LRUCache
+
+def testLRU():
+    lru = LRUCache(2, 1)
+    # check twice
+    checkLru(lru)
+    checkLru(lru)
+
+def checkLru(lru):
+    lru[1] = 1
+    lru[2] = 2
+    lru[3] = 3
+
+    assert len(lru) == 2
+    assert set([2, 3]) == set(lru.keys())
+    assert set([2, 3]) == set(lru.values())
+
+    lru[2] = 2
+    assert set([2, 3]) == set(lru.values())
+    
+    lru[1] = 1
+    set([2, 1]) == set(lru.values())
+
+    #Iterates from the used in the last access to others based on access time.
+    assert [(2, 2), (1, 1)] == list(lru.iteritems(accessTime=True))
+    lru[2] = 2
+    assert [(1, 1), (2, 2)] == list(lru.iteritems(accessTime=True))
+
+    del lru[2]
+    assert [(1, 1), ] == list(lru.iteritems(accessTime=True))
+
+    lru[2] = 2
+    assert [(1, 1), (2, 2)] == list(lru.iteritems(accessTime=True))
+
+    _a = lru[1]
+    assert [(2, 2), (1, 1)] == list(lru.iteritems(accessTime=True))
+
+    _a = lru[2]
+    assert [(1, 1), (2, 2)] == list(lru.iteritems(accessTime=True))
+
+    assert lru.get(2) == 2
+    assert lru.get(3) == None
+    assert [(1, 1), (2, 2)] == list(lru.iteritems(accessTime=True))
+
+    lru.clear()
+    assert [] == list(lru.iteritems())
+
+
+if __name__ == '__main__':
+    testLRU()
diff --git a/tests/test.py b/tests/test.py
deleted file mode 100644
index 9821f8212447f2bd8491122de325610ca495227d..0000000000000000000000000000000000000000
--- a/tests/test.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import unittest
-import os, sys
-## make sure this instance of pyqtgraph gets imported first
-sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
-
-## all tests should be defined with this class so we have the option to tweak it later.
-class TestCase(unittest.TestCase):
-        
-    def testLRU(self):
-        from pyqtgraph.lru_cache import LRUCache
-        lru = LRUCache(2, 1)
-
-        def CheckLru():
-            lru[1] = 1
-            lru[2] = 2
-            lru[3] = 3
-
-            self.assertEqual(2, len(lru))
-            self.assertSetEqual(set([2, 3]), set(lru.keys()))
-            self.assertSetEqual(set([2, 3]), set(lru.values()))
-
-            lru[2] = 2
-            self.assertSetEqual(set([2, 3]), set(lru.values()))
-            
-            lru[1] = 1
-            self.assertSetEqual(set([2, 1]), set(lru.values()))
-
-            #Iterates from the used in the last access to others based on access time.
-            self.assertEqual([(2, 2), (1, 1)], list(lru.iteritems(access_time=True)))
-            lru[2] = 2
-            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))
-
-            del lru[2]
-            self.assertEqual([(1, 1), ], list(lru.iteritems(access_time=True)))
-
-            lru[2] = 2
-            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))
-
-            _a = lru[1]
-            self.assertEqual([(2, 2), (1, 1)], list(lru.iteritems(access_time=True)))
-
-            _a = lru[2]
-            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))
-
-            self.assertEqual(lru.get(2), 2)
-            self.assertEqual(lru.get(3), None)
-            self.assertEqual([(1, 1), (2, 2)], list(lru.iteritems(access_time=True)))
-
-            lru.clear()
-            self.assertEqual([], list(lru.iteritems()))
-
-        CheckLru()
-
-        # Check it twice...
-        CheckLru()
-
-if __name__ == '__main__':
-    unittest.main()
\ No newline at end of file