diff --git a/tests/test_memoize.py b/tests/test_memoize.py
index 4e7142328b287a67eea223b05cd45bcb22bb0e4e..63ce1a267ba5ee00e3551e7ea81bf27b3c618054 100644
--- a/tests/test_memoize.py
+++ b/tests/test_memoize.py
@@ -5,6 +5,7 @@
 # Author: Paul McCarthy <pauldmccarthy@gmail.com>
 #
 
+import six
 
 import numpy as np
 
@@ -17,14 +18,13 @@ def test_memoize():
 
     def thefunc(*args, **kwargs):
         timesCalled[0] += 1
-        
+
         if   len(args) + len(kwargs) == 0: return 0
         elif len(args)               == 1: return args[0]         * 5
         else:                              return kwargs['value'] * 5
 
     memoized = memoize.memoize(thefunc)
 
-
     # No args
     for i in range(5):
         assert memoized() == 0
@@ -42,6 +42,13 @@ def test_memoize():
             assert memoized(value=i) == i * 5
         assert timesCalled[0] == 6
 
+    # Unicode arg
+    s = six.u('\u25B2')
+    assert memoized(s) == s * 5
+    assert timesCalled[0] == 7
+    assert memoized(s) == s * 5
+    assert timesCalled[0] == 7
+
 
 def test_memoizeMD5():
     timesCalled = [0]
@@ -50,7 +57,7 @@ def test_memoizeMD5():
         timesCalled[0] += 1
         if   len(args) + len(kwargs) == 0: return 0
         elif len(args)               == 1: return args[0]         * 5
-        else:                              return kwargs['value'] * 5 
+        else:                              return kwargs['value'] * 5
 
     memoized = memoize.memoizeMD5(thefunc)
 
@@ -69,7 +76,14 @@ def test_memoizeMD5():
     for i in range(3):
         for i in range(5):
             assert memoized(value=i) == i * 5
-        assert timesCalled[0] == 6 
+        assert timesCalled[0] == 6
+
+    # Unicode arg (and return value)
+    s = six.u('\u25B2')
+    assert memoized(s) == s * 5
+    assert timesCalled[0] == 7
+    assert memoized(s) == s * 5
+    assert timesCalled[0] == 7
 
 
 def test_skipUnchanged():
@@ -90,66 +104,66 @@ def test_skipUnchanged():
     wrapped('key1', 11)
     wrapped('key2', 12)
     wrapped('key3', 13)
-    
+
     assert timesCalled['key1'] == 1
     assert timesCalled['key2'] == 1
     assert timesCalled['key3'] == 1
-    
+
     wrapped('key1', 11)
     wrapped('key2', 12)
     wrapped('key3', 13)
-    
+
     assert timesCalled['key1'] == 1
     assert timesCalled['key2'] == 1
-    assert timesCalled['key3'] == 1 
+    assert timesCalled['key3'] == 1
 
     wrapped('key1', 14)
     wrapped('key2', 15)
     wrapped('key3', 16)
-    
+
     assert timesCalled['key1'] == 2
     assert timesCalled['key2'] == 2
-    assert timesCalled['key3'] == 2 
- 
+    assert timesCalled['key3'] == 2
+
     wrapped('key1', 14)
     wrapped('key2', 15)
     wrapped('key3', 16)
-    
+
     assert timesCalled['key1'] == 2
     assert timesCalled['key2'] == 2
     assert timesCalled['key3'] == 2
- 
+
     wrapped('key1', 11)
     wrapped('key2', 12)
     wrapped('key3', 13)
-    
+
     assert timesCalled['key1'] == 3
     assert timesCalled['key2'] == 3
-    assert timesCalled['key3'] == 3 
- 
+    assert timesCalled['key3'] == 3
+
     wrapped('key1', np.array([11, 12]))
     wrapped('key2', np.array([13, 14]))
     wrapped('key3', np.array([15, 16]))
-    
+
     assert timesCalled['key1'] == 4
     assert timesCalled['key2'] == 4
-    assert timesCalled['key3'] == 4 
+    assert timesCalled['key3'] == 4
 
     wrapped('key1', np.array([12, 11]))
     wrapped('key2', np.array([14, 13]))
     wrapped('key3', np.array([16, 15]))
-    
+
     assert timesCalled['key1'] == 5
     assert timesCalled['key2'] == 5
-    assert timesCalled['key3'] == 5 
+    assert timesCalled['key3'] == 5
 
     wrapped('key1', np.array([12, 11]))
     wrapped('key2', np.array([14, 13]))
     wrapped('key3', np.array([16, 15]))
-    
+
     assert timesCalled['key1'] == 5
     assert timesCalled['key2'] == 5
-    assert timesCalled['key3'] == 5 
+    assert timesCalled['key3'] == 5
 
 
 def test_Instanceify():
