aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-01-21 14:57:22 +0100
committerMax Audron <audron@cocaine.farm>2021-01-21 14:57:22 +0100
commit2405fa686a53f1d895807b1658c38a5e7e7693a0 (patch)
treed40a9430a421d3ca4a28ce2ad98b51e3d731f265 /src/tests
parentMerge branch 'client' (diff)
reorganize tests and add quassel features
Diffstat (limited to '')
-rw-r--r--src/tests/base_types.rs84
-rw-r--r--src/tests/datetime.rs28
-rw-r--r--src/tests/frame.rs240
-rw-r--r--src/tests/handshake_types.rs44
-rw-r--r--src/tests/mod.rs17
-rw-r--r--src/tests/variant_types.rs100
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);
-}