MCPcopy Index your code
hub / github.com/python/cpython / test_ucs4

Method test_ucs4

Lib/test/test_capi/test_unicode.py:1938–1975  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1936 "latin1=\xE9-euro=\u20AC-max=\U0010ffff-zeroes=\0\0\0.")
1937
1938 def test_ucs4(self):
1939 encoding = 'utf-32le' if sys.byteorder == 'little' else 'utf-32be'
1940
1941 writer = self.create_writer(0)
1942 writer.write_ucs4("ascii IGNORED".encode(encoding), 5)
1943 writer.write_char(ord("-"))
1944 writer.write_ucs4("latin1=\xe9".encode(encoding))
1945 writer.write_char(ord("-"))
1946 writer.write_ucs4("euro=\u20ac".encode(encoding))
1947 writer.write_char(ord("-"))
1948 writer.write_ucs4("max=\U0010ffff".encode(encoding))
1949 writer.write_char(ord("."))
1950 self.assertEqual(writer.finish(),
1951 "ascii-latin1=\xE9-euro=\u20AC-max=\U0010ffff.")
1952
1953 # Test some special characters
1954 writer = self.create_writer(0)
1955 # Lone surrogate character
1956 writer.write_ucs4("lone\uDC80".encode(encoding, 'surrogatepass'))
1957 writer.write_char(ord("-"))
1958 # Surrogate pair
1959 writer.write_ucs4("pair\uD83D\uDC0D".encode(encoding, 'surrogatepass'))
1960 writer.write_char(ord("-"))
1961 writer.write_ucs4("null[\0]".encode(encoding), 7)
1962 invalid = (b'\x00\x00\x11\x00' if sys.byteorder == 'little' else
1963 b'\x00\x11\x00\x00')
1964 # CRASHES writer.write_ucs4("invalid".encode(encoding) + invalid)
1965 writer.write_ucs4(NULL, 0)
1966 # CRASHES writer.write_ucs4(NULL, 1)
1967 self.assertEqual(writer.finish(),
1968 "lone\udc80-pair\ud83d\udc0d-null[\x00]")
1969
1970 # invalid size
1971 writer = self.create_writer(0)
1972 with self.assertRaises(ValueError):
1973 writer.write_ucs4("text".encode(encoding), -1)
1974 self.assertRaises(ValueError, writer.write_ucs4, b'', -1)
1975 self.assertRaises(ValueError, writer.write_ucs4, NULL, -1)
1976
1977 def test_substring_empty(self):
1978 writer = self.create_writer(0)

Callers

nothing calls this directly

Calls 6

create_writerMethod · 0.95
write_charMethod · 0.80
encodeMethod · 0.45
assertEqualMethod · 0.45
finishMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected