summaryrefslogtreecommitdiff
path: root/src/bindings.rs
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2023-08-12 10:36:10 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2023-08-12 10:36:10 +0100
commit1646f8cbc8191d7e7a68abb0a99090b55b069097 (patch)
treeca4aa2e555a7cb6604d637d6717efdf20b298af3 /src/bindings.rs
parentf6093a207f7f46eb547d90f2bb20113a9b009028 (diff)
downloadsubplot-1646f8cbc8191d7e7a68abb0a99090b55b069097.tar.gz
steps: Pass location information into scenarios and scenario steps for error messages
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'src/bindings.rs')
-rw-r--r--src/bindings.rs27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/bindings.rs b/src/bindings.rs
index 2738aa1..e94b64e 100644
--- a/src/bindings.rs
+++ b/src/bindings.rs
@@ -311,6 +311,7 @@ impl Eq for Binding {}
#[cfg(test)]
mod test_binding {
use super::Binding;
+ use crate::html::Location;
use crate::PartialStep;
use crate::ScenarioStep;
use crate::StepKind;
@@ -347,21 +348,21 @@ mod test_binding {
#[test]
fn does_not_match_with_wrong_kind() {
- let step = ScenarioStep::new(StepKind::Given, "given", "yo");
+ let step = ScenarioStep::new(StepKind::Given, "given", "yo", Location::Unknown);
let b = Binding::new(StepKind::When, "yo", false, HashMap::new()).unwrap();
assert!(b.match_with_step("", &step).is_none());
}
#[test]
fn does_not_match_with_wrong_text() {
- let step = ScenarioStep::new(StepKind::Given, "given", "foo");
+ let step = ScenarioStep::new(StepKind::Given, "given", "foo", Location::Unknown);
let b = Binding::new(StepKind::Given, "bar", false, HashMap::new()).unwrap();
assert!(b.match_with_step("", &step).is_none());
}
#[test]
fn match_with_fixed_pattern() {
- let step = ScenarioStep::new(StepKind::Given, "given", "foo");
+ let step = ScenarioStep::new(StepKind::Given, "given", "foo", Location::Unknown);
let b = Binding::new(StepKind::Given, "foo", false, HashMap::new()).unwrap();
let m = b.match_with_step("", &step).unwrap();
assert_eq!(m.kind(), StepKind::Given);
@@ -373,7 +374,12 @@ mod test_binding {
#[test]
fn match_with_regex() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon, I am");
+ let step = ScenarioStep::new(
+ StepKind::Given,
+ "given",
+ "I am Tomjon, I am",
+ Location::Unknown,
+ );
let b = Binding::new(
StepKind::Given,
r"I am (?P<who>\S+), I am",
@@ -392,7 +398,7 @@ mod test_binding {
#[test]
fn case_sensitive_mismatch() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let b = Binding::new(StepKind::Given, r"i am tomjon", false, HashMap::new()).unwrap();
assert!(b.match_with_step("", &step).is_some());
let b = Binding::new(StepKind::Given, r"i am tomjon", true, HashMap::new()).unwrap();
@@ -583,6 +589,7 @@ fn from_hashmap(parsed: &ParsedBinding) -> Result<Binding, SubplotError> {
#[cfg(test)]
mod test_bindings {
+ use crate::html::Location;
use crate::Binding;
use crate::Bindings;
use crate::PartialStep;
@@ -686,7 +693,7 @@ mod test_bindings {
#[test]
fn does_not_find_match_for_unmatching_kind() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let binding = Binding::new(StepKind::When, r"I am Tomjon", false, HashMap::new()).unwrap();
let mut bindings = Bindings::new();
bindings.add(binding);
@@ -698,7 +705,7 @@ mod test_bindings {
#[test]
fn does_not_find_match_for_unmatching_pattern() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let binding = Binding::new(
StepKind::Given,
r"I am Tomjon of Lancre",
@@ -716,7 +723,7 @@ mod test_bindings {
#[test]
fn two_matching_bindings() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let mut bindings = Bindings::default();
bindings.add(Binding::new(StepKind::Given, r"I am Tomjon", false, HashMap::new()).unwrap());
bindings.add(
@@ -737,7 +744,7 @@ mod test_bindings {
#[test]
fn finds_match_for_fixed_string_pattern() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let binding = Binding::new(StepKind::Given, r"I am Tomjon", false, HashMap::new()).unwrap();
let mut bindings = Bindings::new();
bindings.add(binding);
@@ -754,7 +761,7 @@ mod test_bindings {
#[test]
fn finds_match_for_regexp_pattern() {
- let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon");
+ let step = ScenarioStep::new(StepKind::Given, "given", "I am Tomjon", Location::Unknown);
let binding = Binding::new(
StepKind::Given,
r"I am (?P<name>\S+)",