morethantext-web/src/morethantext/session.rs

63 lines
1.3 KiB
Rust

#[derive(Clone)]
pub struct Session {
data: Vec<String>,
error: Option<String>,
}
impl Session {
pub fn new() -> Self {
Self {
data: Vec::new(),
error: None,
}
}
pub fn push(&mut self, id: String) {
self.data.push(id);
}
pub fn append(&mut self, mut data: Vec<String>) {
self.data.append(&mut data);
}
pub fn get_data(&self) -> Vec<String> {
self.data.clone()
}
}
#[cfg(test)]
mod setup {
use super::*;
#[test]
fn add_item() {
let mut sess = Session::new();
let id = "frog".to_string();
sess.push(id.clone());
assert!(sess.data.contains(&id), "{} not in {:?}", id, sess.data);
}
#[test]
fn add_list() {
let mut sess = Session::new();
let mut data: Vec<String> = Vec::new();
data.push("fred".to_string());
data.push("barney".to_string());
sess.append(data.clone());
assert_eq!(sess.data, data);
}
}
#[cfg(test)]
mod data {
use super::*;
#[test]
fn show_data() {
let data = ["pne".to_string(), "two".to_string(), "three".to_string()];
let mut sess = Session::new();
sess.append(data.to_vec());
assert_eq!(sess.get_data(), data);
}
}