Add some tests for runtime

This commit is contained in:
Kogia-sima 2020-06-11 19:02:28 +09:00
parent d7c3b8fa0b
commit 6dea4793ab
2 changed files with 33 additions and 54 deletions

View File

@ -209,18 +209,29 @@ mod tests {
fn test1() {
let mut buffer = Buffer::new();
assert!(buffer.data.is_null());
assert_eq!(buffer.len, 0);
assert_eq!(buffer.capacity, 0);
assert_eq!(buffer.len(), 0);
assert_eq!(buffer.capacity(), 0);
buffer.push_str("apple");
assert!(!buffer.data.is_null());
assert_eq!(buffer.len, 5);
assert_eq!(buffer.capacity, 5);
assert_eq!(buffer.len(), 5);
assert_eq!(buffer.capacity(), 5);
buffer.push_str("pie");
assert!(!buffer.data.is_null());
assert_eq!(buffer.len, 8);
assert_eq!(buffer.capacity, 10);
assert_eq!(buffer.len(), 8);
assert_eq!(buffer.capacity(), 10);
}
#[test]
fn test2() {
let mut buffer = Buffer::with_capacity(1);
assert!(buffer.is_empty());
assert_eq!(buffer.len(), 0);
assert!(buffer.capacity() >= 1);
buffer += "pie";
assert!(!buffer.is_empty());
}
#[test]

View File

@ -1,4 +1,4 @@
use std::path::{Path, PathBuf};
use std::path::Path;
use super::buffer::Buffer;
use super::{escape, RenderError};
@ -53,36 +53,6 @@ impl Render for str {
}
}
impl<'a> Render for &'a str {
#[inline]
fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
b.push_str(self);
Ok(())
}
#[inline]
fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> {
// escape string
escape::escape_to_buf(self, b);
Ok(())
}
}
impl Render for String {
#[inline]
fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
b.push_str(self);
Ok(())
}
#[inline]
fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> {
// escape string
escape::escape_to_buf(self, b);
Ok(())
}
}
impl Render for char {
#[inline]
fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
@ -103,7 +73,7 @@ impl Render for char {
}
}
impl<'a> Render for &'a Path {
impl Render for Path {
#[inline]
fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
// TODO: speed up on Windows using OsStrExt
@ -118,22 +88,6 @@ impl<'a> Render for &'a Path {
}
}
impl Render for PathBuf {
#[inline]
fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
b.push_str(&*self.to_string_lossy());
Ok(())
}
#[inline]
fn render_escaped(&self, b: &mut Buffer) -> Result<(), RenderError> {
// escape string
escape::escape_to_buf(&*self.to_string_lossy(), b);
Ok(())
}
}
// impl Render for [u8] {
// #[inline]
// fn render(&self, b: &mut Buffer) -> Result<(), RenderError> {
@ -266,4 +220,18 @@ mod tests {
assert_eq!(b.as_str(), "c&lt;&amp; ");
b.clear();
}
#[test]
fn deref_coercion() {
use std::rc::Rc;
use std::path::PathBuf;
let mut b = Buffer::new();
(&String::from("a")).render(&mut b).unwrap();
(&&PathBuf::from("b")).render(&mut b).unwrap();
(&Rc::new(4u32)).render_escaped(&mut b).unwrap();
(&Rc::new(2.3f32)).render_escaped(&mut b).unwrap();
assert_eq!(b.as_str(), "ab42.3");
}
}