def test_file_read_raw(self, mbrick): mbrick.file_open_read.return_value = (0x42, 7) mbrick.file_read.return_value = (0x42, bytes.fromhex("21222324252627")) with mbrick.open_file("test.bin", "rb", buffering=0) as f: assert f.read() == bytes.fromhex("21222324252627") assert mbrick.mock_calls == [ call.file_open_read("test.bin"), call.file_read(0x42, 7), call.file_close(0x42), ]
def test_find_files_interrupted(self, mbrick): mbrick.file_find_first.return_value = (0x42, "test.rxe", 0x04030201) mbrick.file_find_next.side_effect = [nxt.error.FileNotFoundError()] g = mbrick.find_files("*.*") assert next(g) == ("test.rxe", 0x04030201) g.close() assert mbrick.mock_calls == [ call.file_find_first("*.*"), call.file_close(0x42), ]
def test_find_files_one(self, mbrick): mbrick.file_find_first.return_value = (0x42, "test.rxe", 0x04030201) mbrick.file_find_next.side_effect = [nxt.error.FileNotFoundError()] results = list(mbrick.find_files("*.*")) assert results == [("test.rxe", 0x04030201)] assert mbrick.mock_calls == [ call.file_find_first("*.*"), call.file_find_next(0x42), call.file_close(0x42), ]
def test_file_write_raw(self, mbrick): mbrick.file_open_write.return_value = 0x42 mbrick.file_write.return_value = (0x42, 7) f = mbrick.open_file("test.bin", "wb", 7, buffering=0) f.write(bytes.fromhex("21222324252627")) f.close() assert mbrick.mock_calls == [ call.file_open_write("test.bin", 7), call.file_write(0x42, bytes.fromhex("21222324252627")), call.file_close(0x42), ]
def test_file_write_text_encoding(self, mbrick): mbrick.file_open_write.return_value = 0x42 mbrick.file_write.return_value = (0x42, 16) f = mbrick.open_file("test.txt", "wt", 16, errors="replace") f.write("un petit café ?\n") f.close() assert mbrick.mock_calls == [ call.file_open_write("test.txt", 16), call.file_write(0x42, b"un petit caf? ?\n"), call.file_close(0x42), ]
def test_file_read_text(self, mbrick): mbrick.file_open_read.return_value = (0x42, 12) mbrick.file_read.return_value = (0x42, b"hello\nworld\n") with mbrick.open_file("test.txt") as f: results = list(f) assert results == ["hello\n", "world\n"] assert mbrick.mock_calls == [ call.file_open_read("test.txt"), call.file_read(0x42, 12), call.file_close(0x42), ]
def test_file_write_text(self, mbrick): mbrick.file_open_write.return_value = 0x42 mbrick.file_write.return_value = (0x42, 12) f = mbrick.open_file("test.txt", "wt", 12) f.write("hello\n") f.write("world\n") f.close() assert mbrick.mock_calls == [ call.file_open_write("test.txt", 12), call.file_write(0x42, b"hello\nworld\n"), call.file_close(0x42), ]
def test_file_write_closed(self, mbrick): mbrick.file_open_write.return_value = 0x42 mbrick.file_write.return_value = (0x42, 7) # Write directly to raw file to bypass error check in buffered file. f = mbrick.open_file("test.bin", "wb", 7, buffering=0) f.close() assert f.closed with pytest.raises(ValueError): f.write(bytes.fromhex("28")) assert mbrick.mock_calls == [ call.file_open_write("test.bin", 7), call.file_close(0x42), ]
def test_file_write_too_much(self, mbrick): mbrick.file_open_write.return_value = 0x42 mbrick.file_write.return_value = (0x42, 7) f = mbrick.open_file("test.bin", "wb", 7) f.write(bytes.fromhex("2122232425262728")) with pytest.raises(ValueError): # Flush done on close. f.close() assert f.closed assert mbrick.mock_calls == [ call.file_open_write("test.bin", 7), call.file_write(0x42, bytes.fromhex("21222324252627")), call.file_close(0x42), ]