Merge pull request #176 from kjd/issue-174

Restore IDNAError exception for codepoints that don't exist in Unicode (fixes #174)
diff --git a/idna/core.py b/idna/core.py
index 0dae61a..69b66ef 100644
--- a/idna/core.py
+++ b/idna/core.py
@@ -240,8 +240,12 @@
         if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']):
             continue
         elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']):
-            if not valid_contextj(label, pos):
-                raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
+            try:
+                if not valid_contextj(label, pos):
+                    raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format(
+                        _unot(cp_value), pos+1, repr(label)))
+            except ValueError:
+                raise IDNAError('Unknown codepoint adjacent to joiner {} at position {} in {}'.format(
                     _unot(cp_value), pos+1, repr(label)))
         elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']):
             if not valid_contexto(label, pos):
diff --git a/tests/test_idna.py b/tests/test_idna.py
index 81afb32..0641eeb 100755
--- a/tests/test_idna.py
+++ b/tests/test_idna.py
@@ -270,6 +270,7 @@
         self.assertRaises(idna.IDNAError, decode, b'xn--')
         self.assertRaises(idna.IDNAError, decode, b'\x8d\xd2')
         self.assertRaises(idna.IDNAError, decode, b'A.A.0.a.a.A.0.a.A.A.0.a.A.0A.2.a.A.A.0.a.A.0.A.a.A0.a.a.A.0.a.fB.A.A.a.A.A.B.A.A.a.A.A.B.A.A.a.A.A.0.a.A.a.a.A.A.0.a.A.0.A.a.A0.a.a.A.0.a.fB.A.A.a.A.A.B.0A.A.a.A.A.B.A.A.a.A.A.a.A.A.B.A.A.a.A.0.a.B.A.A.a.A.B.A.a.A.A.5.a.A.0.a.Ba.A.B.A.A.a.A.0.a.Xn--B.A.A.A.a')
+        self.assertRaises(idna.IDNAError, decode, b'xn--ukba655qaaaa14431eeaaba.c')
 
 if __name__ == '__main__':
     unittest.main()