From e1bf4a0dd5e29785c454542a2777b2cf7d928845 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Thu, 24 Jun 2021 18:32:42 +0200 Subject: [PATCH] WrapTextTest: add additional test cases ... in part to document the behaviour of the function, in part to actually test it. By the looks of it more tests are still needed though to raise the code coverage of this function to 100%. I'd also recommend adding tests with different charset settings as the current tests are all based on the default charset (`CHARSET_ISO88591`). Also note: the "empty string" test may need looking at.... is this a bug ? --- test/PHPMailer/WrapTextTest.php | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/test/PHPMailer/WrapTextTest.php b/test/PHPMailer/WrapTextTest.php index 29320474..1e049fc4 100644 --- a/test/PHPMailer/WrapTextTest.php +++ b/test/PHPMailer/WrapTextTest.php @@ -45,6 +45,60 @@ final class WrapTextTest extends TestCase public function dataWrapText() { return [ + 'empty string' => [ + 'message' => '', + 'expected' => PHPMailer::getLE(), + 'qp_mode' => false, + ], + 'line length less than wrap limit, qp: false' => [ + 'message' => 'Lorem ipsum dolor sit amet.', + 'expected' => 'Lorem ipsum dolor sit amet.' . PHPMailer::getLE(), + 'qp_mode' => false, + ], + 'line length less than wrap limit, qp: true' => [ + 'message' => 'Lorem ipsum dolor sit amet.', + 'expected' => 'Lorem ipsum dolor sit amet.' . PHPMailer::getLE(), + 'qp_mode' => true, + ], + 'message with line ending at end' => [ + 'message' => 'Lorem ipsum dolor' . PHPMailer::CRLF, + 'expected' => 'Lorem ipsum dolor' . PHPMailer::getLE(), + ], + 'line length more than wrap limit, qp: false' => [ + 'message' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' + . ' Maecenas ultricies nisi justo, eu convallis tortor porttitor a.' + . ' Nam ut risus tellus. Vivamus imperdiet dictum nibh, in faucibus nunc pretium ac.', + 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing' . PHPMailer::getLE() + . 'elit. Maecenas ultricies nisi justo, eu convallis' . PHPMailer::getLE() + . 'tortor porttitor a. Nam ut risus tellus. Vivamus' . PHPMailer::getLE() + . 'imperdiet dictum nibh, in faucibus nunc pretium' . PHPMailer::getLE() + . 'ac.' . PHPMailer::getLE(), + 'qp_mode' => false, + ], + 'line length more than wrap limit, qp: true' => [ + 'message' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' + . ' Maecenas ultricies nisi justo, eu convallis tortor porttitor a.' + . ' Nam ut risus tellus. Vivamus imperdiet dictum nibh, in faucibus nunc pretium ac.', + 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing =' . PHPMailer::getLE() + . 'elit. Maecenas ultricies nisi justo, eu convallis =' . PHPMailer::getLE() + . 'tortor porttitor a. Nam ut risus tellus. Vivamus =' . PHPMailer::getLE() + . 'imperdiet dictum nibh, in faucibus nunc pretium =' . PHPMailer::getLE() + . 'ac.' . PHPMailer::getLE(), + 'qp_mode' => true, + ], + 'line length more than wrap limit, message already in qp format, qp: true' => [ + 'message' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. =' . PHPMailer::CRLF + . 'Maecenas ultricies nisi justo, eu convallis tortor porttitor a. =' . PHPMailer::CRLF + . 'Nam ut risus tellus. Vivamus imperdiet dictum nibh, in faucibus nunc pretium ac.' + . PHPMailer::CRLF, + 'expected' => 'Lorem ipsum dolor sit amet, consectetur adipiscing =' . PHPMailer::getLE() + . 'elit. =' . PHPMailer::getLE() + . 'Maecenas ultricies nisi justo, eu convallis tortor =' . PHPMailer::getLE() + . 'porttitor a. =' . PHPMailer::getLE() + . 'Nam ut risus tellus. Vivamus imperdiet dictum =' . PHPMailer::getLE() + . 'nibh, in faucibus nunc pretium ac.' . PHPMailer::getLE(), + 'qp_mode' => true, + ], 'very long word in message, qp: false' => [ 'message' => 'Lorem ipsumdolorsitametconsetetursadipscingelitrseddiamnonumy', 'expected' => 'Lorem' . PHPMailer::getLE() @@ -57,6 +111,14 @@ final class WrapTextTest extends TestCase . 'eddiamnonumy' . PHPMailer::getLE(), 'qp_mode' => true, ], + 'very long word in message, message already in qp format, qp: true' => [ + 'message' => 'Lorem ipsumdolorsitametconsetetursadipscingelitrseddiam=' . PHPMailer::CRLF + . 'nonumy', + 'expected' => 'Lorem =' . PHPMailer::getLE() + . 'ipsumdolorsitametconsetetursadipscingelitrseddiam=' . PHPMailer::getLE() + . 'nonumy' . PHPMailer::getLE(), + 'qp_mode' => true, + ], ]; } }