multipart test

This commit is contained in:
Quentin 2023-07-23 13:25:33 +02:00
parent dd285dd7c0
commit c7e8764c3a
Signed by: quentin
GPG key ID: E9602264D639FF68
2 changed files with 48 additions and 12 deletions

View file

@ -5,16 +5,16 @@ use crate::mime::field::Content;
use crate::mime::r#type::{AnyType, self as ctype}; //Multipart, Message, Text, Binary}; use crate::mime::r#type::{AnyType, self as ctype}; //Multipart, Message, Text, Binary};
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub struct Multipart<'a>(pub ctype::Multipart, Generic<'a>); pub struct Multipart<'a>(pub ctype::Multipart, pub Generic<'a>);
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub struct Message<'a>(pub ctype::Message, Generic<'a>); pub struct Message<'a>(pub ctype::Message, pub Generic<'a>);
#[derive(Debug, PartialEq, Clone, Default)] #[derive(Debug, PartialEq, Clone, Default)]
pub struct Text<'a>(pub ctype::Text, Generic<'a>); pub struct Text<'a>(pub ctype::Text, pub Generic<'a>);
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub struct Binary<'a>(pub ctype::Binary, Generic<'a>); pub struct Binary<'a>(pub ctype::Binary, pub Generic<'a>);
#[derive(Debug, PartialEq, Clone)] #[derive(Debug, PartialEq, Clone)]
pub enum AnyMIME<'a> { pub enum AnyMIME<'a> {

View file

@ -15,11 +15,19 @@ use crate::text::whitespace::obs_crlf;
use crate::text::ascii::CRLF; use crate::text::ascii::CRLF;
use crate::header::{header, CompFieldList}; use crate::header::{header, CompFieldList};
#[derive(Debug, PartialEq)]
pub struct Multipart<'a>(pub mime::mime::Multipart<'a>, pub Vec<AnyPart<'a>>); pub struct Multipart<'a>(pub mime::mime::Multipart<'a>, pub Vec<AnyPart<'a>>);
#[derive(Debug, PartialEq)]
pub struct Message<'a>(pub mime::mime::Message<'a>, pub imf::message::Message<'a>, pub Box<AnyPart<'a>>); pub struct Message<'a>(pub mime::mime::Message<'a>, pub imf::message::Message<'a>, pub Box<AnyPart<'a>>);
#[derive(Debug, PartialEq)]
pub struct Text<'a>(pub mime::mime::Text<'a>, pub &'a [u8]); pub struct Text<'a>(pub mime::mime::Text<'a>, pub &'a [u8]);
#[derive(Debug, PartialEq)]
pub struct Binary<'a>(pub mime::mime::Binary<'a>, pub &'a [u8]); pub struct Binary<'a>(pub mime::mime::Binary<'a>, pub &'a [u8]);
#[derive(Debug, PartialEq)]
pub enum AnyPart<'a> { pub enum AnyPart<'a> {
Mult(Multipart<'a>), Mult(Multipart<'a>),
Msg(Message<'a>), Msg(Message<'a>),
@ -189,11 +197,19 @@ It DOES end with a linebreak.
)) ))
); );
} }
/*
#[test] #[test]
fn test_multipart() { fn test_multipart() {
let base_mime = mime::mime::Multipart(
mime::r#type::Multipart {
subtype: mime::r#type::MultipartSubtype::Alternative,
boundary: "simple boundary".to_string(),
},
mime::mime::Generic::default(),
);
assert_eq!( assert_eq!(
multipart(b"simple boundary")(b"This is the preamble. It is to be ignored, though it multipart(base_mime.clone())(b"This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers. explanatory note to non-MIME conformant readers.
@ -212,12 +228,32 @@ It DOES end with a linebreak.
This is the epilogue. It is also to be ignored. This is the epilogue. It is also to be ignored.
"), "),
Ok((&b"\nThis is the epilogue. It is also to be ignored.\n"[..], Ok((&b"\nThis is the epilogue. It is also to be ignored.\n"[..],
Multipart(
base_mime,
vec![ vec![
&b"\nThis is implicitly typed plain US-ASCII text.\nIt does NOT end with a linebreak."[..], AnyPart::Txt(Text(
&b"Content-type: text/plain; charset=us-ascii\n\nThis is explicitly typed plain US-ASCII text.\nIt DOES end with a linebreak.\n"[..], mime::mime::Text(
] mime::r#type::Text {
subtype: mime::r#type::TextSubtype::Plain,
charset: mime::charset::EmailCharset::US_ASCII,
},
mime::mime::Generic::default(),
),
&b"This is implicitly typed plain US-ASCII text.\nIt does NOT end with a linebreak."[..],
)), )),
AnyPart::Txt(Text(
mime::mime::Text(
mime::r#type::Text {
subtype: mime::r#type::TextSubtype::Plain,
charset: mime::charset::EmailCharset::US_ASCII,
},
mime::mime::Generic::default(),
),
&b"This is explicitly typed plain US-ASCII text.\nIt DOES end with a linebreak.\n"[..],
)),
],
),
))
); );
} }
*/
} }