summaryrefslogtreecommitdiffstats
path: root/src/selectors/prop.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/selectors/prop.rs')
-rw-r--r--src/selectors/prop.rs81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/selectors/prop.rs b/src/selectors/prop.rs
deleted file mode 100644
index ae9da02..0000000
--- a/src/selectors/prop.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-use std::collections::HashMap;
-
-use super::*;
-
-use crate::khevent::KhEvent;
-
-pub struct PropFilter {
- terms: HashMap<String, Vec<String>>,
-}
-
-impl SelectFilter for PropFilter {
- fn add_term(&mut self, it: &mut dyn Iterator<Item = &&str>) {
- let term = it.next().unwrap().to_uppercase();
- let value = it.next().unwrap();
- self
- .terms
- .entry(term)
- .and_modify(|x| x.push(value.to_lowercase()))
- .or_insert_with(|| vec![value.to_lowercase()]);
- }
-
- fn is_not_empty(&self) -> bool {
- !self.terms.is_empty()
- }
-
- fn includes(&self, event: &KhEvent) -> bool {
- for (term, values) in &self.terms {
- for prop in event.get_properties_by_name(term) {
- let value = prop.get_value().to_lowercase();
- if values.iter().any(|x| value.contains(x)) {
- return true;
- }
- }
- }
- false
- }
-}
-
-impl Default for PropFilter {
- fn default() -> Self {
- PropFilter {
- terms: HashMap::new(),
- }
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::test::test_filter_event;
- use crate::testdata;
-
- #[test]
- fn test_prop() {
- let filtered = test_filter_event(
- &testdata::TEST_EVENT_MULTIDAY,
- None,
- &["prop", "TRANSP", "TRANSPARENT"],
- );
- assert_eq!(true, filtered);
- }
-
- #[test]
- fn test_prop_nocase() {
- let filtered = test_filter_event(
- &testdata::TEST_EVENT_MULTIDAY,
- None,
- &["prop", "tRaNsP", "tRaNsPaReNt"],
- );
- assert_eq!(true, filtered);
- }
-
- #[test]
- fn test_prop_negative() {
- let filtered = test_filter_event(
- &testdata::TEST_EVENT_MULTIDAY,
- None,
- &["prop", "TRANSP", "nonexistent term"],
- );
- assert_eq!(false, filtered);
- }
-}