mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-02 19:39:49 +09:00
Fixed test_bytearray_translate Error (#3730)
This commit is contained in:
2
Lib/test/test_builtin.py
vendored
2
Lib/test/test_builtin.py
vendored
@@ -1693,8 +1693,6 @@ class BuiltinTest(unittest.TestCase):
|
||||
self.assertEqual(bin(-(2**65)), '-0b1' + '0' * 65)
|
||||
self.assertEqual(bin(-(2**65-1)), '-0b' + '1' * 65)
|
||||
|
||||
# TODO: RUSTPYTHON
|
||||
@unittest.expectedFailure
|
||||
def test_bytearray_translate(self):
|
||||
x = bytearray(b"abc")
|
||||
self.assertRaises(ValueError, x.translate, b"1", 1)
|
||||
|
||||
@@ -202,9 +202,9 @@ impl ByteInnerPaddingOptions {
|
||||
#[derive(FromArgs)]
|
||||
pub struct ByteInnerTranslateOptions {
|
||||
#[pyarg(positional)]
|
||||
table: Option<PyBytesInner>,
|
||||
table: Option<PyObjectRef>,
|
||||
#[pyarg(any, optional)]
|
||||
delete: OptionalArg<PyBytesInner>,
|
||||
delete: OptionalArg<PyObjectRef>,
|
||||
}
|
||||
|
||||
impl ByteInnerTranslateOptions {
|
||||
@@ -212,17 +212,24 @@ impl ByteInnerTranslateOptions {
|
||||
let table = self.table.map_or_else(
|
||||
|| Ok((0..=255).collect::<Vec<u8>>()),
|
||||
|v| {
|
||||
if v.elements.len() != 256 {
|
||||
return Err(vm.new_value_error(
|
||||
"translation table must be 256 characters long".to_owned(),
|
||||
));
|
||||
}
|
||||
Ok(v.elements.to_vec())
|
||||
let bytes = v
|
||||
.try_into_value::<PyBytesInner>(vm)
|
||||
.ok()
|
||||
.filter(|v| v.elements.len() == 256)
|
||||
.ok_or_else(|| {
|
||||
vm.new_value_error(
|
||||
"translation table must be 256 characters long".to_owned(),
|
||||
)
|
||||
})?;
|
||||
Ok(bytes.elements.to_vec())
|
||||
},
|
||||
)?;
|
||||
|
||||
let delete = match self.delete {
|
||||
OptionalArg::Present(byte) => byte.elements,
|
||||
OptionalArg::Present(byte) => {
|
||||
let byte: PyBytesInner = byte.try_into_value(vm)?;
|
||||
byte.elements
|
||||
}
|
||||
_ => vec![],
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user