mirror of https://github.com/terhechte/postsack
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.3 KiB
Rust
74 lines
2.3 KiB
Rust
use eframe::egui;
|
|
use postsack::{
|
|
self,
|
|
database::query::{Field, Filter, ValueField},
|
|
importer::Importerlike,
|
|
model::{self, Engine},
|
|
types::Config,
|
|
types::FormatType,
|
|
};
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_engine_all() {
|
|
let config = create_database();
|
|
let mut engine = Engine::new(&config).expect("Expected Engine");
|
|
engine.start().expect("Expect to start engine");
|
|
engine.wait().expect("Expected working wait");
|
|
let segment = {
|
|
let segments =
|
|
model::segmentations::layouted_segments(&mut engine, default_rect()).unwrap();
|
|
assert_eq!(segments.len(), 5);
|
|
segments[0].clone()
|
|
};
|
|
|
|
// add another aggregation level
|
|
engine
|
|
.push(segment)
|
|
.expect("Expect being able to push another segment");
|
|
engine.wait().expect("Expected working wait");
|
|
|
|
// Validate
|
|
let segments =
|
|
model::segmentations::layouted_segments(&mut engine, default_rect()).unwrap();
|
|
assert_eq!(segments.len(), 2);
|
|
|
|
// Limit to only one egment
|
|
model::segmentations::set_segments_range(&mut engine, Some(0..=1));
|
|
// Validate
|
|
let segments =
|
|
model::segmentations::layouted_segments(&mut engine, default_rect()).unwrap();
|
|
assert_eq!(segments.len(), 1);
|
|
|
|
// Add a filter
|
|
let filter = Filter::Is(ValueField::bool(&Field::IsSend, true));
|
|
model::segmentations::set_filters(&mut engine, &vec![filter])
|
|
.expect("Expect setting filters");
|
|
engine.wait().expect("");
|
|
|
|
let segments =
|
|
model::segmentations::layouted_segments(&mut engine, default_rect()).unwrap();
|
|
assert_eq!(segments.len(), 0);
|
|
}
|
|
}
|
|
|
|
fn default_rect() -> egui::Rect {
|
|
egui::Rect::from_min_size(
|
|
egui::Pos2 { x: 50.0, y: 50.0 },
|
|
egui::Vec2 { x: 500.0, y: 500.0 },
|
|
)
|
|
}
|
|
|
|
fn create_database() -> Config {
|
|
let path = "tests/resources/mbox";
|
|
let config = postsack::types::Config::new(None, path, vec!["".to_string()], FormatType::Mbox)
|
|
.expect("Config");
|
|
let importer = postsack::importer::mbox_importer(config.clone());
|
|
let (_receiver, handle) = importer.import().unwrap();
|
|
handle.join().expect("").expect("");
|
|
config
|
|
}
|