mirror of https://github.com/python/cpython.git
Bytes should never equal unicode.
Add tests for str <cmpop> bytes.
This commit is contained in:
parent
343e97ff7f
commit
ebea9beab3
|
@ -114,6 +114,27 @@ def test_compare_to_str(self):
|
|||
self.assertEqual(b"abc" < "ab", False)
|
||||
self.assertEqual(b"abc" <= "ab", False)
|
||||
|
||||
self.assertEqual("abc" == b"abc", True)
|
||||
self.assertEqual("ab" != b"abc", True)
|
||||
self.assertEqual("ab" <= b"abc", True)
|
||||
self.assertEqual("ab" < b"abc", True)
|
||||
self.assertEqual("abc" >= b"ab", True)
|
||||
self.assertEqual("abc" > b"ab", True)
|
||||
|
||||
self.assertEqual("abc" != b"abc", False)
|
||||
self.assertEqual("ab" == b"abc", False)
|
||||
self.assertEqual("ab" > b"abc", False)
|
||||
self.assertEqual("ab" >= b"abc", False)
|
||||
self.assertEqual("abc" < b"ab", False)
|
||||
self.assertEqual("abc" <= b"ab", False)
|
||||
|
||||
# But they should never compare equal to Unicode!
|
||||
# Test this for all expected byte orders and Unicode character sizes
|
||||
self.assertEqual(b"\0a\0b\0c" == u"abc", False)
|
||||
self.assertEqual(b"\0\0\0a\0\0\0b\0\0\0c" == u"abc", False)
|
||||
self.assertEqual(b"a\0b\0c\0" == u"abc", False)
|
||||
self.assertEqual(b"a\0\0\0b\0\0\0c\0\0\0" == u"abc", False)
|
||||
|
||||
def test_nohash(self):
|
||||
self.assertRaises(TypeError, hash, bytes())
|
||||
|
||||
|
|
|
@ -848,7 +848,12 @@ bytes_richcompare(PyObject *self, PyObject *other, int op)
|
|||
int cmp;
|
||||
|
||||
/* For backwards compatibility, bytes can be compared to anything that
|
||||
supports the (binary) buffer API. */
|
||||
supports the (binary) buffer API. Except Unicode. */
|
||||
|
||||
if (PyUnicode_Check(self) || PyUnicode_Check(other)) {
|
||||
Py_INCREF(Py_NotImplemented);
|
||||
return Py_NotImplemented;
|
||||
}
|
||||
|
||||
self_buffer = self->ob_type->tp_as_buffer;
|
||||
if (self_buffer == NULL ||
|
||||
|
|
Loading…
Reference in New Issue