From a95544c5c098c88292761a01a4c037d0b670f16b Mon Sep 17 00:00:00 2001 From: Lars-Magnus Skog Date: Mon, 13 May 2019 13:03:41 +0200 Subject: [PATCH] test: move simplify tests to unit tests for dc_simplify.rs --- src/dc_simplify.rs | 100 +++++++++++++++++++++++++++++++++++++++++++-- tests/stress.rs | 69 ------------------------------- 2 files changed, 96 insertions(+), 73 deletions(-) diff --git a/src/dc_simplify.rs b/src/dc_simplify.rs index eb5de28b9..9d70afe84 100644 --- a/src/dc_simplify.rs +++ b/src/dc_simplify.rs @@ -73,9 +73,9 @@ pub unsafe fn dc_simplify_simplify( out } -/* ****************************************************************************** +/** * Simplify Plain Text - ******************************************************************************/ + */ unsafe fn dc_simplify_simplify_plain_text( mut simplify: *mut dc_simplify_t, buf_terminated: *const libc::c_char, @@ -250,9 +250,9 @@ unsafe fn dc_simplify_simplify_plain_text( ret.buf } -/* ****************************************************************************** +/** * Tools - ******************************************************************************/ + */ unsafe fn is_empty_line(buf: *const libc::c_char) -> bool { /* force unsigned - otherwise the `> ' '` comparison will fail */ let mut p1: *const libc::c_uchar = buf as *const libc::c_uchar; @@ -289,3 +289,95 @@ unsafe fn is_plain_quote(buf: *const libc::c_char) -> bool { false } + +#[cfg(test)] +mod tests { + use super::*; + use std::ffi::CStr; + + #[test] + fn test_simplify_trim() { + unsafe { + let simplify: *mut dc_simplify_t = dc_simplify_new(); + let html: *const libc::c_char = + b"\r\r\nline1
\r\n\r\n\r\rline2\n\r\x00" as *const u8 as *const libc::c_char; + let plain: *mut libc::c_char = + dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1, 0); + + assert_eq!( + CStr::from_ptr(plain as *const libc::c_char) + .to_str() + .unwrap(), + "line1\nline2", + ); + + free(plain as *mut libc::c_void); + dc_simplify_unref(simplify); + } + } + + #[test] + fn test_simplify_parse_href() { + unsafe { + let simplify: *mut dc_simplify_t = dc_simplify_new(); + let html: *const libc::c_char = + b"text]>text bold]]>\x00" + as *const u8 as *const libc::c_char; + let plain: *mut libc::c_char = + dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1, 0); + + assert_eq!( + CStr::from_ptr(plain as *const libc::c_char) + .to_str() + .unwrap(), + "text *bold*<>", + ); + + free(plain as *mut libc::c_void); + dc_simplify_unref(simplify); + } + } + + #[test] + fn test_simplify_html_encoded() { + unsafe { + let simplify: *mut dc_simplify_t = dc_simplify_new(); + let html: *const libc::c_char = + b"<>"'& äÄöÖüÜß fooÆçÇ ♦&noent;‎‏‌‍\x00" + as *const u8 as *const libc::c_char; + let plain: *mut libc::c_char = + dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1, 0); + + assert_eq!( + strcmp(plain, + b"<>\"\'& \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), + 0, + ); + + free(plain as *mut libc::c_void); + dc_simplify_unref(simplify); + } + } +} diff --git a/tests/stress.rs b/tests/stress.rs index 1d7c74c8a..8b439fb47 100644 --- a/tests/stress.rs +++ b/tests/stress.rs @@ -26,7 +26,6 @@ use deltachat::dc_pgp::*; use deltachat::dc_qr::*; use deltachat::dc_saxparser::*; use deltachat::dc_securejoin::*; -use deltachat::dc_simplify::*; use deltachat::dc_strbuilder::*; use deltachat::dc_strencode::*; use deltachat::dc_tools::*; @@ -61,74 +60,6 @@ unsafe fn stress_functions(context: &dc_context_t) { b"\r\n\r\n\r\rline2\n\r\x00" as *const u8 as *const libc::c_char; - let mut plain: *mut libc::c_char = - dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1i32, 0i32); - - assert_eq!( - CStr::from_ptr(plain as *const libc::c_char) - .to_str() - .unwrap(), - "line1\nline2", - ); - free(plain as *mut libc::c_void); - - html = b"text(b"stress_functions\x00")) - .as_ptr(), - b"../cmdline/stress.c\x00" as *const u8 as *const libc::c_char, - 179i32, - b"strcmp(plain, \"[text](url)\")==0\x00" as *const u8 as *const libc::c_char, - ); - } else { - }; - free(plain as *mut libc::c_void); - html = - b"]>text bold]]>\x00" - as *const u8 as *const libc::c_char; - plain = dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1i32, 0i32); - if 0 != !(strcmp( - plain, - b"text *bold*<>\x00" as *const u8 as *const libc::c_char, - ) == 0i32) as libc::c_int as libc::c_long - { - __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, - 184i32, - b"strcmp(plain, \"text *bold*<>\")==0\x00" as *const u8 as *const libc::c_char, - ); - } else { - }; - free(plain as *mut libc::c_void); - html = - b"<>"'& äÄöÖüÜß fooÆçÇ ♦&noent;‎‏‌‍\x00" - as *const u8 as *const libc::c_char; - plain = dc_simplify_simplify(simplify, html, strlen(html) as libc::c_int, 1i32, 0i32); - if 0 != - !(strcmp(plain, - b"<>\"\'& \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) == 0i32) as - libc::c_int as libc::c_long { - __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, 189i32, - b"strcmp(plain, \"<>\\\"\'& \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;\")==0\x00" - as *const u8 as *const libc::c_char); - } else { }; - free(plain as *mut libc::c_void); - dc_simplify_unref(simplify); let xml: *const libc::c_char = b"\n\n\n2019-03-06T21:09:57Z9.423110,53.790302\n\n \n\t2018-12-13T22:11:12Z\t 19.423110 \t , \n 63.790302\n \n\n\x00" as *const u8 as *const libc::c_char;