@@ -169,7 +183,7 @@ def test_Instanceify():
         @memoize.Instanceify(memoize.skipUnchanged)
         def setter2(self, name, value):
             self.setter2Called += 1
-        
+
         @memoize.Instanceify(memoize.memoize)
         def func1(self, arg):
             self.func1Called += 1
@@ -196,41 +210,41 @@ def test_Instanceify():
         c1.setter1('blob', 120)
         c1.check(1, 0, 0, 0)
         c2.check(0, 0, 0, 0)
-        
+
     for i in range(3):
         c1.setter1('blob', 150)
         c1.check(2, 0, 0, 0)
-        c2.check(0, 0, 0, 0) 
-        
+        c2.check(0, 0, 0, 0)
+
     for i in range(3):
         c1.setter1('flob', 200)
         c1.check(3, 0, 0, 0)
         c2.check(0, 0, 0, 0)
-        
+
     for i in range(3):
         c1.setter1('flob', 180)
         c1.check(4, 0, 0, 0)
         c2.check(0, 0, 0, 0)
-        
+
     for i in range(3):
         c2.setter1('blob', 120)
         c1.check(4, 0, 0, 0)
         c2.check(1, 0, 0, 0)
-        
+
     for i in range(3):
         c2.setter1('blob', 150)
         c1.check(4, 0, 0, 0)
-        c2.check(2, 0, 0, 0) 
-        
+        c2.check(2, 0, 0, 0)
+
     for i in range(3):
         c2.setter1('flob', 200)
         c1.check(4, 0, 0, 0)
         c2.check(3, 0, 0, 0)
-        
+
     for i in range(3):
         c2.setter1('flob', 180)
         c1.check(4, 0, 0, 0)
-        c2.check(4, 0, 0, 0) 
+        c2.check(4, 0, 0, 0)
 
     # Call setter2 on one instance,
     # ...
@@ -238,63 +252,63 @@ def test_Instanceify():
         c1.setter2('blob', 120)
         c1.check(4, 1, 0, 0)
         c2.check(4, 0, 0, 0)
-        
+
     for i in range(3):
         c1.setter2('blob', 150)
         c1.check(4, 2, 0, 0)
-        c2.check(4, 0, 0, 0) 
-        
+        c2.check(4, 0, 0, 0)
+
     for i in range(3):
         c1.setter2('flob', 200)
         c1.check(4, 3, 0, 0)
         c2.check(4, 0, 0, 0)
-        
+
     for i in range(3):
         c1.setter2('flob', 180)
         c1.check(4, 4, 0, 0)
         c2.check(4, 0, 0, 0)
-        
+
     for i in range(3):
         c2.setter2('blob', 120)
         c1.check(4, 4, 0, 0)
         c2.check(4, 1, 0, 0)
-        
+
     for i in range(3):
         c2.setter2('blob', 150)
         c1.check(4, 4, 0, 0)
-        c2.check(4, 2, 0, 0) 
-        
+        c2.check(4, 2, 0, 0)
+
     for i in range(3):
         c2.setter2('flob', 200)
         c1.check(4, 4, 0, 0)
         c2.check(4, 3, 0, 0)
-        
+
     for i in range(3):
         c2.setter2('flob', 180)
         c1.check(4, 4, 0, 0)
-        c2.check(4, 4, 0, 0) 
-         
+        c2.check(4, 4, 0, 0)
+
     # Call func1 on one instance,
     # ...
     for i in range(3):
         assert c1.func1(123) == 246
         c1.check(4, 4, 1, 0)
         c2.check(4, 4, 0, 0)
-        
+
     for i in range(3):
         assert c1.func1(456) == 912
         c1.check(4, 4, 2, 0)
-        c2.check(4, 4, 0, 0) 
-        
+        c2.check(4, 4, 0, 0)
+
     for i in range(3):
         assert c2.func1(123) == 246
         c1.check(4, 4, 2, 0)
         c2.check(4, 4, 1, 0)
-        
+
     for i in range(3):
         assert c2.func1(456) == 912
         c1.check(4, 4, 2, 0)
-        c2.check(4, 4, 2, 0) 
+        c2.check(4, 4, 2, 0)
 
     # Call func2 on one instance,
     # ...
@@ -302,16 +316,16 @@ def test_Instanceify():
         assert c1.func2(123) == 492
         c1.check(4, 4, 2, 1)
         c2.check(4, 4, 2, 0)
-        
+
     for i in range(3):
         assert c1.func2(456) == 1824
-        
+
     for i in range(3):
         assert c2.func2(123) == 492
         c1.check(4, 4, 2, 2)
         c2.check(4, 4, 2, 1)
-        
+
     for i in range(3):
         assert c2.func2(456) == 1824
         c1.check(4, 4, 2, 2)
-        c2.check(4, 4, 2, 2) 
+        c2.check(4, 4, 2, 2)