System.out.println добавит в строку символ перевода строки "\ n" после значения, которое вы передадите. System.out.print не добавляет символ перевода строки
Поскольку jUnit сообщает, что тест не пройден из-за того, что ожидаемая строка (та, которая в тесте) не имеет перевода строки в конце, как и настоящая строка (тот из outContent) делает.
Я не уверен, что ваш код правильный или нет, вы можете изменить использование print вместо println, но тогда следующий тест не пройдет:
@Test
public void testMoreThenOneOff() {
CountNumP2 cn = new CountNumP2();
cn.countUpDown(0, 2);
String output = "0\n1\n2\n1\n0";
assertEquals(output , outContent.toString());
}
Действительно зависит от того, кто вы пытаясь выполнить, но установка некоторых точек останова на результат outContent.toString () должна быть полезной.
Разрезание работ для c_char_Arrays также:
myfile.write(c_uncompData_p[:c_uncompSize])
buffer()
мог бы помочь избежать ненужного копирования (вызванный путем разрезания как в ответе @elo80ka):
myfile.write(buffer(c_uncompData_p.raw, 0, c_uncompSize))
В Вашем примере это не имеет значения (из-за c_uncompData_p
записан только однажды, и это является маленьким), но в целом это могло быть полезно.
Только ради осуществления вот ответ, который использует C stdio
fwrite()
:
from ctypes import *
# load C library
try: libc = cdll.msvcrt # Windows
except AttributeError:
libc = CDLL("libc.so.6") # Linux
# fopen()
libc.fopen.restype = c_void_p
def errcheck(res, func, args):
if not res: raise IOError
return res
libc.fopen.errcheck = errcheck
# errcheck() could be similarly defined for `fwrite`, `fclose`
# write data
file_p = libc.fopen("output.bin", "wb")
sizeof_item = 1 # bytes
nitems = libc.fwrite(c_uncompData_p, sizeof_item, c_uncompSize, file_p)
retcode = libc.fclose(file_p)
if nitems != c_uncompSize: # not all data were written
pass
if retcode != 0: # the file was NOT successfully closed
pass