mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-09 05:24:52 +08:00
Make MemoryView Generic, make cast accurate (#12247)
This commit is contained in:
58
stdlib/@tests/test_cases/builtins/check_memoryview.py
Normal file
58
stdlib/@tests/test_cases/builtins/check_memoryview.py
Normal file
@@ -0,0 +1,58 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import array
|
||||
from typing_extensions import assert_type
|
||||
|
||||
# Casting to bytes.
|
||||
buf = b"abcdefg"
|
||||
view = memoryview(buf).cast("c")
|
||||
elm = view[0]
|
||||
assert_type(elm, bytes)
|
||||
assert_type(view[0:2], memoryview[bytes])
|
||||
|
||||
# Casting to a bool.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
bool_mv = mv.cast("?")
|
||||
assert_type(bool_mv[0], bool)
|
||||
assert_type(bool_mv[0:2], memoryview[bool])
|
||||
|
||||
|
||||
# Casting to a signed char.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
signed_mv = mv.cast("b")
|
||||
assert_type(signed_mv[0], int)
|
||||
assert_type(signed_mv[0:2], memoryview[int])
|
||||
|
||||
# Casting to a signed short.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
signed_mv = mv.cast("h")
|
||||
assert_type(signed_mv[0], int)
|
||||
assert_type(signed_mv[0:2], memoryview[int])
|
||||
|
||||
# Casting to a signed int.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
signed_mv = mv.cast("i")
|
||||
assert_type(signed_mv[0], int)
|
||||
assert_type(signed_mv[0:2], memoryview[int])
|
||||
|
||||
# Casting to a signed long.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
signed_mv = mv.cast("l")
|
||||
assert_type(signed_mv[0], int)
|
||||
assert_type(signed_mv[0:2], memoryview[int])
|
||||
|
||||
# Casting to a float.
|
||||
a = array.array("B", [0, 1, 2, 3])
|
||||
mv = memoryview(a)
|
||||
float_mv = mv.cast("f")
|
||||
assert_type(float_mv[0], float)
|
||||
assert_type(float_mv[0:2], memoryview[float])
|
||||
|
||||
# An invalid literal should raise an error.
|
||||
mv = memoryview(b"abc")
|
||||
mv.cast("abc") # type: ignore
|
||||
Reference in New Issue
Block a user