queue 0.3.2-final

Simple wrapper around Vec to provide a FIFO queue.
Documentation
use super::*;

#[test]
fn from_vec() {
	let q = Queue::from(vec![1, 2, 3]);
	assert_eq!(&vec![1, 2, 3], q.vec());
}

#[test]
fn from_empty_vec() {
	let v: Vec<i64> = Vec::new();
	let q = Queue::from(v.clone());
	assert_eq!(&v, q.vec());
}

#[test]
fn queue() {
	let mut q = Queue::new();
	assert_eq!(q.queue("hello"), Ok(1));
}

#[test]
fn dequeue() {
	let mut q = Queue::new();
	q.queue("hello").unwrap();
	assert_eq!(q.dequeue(), Some("hello"));
}

#[test]
fn dequeue_empty() {
	let mut q: Queue<i64> = Queue::new();
	assert_eq!(q.dequeue(), None);
}

#[test]
fn no_capacity() {
	let q: Queue<u8> = Queue::new();
	assert_eq!(q.capacity(), None);
}

#[test]
fn some_capacity() {
	let q: Queue<u8> = Queue::with_capacity(12);
	assert_eq!(q.capacity(), Some(12));
}

#[test]
fn queue_full_capacity() {
	let mut q: Queue<u8> = Queue::with_capacity(0);
	assert_eq!(q.queue(3), Err(()));
}

#[test]
fn vec_empty() {
	let q: Queue<i64> = Queue::new();
	let v: Vec<i64> = Vec::new();
	assert_eq!(&v, q.vec());
}

#[test]
fn vec_some() {
	let mut q = Queue::new();
	q.queue(1).unwrap();
	q.queue(2).unwrap();
	q.queue(3).unwrap();
	let v = vec![1, 2, 3];
	assert_eq!(&v, q.vec());
}

#[test]
fn peek_at_empty() {
	let q: Queue<u8> = Queue::with_capacity(1);
	assert_eq!(q.peek(), None);
}

#[test]
fn peek_at_something() {
	let mut q = Queue::new();
	q.queue(1).unwrap();
	assert_eq!(q.peek(), Some(1));
}

#[test]
fn force_queue_with_capacity() {
	let mut q: Queue<u8> = Queue::with_capacity(1);
	q.queue(1).unwrap();
	let _ = q.force_queue(2);
	assert_eq!(q.peek(), Some(2));
}

#[test]
fn force_queue_with_capacity_check_size() {
	let mut q = Queue::with_capacity(1);
	q.queue(1).unwrap();
	assert_eq!(1, q.force_queue(2));
}

#[test]
fn force_queue_no_capacity() {
	let mut q = Queue::new();
	q.queue(1).unwrap();
	assert_eq!(2, q.force_queue(2));
}

#[test]
fn no_len() {
	let q: Queue<u8> = Queue::new();
	assert_eq!(q.len(), 0);
}

#[test]
fn some_len() {
	let mut q = Queue::new();
	q.queue(1).unwrap();
	q.queue(2).unwrap();
	assert_eq!(q.len(), 2);
}

#[test]
fn is_empty_empty() {
	let q: Queue<i64> = Queue::new();
	assert_eq!(q.is_empty(), true);
}

#[test]
fn is_empty_some() {
	let mut q = Queue::new();
	q.queue(1).unwrap();
	assert_eq!(q.is_empty(), false);
}