diff options
Diffstat (limited to 'test/src/selector.rs')
-rw-r--r-- | test/src/selector.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/test/src/selector.rs b/test/src/selector.rs new file mode 100644 index 00000000..7b8dcb7e --- /dev/null +++ b/test/src/selector.rs @@ -0,0 +1,29 @@ +//! Select widgets of a user interface. +use crate::core::text; +use crate::core::widget; + +/// A selector describes a strategy to find a certain widget in a user interface. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum Selector { + /// Find the widget with the given [`widget::Id`]. + Id(widget::Id), + /// Find the widget containing the given [`text::Fragment`]. + Text(text::Fragment<'static>), +} + +impl From<widget::Id> for Selector { + fn from(id: widget::Id) -> Self { + Self::Id(id) + } +} + +impl From<&'static str> for Selector { + fn from(id: &'static str) -> Self { + Self::Id(widget::Id::new(id)) + } +} + +/// Creates [`Selector`] that finds the widget containing the given text fragment. +pub fn text(fragment: impl text::IntoFragment<'static>) -> Selector { + Selector::Text(fragment.into_fragment()) +} |