diff options
| author | Max Audron <audron@cocaine.farm> | 2021-01-21 14:57:22 +0100 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-01-21 14:57:22 +0100 |
| commit | 2405fa686a53f1d895807b1658c38a5e7e7693a0 (patch) | |
| tree | d40a9430a421d3ca4a28ce2ad98b51e3d731f265 /src/tests | |
| parent | Merge branch 'client' (diff) | |
reorganize tests and add quassel features
Diffstat (limited to '')
| -rw-r--r-- | src/tests/base_types.rs | 84 | ||||
| -rw-r--r-- | src/tests/datetime.rs | 28 | ||||
| -rw-r--r-- | src/tests/frame.rs | 240 | ||||
| -rw-r--r-- | src/tests/handshake_types.rs | 44 | ||||
| -rw-r--r-- | src/tests/mod.rs | 17 | ||||
| -rw-r--r-- | src/tests/variant_types.rs | 100 |
6 files changed, 0 insertions, 513 deletions
diff --git a/src/tests/base_types.rs b/src/tests/base_types.rs deleted file mode 100644 index bbd2fc3..0000000 --- a/src/tests/base_types.rs +++ /dev/null @@ -1,84 +0,0 @@ -use crate::{Deserialize, DeserializeUTF8}; -use crate::{Serialize, SerializeUTF8}; - -use crate::primitive::*; - -#[test] -pub fn serialize_string() { - let test_string: String = String::from("Configured"); - - assert_eq!( - test_string.serialize().unwrap(), - [ - 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, 101, 0, - 100 - ] - ); -} - -#[test] -pub fn serialize_string_utf8() { - let test_string: String = String::from("Configured"); - - assert_eq!( - test_string.serialize_utf8().unwrap(), - [0, 0, 0, 11, 67, 111, 110, 102, 105, 103, 117, 114, 101, 100, 0] - ); -} - -#[test] -pub fn deserialize_string() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, 101, 0, 100, - 0, 0, 0, 1, - ]; - let (len, res) = String::parse(test_bytes).unwrap(); - assert_eq!(res, "Configured"); - assert_eq!(len, 24); -} - -#[test] -pub fn deserialize_string_utf8() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 10, 67, 111, 110, 102, 105, 103, 117, 114, 101, 100, 0, 0, 0, 1, - ]; - let (len, res) = String::parse_utf8(test_bytes).unwrap(); - assert_eq!(len, 14); - assert_eq!(res, "Configured"); -} - -#[test] -pub fn deserialize_string_utf8_null_terminated() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 11, 67, 111, 110, 102, 105, 103, 117, 114, 101, 100, 0, 0, 0, 0, 1, - ]; - let (len, res) = String::parse_utf8(test_bytes).unwrap(); - assert_eq!(len, 15); - assert_eq!(res, "Configured"); -} - -#[test] -pub fn serialize_string_list() { - let mut test_list = StringList::new(); - test_list.push("Configured".to_string()); - assert_eq!( - test_list.serialize().unwrap(), - [ - 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, - 0, 101, 0, 100 - ] - ) -} - -#[test] -pub fn deserialize_string_list() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, - 101, 0, 100, 0, 0, 0, 1, - ]; - let mut test_list = StringList::new(); - test_list.push("Configured".to_string()); - let (len, res) = StringList::parse(test_bytes).unwrap(); - assert_eq!(len, 28); - assert_eq!(test_list, res); -} diff --git a/src/tests/datetime.rs b/src/tests/datetime.rs deleted file mode 100644 index 85d84cb..0000000 --- a/src/tests/datetime.rs +++ /dev/null @@ -1,28 +0,0 @@ -use crate::Deserialize; -use crate::Serialize; - -use crate::primitive::DateTime; - -#[test] -pub fn serialize_datetime() { - // Create datetime object - let datetime = DateTime::parse("2020-02-19 13:00 +0200", "%Y-%m-%d %R %z").unwrap(); - println!("datetime: {:?}", datetime); - - let sers = datetime.serialize().unwrap(); - let bytes = vec![0, 37, 133, 19, 2, 202, 28, 128, 3, 0, 0, 28, 32]; - - assert_eq!(sers, bytes) -} - -#[test] -pub fn deserialize_datetime() { - // Create datetime object - let datetime = DateTime::parse("2020-02-19 13:00 +0200", "%Y-%m-%d %R %z").unwrap(); - println!("datetime: {:?}", datetime); - - let bytes = vec![0, 37, 133, 19, 2, 202, 28, 128, 3, 0, 0, 28, 32]; - let (_, res): (usize, DateTime) = Deserialize::parse(&bytes).unwrap(); - - assert_eq!(res, datetime) -} diff --git a/src/tests/frame.rs b/src/tests/frame.rs deleted file mode 100644 index 878379f..0000000 --- a/src/tests/frame.rs +++ /dev/null @@ -1,240 +0,0 @@ -use tokio::io::{AsyncRead, AsyncWrite}; -use tokio_test::task; -use tokio_test::{ - assert_err, assert_ok, assert_pending, assert_ready, assert_ready_err, assert_ready_ok, -}; -use tokio_util::codec::*; - -use bytes::{BufMut, Bytes, BytesMut}; -use futures::{pin_mut, Sink, Stream}; - -use std::collections::VecDeque; -use std::io; -use std::pin::Pin; -use std::task::Poll::*; -use std::task::{Context, Poll}; - -use flate2::Compress; -use flate2::Compression; -use flate2::Decompress; -use flate2::FlushCompress; -use flate2::FlushDecompress; - -use crate::frame::QuasselCodec; - -macro_rules! mock { - ($($x:expr,)*) => {{ - let mut v = VecDeque::new(); - v.extend(vec![$($x),*]); - Mock { calls: v } - }}; -} - -macro_rules! assert_next_eq { - ($io:ident, $expect:expr) => {{ - task::spawn(()).enter(|cx, _| { - let res = assert_ready!($io.as_mut().poll_next(cx)); - match res { - Some(Ok(v)) => assert_eq!(v, $expect.as_ref()), - Some(Err(e)) => panic!("error = {:?}", e), - None => panic!("none"), - } - }); - }}; -} - -macro_rules! assert_next_pending { - ($io:ident) => {{ - task::spawn(()).enter(|cx, _| match $io.as_mut().poll_next(cx) { - Ready(Some(Ok(v))) => panic!("value = {:?}", v), - Ready(Some(Err(e))) => panic!("error = {:?}", e), - Ready(None) => panic!("done"), - Pending => {} - }); - }}; -} - -macro_rules! assert_next_err { - ($io:ident) => {{ - task::spawn(()).enter(|cx, _| match $io.as_mut().poll_next(cx) { - Ready(Some(Ok(v))) => panic!("value = {:?}", v), - Ready(Some(Err(_))) => {} - Ready(None) => panic!("done"), - Pending => panic!("pending"), - }); - }}; -} - -macro_rules! assert_done { - ($io:ident) => {{ - task::spawn(()).enter(|cx, _| { - let res = assert_ready!($io.as_mut().poll_next(cx)); - match res { - Some(Ok(v)) => panic!("value = {:?}", v), - Some(Err(e)) => panic!("error = {:?}", e), - None => {} - } - }); - }}; -} - -// ====================== -// ===== Test ===== -// ====================== - -#[test] -pub fn read_single_frame() { - let io = FramedRead::new( - mock! { - data(b"\x00\x00\x00\x09abcdefghi"), - }, - QuasselCodec::new(), - ); - pin_mut!(io); - - assert_next_eq!(io, b"abcdefghi"); - assert_done!(io); -} - -#[test] -pub fn read_multi_frame() { - let mut d: Vec<u8> = vec![]; - d.extend_from_slice(b"\x00\x00\x00\x09abcdefghi"); - d.extend_from_slice(b"\x00\x00\x00\x03123"); - d.extend_from_slice(b"\x00\x00\x00\x0bhello world"); - - let io = FramedRead::new( - mock! { - data(&d), - }, - QuasselCodec::new(), - ); - pin_mut!(io); - - assert_next_eq!(io, b"abcdefghi"); - assert_next_eq!(io, b"123"); - assert_next_eq!(io, b"hello world"); - assert_done!(io); -} - -#[test] -pub fn read_single_frame_compressed() { - let io = FramedRead::new( - mock! { - data(b"\x78\x9c\x63\x60\x60\xe0\x4c\x4c\x4a\x4e\x49\x4d\x4b\xcf\xc8\x04\x00\x11\xec\x03\x97"), - }, - QuasselCodec::builder().compression(true).new_codec(), - ); - pin_mut!(io); - - assert_next_eq!(io, b"abcdefghi"); - assert_done!(io); -} - -#[test] -pub fn read_multi_frame_compressed() { - let io = FramedRead::new( - mock! { - data( - b"\x78\x9c\x63\x60\x60\xe0\x4c\x4c\x4a\x4e\x49\x4d\x4b\xcf\xc8\x04\x00\x11\xec\x03\x97\x78\x9c\x63\x60\x60\x60\x36\x34\x32\x06\x00\x01\x3d\x00\x9a\x78\x9c\x63\x60\x60\xe0\xce\x48\xcd\xc9\xc9\x57\x28\xcf\x2f\xca\x49\x01\x00\x1a\x93\x04\x68", - ), - }, - QuasselCodec::builder().compression(true).new_codec(), - ); - pin_mut!(io); - - assert_next_eq!(io, b"abcdefghi"); - assert_next_eq!(io, b"123"); - assert_next_eq!(io, b"hello world"); - assert_done!(io); -} - -// ====================== -// ===== Test utils ===== -// ====================== - -struct Mock { - calls: VecDeque<Poll<io::Result<Op>>>, -} - -enum Op { - Data(Vec<u8>), - Flush, -} - -use self::Op::*; - -impl AsyncRead for Mock { - fn poll_read( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - dst: &mut [u8], - ) -> Poll<io::Result<usize>> { - match self.calls.pop_front() { - Some(Ready(Ok(Op::Data(data)))) => { - debug_assert!(dst.len() >= data.len()); - dst[..data.len()].copy_from_slice(&data[..]); - Ready(Ok(data.len())) - } - Some(Ready(Ok(_))) => panic!(), - Some(Ready(Err(e))) => Ready(Err(e)), - Some(Pending) => Pending, - None => Ready(Ok(0)), - } - } -} - -impl AsyncWrite for Mock { - fn poll_write( - mut self: Pin<&mut Self>, - _cx: &mut Context<'_>, - src: &[u8], - ) -> Poll<Result<usize, io::Error>> { - match self.calls.pop_front() { - Some(Ready(Ok(Op::Data(data)))) => { - let len = data.len(); - assert!(src.len() >= len, "expect={:?}; actual={:?}", data, src); - assert_eq!(&data[..], &src[..len]); - Ready(Ok(len)) - } - Some(Ready(Ok(_))) => panic!(), - Some(Ready(Err(e))) => Ready(Err(e)), - Some(Pending) => Pending, - None => Ready(Ok(0)), - } - } - - fn poll_flush(mut self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> { - match self.calls.pop_front() { - Some(Ready(Ok(Op::Flush))) => Ready(Ok(())), - Some(Ready(Ok(_))) => panic!(), - Some(Ready(Err(e))) => Ready(Err(e)), - Some(Pending) => Pending, - None => Ready(Ok(())), - } - } - - fn poll_shutdown(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Result<(), io::Error>> { - Ready(Ok(())) - } -} - -impl<'a> From<&'a [u8]> for Op { - fn from(src: &'a [u8]) -> Op { - Op::Data(src.into()) - } -} - -impl From<Vec<u8>> for Op { - fn from(src: Vec<u8>) -> Op { - Op::Data(src) - } -} - -fn data(bytes: &[u8]) -> Poll<io::Result<Op>> { - Ready(Ok(bytes.into())) -} - -fn flush() -> Poll<io::Result<Op>> { - Ready(Ok(Flush)) -} diff --git a/src/tests/handshake_types.rs b/src/tests/handshake_types.rs deleted file mode 100644 index 1e789c1..0000000 --- a/src/tests/handshake_types.rs +++ /dev/null @@ -1,44 +0,0 @@ -use crate::primitive::{Variant, VariantMap}; -use crate::{HandshakeDeserialize, HandshakeSerialize}; - -#[test] -pub fn serialize_variantmap() { - let mut test_variantmap = VariantMap::new(); - test_variantmap.insert("Configured".to_string(), Variant::bool(true)); - let bytes = [ - 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, - 117, 0, 114, 0, 101, 0, 100, 0, 0, 0, 1, 0, 1, - ] - .to_vec(); - assert_eq!(test_variantmap.serialize().unwrap(), bytes); -} - -#[test] -pub fn deserialize_variantmap() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 2, 0, 0, 0, 10, 0, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, - 117, 0, 114, 0, 101, 0, 100, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, - ]; - let mut test_variantmap = VariantMap::new(); - test_variantmap.insert("Configured".to_string(), Variant::bool(true)); - - let (len, res) = VariantMap::parse(test_bytes).unwrap(); - - assert_eq!(len, 39); - assert_eq!(res, test_variantmap); -} - -#[test] -pub fn deserialize_variantmap_utf8() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 2, 0, 0, 0, 12, 0, 0, 0, 0, 10, 67, 111, 110, 102, 105, 103, 117, 114, 101, 100, - 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, - ]; - let mut test_variantmap = VariantMap::new(); - test_variantmap.insert("Configured".to_string(), Variant::bool(true)); - - let (len, res) = VariantMap::parse(test_bytes).unwrap(); - - assert_eq!(len, 29); - assert_eq!(res, test_variantmap); -} diff --git a/src/tests/mod.rs b/src/tests/mod.rs deleted file mode 100644 index 1e99bfe..0000000 --- a/src/tests/mod.rs +++ /dev/null @@ -1,17 +0,0 @@ -pub mod base_types; -pub mod datetime; - -#[allow(unused_imports)] -#[allow(unused_macros)] -#[allow(dead_code)] -#[cfg(feature = "framing")] -pub mod frame; - -pub mod handshake_types; - -pub mod variant_types; - -extern crate futures; -extern crate tokio; -extern crate tokio_test; -extern crate tokio_util; diff --git a/src/tests/variant_types.rs b/src/tests/variant_types.rs deleted file mode 100644 index 7ba4166..0000000 --- a/src/tests/variant_types.rs +++ /dev/null @@ -1,100 +0,0 @@ -use crate::Deserialize; -use crate::Serialize; - -use crate::primitive::{BufferInfo, BufferType, Message, Variant, VariantList, VariantMap}; - -#[test] -pub fn serialize_variant_bool() { - let test_variant_true = Variant::bool(true); - let test_variant_false = Variant::bool(false); - assert_eq!(test_variant_true.serialize().unwrap(), [0, 0, 0, 1, 0, 1]); - assert_eq!(test_variant_false.serialize().unwrap(), [0, 0, 0, 1, 0, 0]); -} - -#[test] -pub fn deserialize_variant_bool() { - let test_bytes: &[u8] = &[0, 0, 0, 1, 0, 1, 0, 0, 0, 1]; - let (len, res) = Variant::parse(test_bytes).unwrap(); - assert_eq!(len, 6); - assert_eq!(res, Variant::bool(true)); -} - -#[test] -pub fn serialize_variantlist() { - let mut test_variantlist = VariantList::new(); - test_variantlist.push(Variant::bool(true)); - assert_eq!( - test_variantlist.serialize().unwrap(), - [0, 0, 0, 1, 0, 0, 0, 1, 0, 1] - ); -} - -#[test] -pub fn deserialize_variantlist() { - let test_bytes: &[u8] = &[0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1]; - let (len, res) = VariantList::parse(test_bytes).unwrap(); - let mut test_variantlist = VariantList::new(); - test_variantlist.push(Variant::bool(true)); - assert_eq!(len, 10); - assert_eq!(res, test_variantlist); -} - -#[test] -pub fn serialize_variantmap() { - let mut test_variantmap = VariantMap::new(); - test_variantmap.insert("Configured".to_string(), Variant::bool(true)); - let bytes = [ - 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, - 101, 0, 100, 0, 0, 0, 1, 0, 1, - ] - .to_vec(); - assert_eq!(test_variantmap.serialize().unwrap(), bytes); -} - -#[test] -pub fn deserialize_variantmap() { - let test_bytes: &[u8] = &[ - 0, 0, 0, 1, 0, 0, 0, 20, 0, 67, 0, 111, 0, 110, 0, 102, 0, 105, 0, 103, 0, 117, 0, 114, 0, - 101, 0, 100, 0, 0, 0, 1, 0, 1, - ]; - let (len, res) = VariantMap::parse(test_bytes).unwrap(); - let mut test_variantmap = VariantMap::new(); - test_variantmap.insert("Configured".to_string(), Variant::bool(true)); - assert_eq!(len, 34); - assert_eq!(res, test_variantmap); -} - -#[test] -pub fn serialize_buffer_info() { - let test_buffer_info = BufferInfo { - id: 0, - network_id: 0, - buffer_type: BufferType::Status, - name: "test".to_string(), - }; - - let bytes = vec![ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, - 0x74, 0x65, 0x73, 0x74, 0x0, - ]; - assert_eq!(test_buffer_info.serialize().unwrap(), bytes); -} - -#[test] -pub fn deserialize_buffer_info() { - let test_buffer_info = BufferInfo { - id: 0, - network_id: 0, - buffer_type: BufferType::Status, - name: "test".to_string(), - }; - - let bytes = vec![ - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, - 0x74, 0x65, 0x73, 0x74, 0x0, - ]; - let (len, res) = BufferInfo::parse(&bytes).unwrap(); - - assert_eq!(len, 23); - assert_eq!(res, test_buffer_info); -} |
