diff --git a/src/morethantext/error.rs b/src/morethantext/error.rs new file mode 100644 index 0000000..5da4967 --- /dev/null +++ b/src/morethantext/error.rs @@ -0,0 +1,39 @@ +use std::{error::Error, fmt}; + +#[derive(Debug)] +pub struct MTTError { + detail: String, +} + +impl MTTError { + fn new(detail: &str) -> Self { + Self { + detail: detail.to_string(), + } + } +} + +impl fmt::Display for MTTError { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.detail) + } +} + +impl Error for MTTError {} + +#[cfg(test)] +mod errors { + use super::*; + + #[test] + fn new_error() { + let detail = "new error"; + let err = MTTError::new(detail); + assert!( + err.to_string() == detail, + "\n\nGot: {}\nWant: {}\n\n", + err.to_string(), + detail + ); + } +} diff --git a/src/morethantext/fieldtype.rs b/src/morethantext/fieldtype.rs index ec20675..f39846b 100644 --- a/src/morethantext/fieldtype.rs +++ b/src/morethantext/fieldtype.rs @@ -5,6 +5,12 @@ pub enum FieldType { StaticString(StaticString), } +impl FieldType { + pub fn new(ftype: &str) -> FieldType { + StaticString::new() + } +} + impl fmt::Display for FieldType { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { @@ -32,6 +38,17 @@ impl fmt::Display for StaticString { } } +#[cfg(test)] +mod fieldtypes { + use super::*; + + #[test] + fn create_fieldtype() { + let ftype = FieldType::new("StaticString"); + assert!(ftype.to_string() == "", "Should return an empty string."); + } +} + #[cfg(test)] mod staticstrings { use super::*; diff --git a/src/morethantext/mod.rs b/src/morethantext/mod.rs index 7f9936c..ce91f5d 100644 --- a/src/morethantext/mod.rs +++ b/src/morethantext/mod.rs @@ -98,8 +98,10 @@ impl Table { use async_std::sync::{Arc, RwLock}; use std::collections::HashMap; +pub mod error; mod fieldtype; +use error::MTTError; use fieldtype::{FieldType, StaticString}; #[derive(Clone)]