mirror of
https://github.com/chatmail/core.git
synced 2026-05-08 09:26:29 +03:00
test: move stress tests to dc_strencode and dc_tools
This commit is contained in:
@@ -898,4 +898,62 @@ mod tests {
|
|||||||
unsafe { print_hex(hex.as_mut_ptr(), cur) };
|
unsafe { print_hex(hex.as_mut_ptr(), cur) };
|
||||||
assert_eq!(to_string(hex.as_ptr() as *const _), "=3A");
|
assert_eq!(to_string(hex.as_ptr() as *const _), "=3A");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_urlencode_urldecode() {
|
||||||
|
unsafe {
|
||||||
|
let buf1 =
|
||||||
|
dc_urlencode(b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
CStr::from_ptr(buf1 as *const libc::c_char)
|
||||||
|
.to_str()
|
||||||
|
.unwrap(),
|
||||||
|
"Bj%C3%B6rn+Petersen"
|
||||||
|
);
|
||||||
|
|
||||||
|
let buf2 = dc_urldecode(buf1);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
strcmp(
|
||||||
|
buf2,
|
||||||
|
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char
|
||||||
|
),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
free(buf1 as *mut libc::c_void);
|
||||||
|
free(buf2 as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_encode_decode_modified_utf7() {
|
||||||
|
unsafe {
|
||||||
|
let buf1 = dc_encode_modified_utf7(
|
||||||
|
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char,
|
||||||
|
1,
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
CStr::from_ptr(buf1 as *const libc::c_char)
|
||||||
|
.to_str()
|
||||||
|
.unwrap(),
|
||||||
|
"Bj&APY-rn_Petersen"
|
||||||
|
);
|
||||||
|
|
||||||
|
let buf2 = dc_decode_modified_utf7(buf1, 1);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
strcmp(
|
||||||
|
buf2,
|
||||||
|
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char
|
||||||
|
),
|
||||||
|
0
|
||||||
|
);
|
||||||
|
|
||||||
|
free(buf1 as *mut libc::c_void);
|
||||||
|
free(buf2 as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1816,4 +1816,70 @@ mod tests {
|
|||||||
|
|
||||||
unsafe { free(raw as *mut _) };
|
unsafe { free(raw as *mut _) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_replace_bad_utf8_chars_1() {
|
||||||
|
unsafe {
|
||||||
|
let buf1 = strdup(b"ol\xc3\xa1 mundo <>\"\'& \xc3\xa4\xc3\x84\xc3\xb6\xc3\x96\xc3\xbc\xc3\x9c\xc3\x9f foo\xc3\x86\xc3\xa7\xc3\x87 \xe2\x99\xa6&noent;\x00" as *const u8 as *const libc::c_char);
|
||||||
|
let buf2 = strdup(buf1);
|
||||||
|
|
||||||
|
dc_replace_bad_utf8_chars(buf2);
|
||||||
|
|
||||||
|
assert_eq!(strcmp(buf1, buf2), 0);
|
||||||
|
|
||||||
|
free(buf1 as *mut libc::c_void);
|
||||||
|
free(buf2 as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_replace_bad_utf8_chars_2() {
|
||||||
|
unsafe {
|
||||||
|
let buf1 = strdup(b"ISO-String with Ae: \xc4\x00" as *const u8 as *const libc::c_char);
|
||||||
|
let buf2 = strdup(buf1);
|
||||||
|
|
||||||
|
dc_replace_bad_utf8_chars(buf2);
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
CStr::from_ptr(buf2 as *const libc::c_char)
|
||||||
|
.to_str()
|
||||||
|
.unwrap(),
|
||||||
|
"ISO-String with Ae: _"
|
||||||
|
);
|
||||||
|
|
||||||
|
free(buf1 as *mut libc::c_void);
|
||||||
|
free(buf2 as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_replace_bad_utf8_chars_3() {
|
||||||
|
unsafe {
|
||||||
|
let buf1 = strdup(b"\x00" as *const u8 as *const libc::c_char);
|
||||||
|
let buf2 = strdup(buf1);
|
||||||
|
|
||||||
|
dc_replace_bad_utf8_chars(buf2);
|
||||||
|
|
||||||
|
assert_eq!(*buf2.offset(0), 0);
|
||||||
|
|
||||||
|
free(buf1 as *mut libc::c_void);
|
||||||
|
free(buf2 as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_replace_bad_utf8_chars_4() {
|
||||||
|
unsafe {
|
||||||
|
dc_replace_bad_utf8_chars(0 as *mut libc::c_char);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_dc_create_id() {
|
||||||
|
unsafe {
|
||||||
|
let buf = dc_create_id();
|
||||||
|
assert_eq!(strlen(buf), 11);
|
||||||
|
free(buf as *mut libc::c_void);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
132
tests/stress.rs
132
tests/stress.rs
@@ -413,138 +413,6 @@ unsafe fn stress_functions(context: &Context) {
|
|||||||
free(fn0 as *mut libc::c_void);
|
free(fn0 as *mut libc::c_void);
|
||||||
free(fn1 as *mut libc::c_void);
|
free(fn1 as *mut libc::c_void);
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut buf1: *mut libc::c_char =
|
|
||||||
strdup(b"ol\xc3\xa1 mundo <>\"\'& \xc3\xa4\xc3\x84\xc3\xb6\xc3\x96\xc3\xbc\xc3\x9c\xc3\x9f foo\xc3\x86\xc3\xa7\xc3\x87 \xe2\x99\xa6&noent;\x00"
|
|
||||||
as *const u8 as *const libc::c_char);
|
|
||||||
let mut buf2: *mut libc::c_char = strdup(buf1);
|
|
||||||
dc_replace_bad_utf8_chars(buf2);
|
|
||||||
if 0 != !(strcmp(buf1, buf2) == 0i32) as usize {
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
512i32,
|
|
||||||
b"strcmp(buf1, buf2)==0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
free(buf2 as *mut libc::c_void);
|
|
||||||
buf1 = strdup(b"ISO-String with Ae: \xc4\x00" as *const u8 as *const libc::c_char);
|
|
||||||
buf2 = strdup(buf1);
|
|
||||||
dc_replace_bad_utf8_chars(buf2);
|
|
||||||
if 0 != !(strcmp(
|
|
||||||
b"ISO-String with Ae: _\x00" as *const u8 as *const libc::c_char,
|
|
||||||
buf2,
|
|
||||||
) == 0i32) as usize
|
|
||||||
{
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
517i32,
|
|
||||||
b"strcmp(\"ISO-String with Ae: _\", buf2)==0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
free(buf2 as *mut libc::c_void);
|
|
||||||
buf1 = strdup(b"\x00" as *const u8 as *const libc::c_char);
|
|
||||||
buf2 = strdup(buf1);
|
|
||||||
dc_replace_bad_utf8_chars(buf2);
|
|
||||||
if 0 != !(*buf2.offset(0isize) as libc::c_int == 0i32) as usize {
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
522i32,
|
|
||||||
b"buf2[0]==0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
free(buf2 as *mut libc::c_void);
|
|
||||||
dc_replace_bad_utf8_chars(0 as *mut libc::c_char);
|
|
||||||
buf1 = dc_urlencode(b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char);
|
|
||||||
if 0 != !(strcmp(
|
|
||||||
buf1,
|
|
||||||
b"Bj%C3%B6rn+Petersen\x00" as *const u8 as *const libc::c_char,
|
|
||||||
) == 0i32) as usize
|
|
||||||
{
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
528i32,
|
|
||||||
b"strcmp(buf1, \"Bj%C3%B6rn+Petersen\") == 0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
buf2 = dc_urldecode(buf1);
|
|
||||||
if 0 != !(strcmp(
|
|
||||||
buf2,
|
|
||||||
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char,
|
|
||||||
) == 0i32) as usize
|
|
||||||
{
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
530i32,
|
|
||||||
b"strcmp(buf2, \"Bj\xc3\xb6rn Petersen\") == 0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
free(buf2 as *mut libc::c_void);
|
|
||||||
buf1 = dc_create_id();
|
|
||||||
if 0 != !(strlen(buf1) == 11) as usize {
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
534i32,
|
|
||||||
b"strlen(buf1) == DC_CREATE_ID_LEN\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
buf1 = dc_encode_modified_utf7(
|
|
||||||
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char,
|
|
||||||
1i32,
|
|
||||||
);
|
|
||||||
if 0 != !(strcmp(
|
|
||||||
buf1,
|
|
||||||
b"Bj&APY-rn_Petersen\x00" as *const u8 as *const libc::c_char,
|
|
||||||
) == 0i32) as usize
|
|
||||||
{
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
600i32,
|
|
||||||
b"strcmp(buf1, \"Bj&APY-rn_Petersen\")==0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
buf2 = dc_decode_modified_utf7(buf1, 1i32);
|
|
||||||
if 0 != !(strcmp(
|
|
||||||
buf2,
|
|
||||||
b"Bj\xc3\xb6rn Petersen\x00" as *const u8 as *const libc::c_char,
|
|
||||||
) == 0i32) as usize
|
|
||||||
{
|
|
||||||
__assert_rtn(
|
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
|
||||||
.as_ptr(),
|
|
||||||
b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char,
|
|
||||||
602i32,
|
|
||||||
b"strcmp(buf2, \"Bj\xc3\xb6rn Petersen\")==0\x00" as *const u8 as *const libc::c_char,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
};
|
|
||||||
free(buf1 as *mut libc::c_void);
|
|
||||||
free(buf2 as *mut libc::c_void);
|
|
||||||
if 0 != !(2100i32 == 2100i32 || 2100i32 == 2052i32 || 2100i32 == 2055i32) as usize {
|
if 0 != !(2100i32 == 2100i32 || 2100i32 == 2052i32 || 2100i32 == 2055i32) as usize {
|
||||||
__assert_rtn(
|
__assert_rtn(
|
||||||
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
(*::std::mem::transmute::<&[u8; 17], &[libc::c_char; 17]>(b"stress_functions\x00"))
|
||||||
|
|||||||
Reference in New Issue
Block a user