summaryrefslogtreecommitdiffstats
path: root/test/src/selector.rs
diff options
context:
space:
mode:
Diffstat (limited to 'test/src/selector.rs')
-rw-r--r--test/src/selector.rs29
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())
+}