Use mouse::Button::Left by default in ice tests
This commit is contained in:
parent
bdcaadbe00
commit
c8ccba5535
2 changed files with 26 additions and 10 deletions
|
|
@ -2,11 +2,11 @@ viewport: 512x768
|
||||||
mode: impatient
|
mode: impatient
|
||||||
preset: Empty
|
preset: Empty
|
||||||
-----
|
-----
|
||||||
click left at "What needs to be done?"
|
click at "What needs to be done?"
|
||||||
type "Create the universe"
|
type "Create the universe"
|
||||||
type enter
|
type enter
|
||||||
type "Make an apple pie"
|
type "Make an apple pie"
|
||||||
type enter
|
type enter
|
||||||
click left at "Create the universe"
|
click at "Create the universe"
|
||||||
click left at "Make an apple pie"
|
click at "Make an apple pie"
|
||||||
expect "0 tasks left"
|
expect "0 tasks left"
|
||||||
|
|
|
||||||
|
|
@ -329,16 +329,22 @@ mod format {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
pub fn button_at(button: mouse::Button, at: Option<&Target>) -> String {
|
pub fn button_at(button: mouse::Button, at: Option<&Target>) -> String {
|
||||||
|
let button = self::button(button);
|
||||||
|
|
||||||
if let Some(at) = at {
|
if let Some(at) = at {
|
||||||
format!("{} at {}", self::button(button), at)
|
if button.is_empty() {
|
||||||
|
format!("at {}", at)
|
||||||
|
} else {
|
||||||
|
format!("{} at {}", button, at)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self::button(button).to_owned()
|
button.to_owned()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn button(button: mouse::Button) -> &'static str {
|
pub fn button(button: mouse::Button) -> &'static str {
|
||||||
match button {
|
match button {
|
||||||
mouse::Button::Left => "left",
|
mouse::Button::Left => "",
|
||||||
mouse::Button::Right => "right",
|
mouse::Button::Right => "right",
|
||||||
mouse::Button::Middle => "middle",
|
mouse::Button::Middle => "middle",
|
||||||
mouse::Button::Back => "back",
|
mouse::Button::Back => "back",
|
||||||
|
|
@ -388,7 +394,8 @@ mod parser {
|
||||||
use nom::branch::alt;
|
use nom::branch::alt;
|
||||||
use nom::bytes::complete::tag;
|
use nom::bytes::complete::tag;
|
||||||
use nom::character::complete::{char, multispace0, satisfy};
|
use nom::character::complete::{char, multispace0, satisfy};
|
||||||
use nom::combinator::{cut, map, opt, recognize};
|
use nom::combinator::{cut, map, opt, recognize, success};
|
||||||
|
use nom::error::ParseError;
|
||||||
use nom::multi::many0;
|
use nom::multi::many0;
|
||||||
use nom::number::float;
|
use nom::number::float;
|
||||||
use nom::sequence::{delimited, preceded, separated_pair};
|
use nom::sequence::{delimited, preceded, separated_pair};
|
||||||
|
|
@ -447,7 +454,7 @@ mod parser {
|
||||||
|
|
||||||
fn target(input: &str) -> IResult<&str, Target> {
|
fn target(input: &str) -> IResult<&str, Target> {
|
||||||
preceded(
|
preceded(
|
||||||
tag(" at "),
|
whitespace(tag("at ")),
|
||||||
cut(alt((string.map(Target::Text), point.map(Target::Point)))),
|
cut(alt((string.map(Target::Text), point.map(Target::Point)))),
|
||||||
)
|
)
|
||||||
.parse(input)
|
.parse(input)
|
||||||
|
|
@ -455,8 +462,8 @@ mod parser {
|
||||||
|
|
||||||
fn mouse_button(input: &str) -> IResult<&str, mouse::Button> {
|
fn mouse_button(input: &str) -> IResult<&str, mouse::Button> {
|
||||||
alt((
|
alt((
|
||||||
tag("left").map(|_| mouse::Button::Left),
|
|
||||||
tag("right").map(|_| mouse::Button::Right),
|
tag("right").map(|_| mouse::Button::Right),
|
||||||
|
success(mouse::Button::Left),
|
||||||
))
|
))
|
||||||
.parse(input)
|
.parse(input)
|
||||||
}
|
}
|
||||||
|
|
@ -497,7 +504,7 @@ mod parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn point(input: &str) -> IResult<&str, Point> {
|
fn point(input: &str) -> IResult<&str, Point> {
|
||||||
let comma = (multispace0, char(','), multispace0);
|
let comma = whitespace(char(','));
|
||||||
|
|
||||||
map(
|
map(
|
||||||
delimited(
|
delimited(
|
||||||
|
|
@ -509,4 +516,13 @@ mod parser {
|
||||||
)
|
)
|
||||||
.parse(input)
|
.parse(input)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn whitespace<'a, O, E: ParseError<&'a str>, F>(
|
||||||
|
inner: F,
|
||||||
|
) -> impl Parser<&'a str, Output = O, Error = E>
|
||||||
|
where
|
||||||
|
F: Parser<&'a str, Output = O, Error = E>,
|
||||||
|
{
|
||||||
|
delimited(multispace0, inner, multispace0)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue