3 fn same(fmt: &'static str, p: &[Piece<'static>]) {
4 let parser = Parser::new(fmt, None, None, false, ParseMode::Format);
5 assert_eq!(parser.collect::<Vec<Piece<'static>>>(), p);
8 fn fmtdflt() -> FormatSpec<'static> {
13 precision: CountImplied,
23 let mut p = Parser::new(s, None, None, false, ParseMode::Format);
25 assert!(!p.errors.is_empty());
30 same("asdf", &[String("asdf")]);
31 same("a{{b", &[String("a"), String("{b")]);
32 same("a}}b", &[String("a"), String("}b")]);
33 same("a}}", &[String("a"), String("}")]);
34 same("}}", &[String("}")]);
35 same("\\}}", &[String("\\"), String("}")]);
61 same("{}", &[NextArgument(Argument { position: ArgumentImplicitlyIs(0), format: fmtdflt() })]);
64 fn format_position() {
65 same("{3}", &[NextArgument(Argument { position: ArgumentIs(3), format: fmtdflt() })]);
68 fn format_position_nothing_else() {
69 same("{3:}", &[NextArgument(Argument { position: ArgumentIs(3), format: fmtdflt() })]);
75 &[NextArgument(Argument {
76 position: ArgumentIs(3),
81 precision: CountImplied,
92 fn format_align_fill() {
95 &[NextArgument(Argument {
96 position: ArgumentIs(3),
101 precision: CountImplied,
103 precision_span: None,
112 &[NextArgument(Argument {
113 position: ArgumentIs(3),
118 precision: CountImplied,
120 precision_span: None,
129 &[NextArgument(Argument {
130 position: ArgumentIs(3),
135 precision: CountImplied,
137 precision_span: None,
140 ty_span: Some(InnerSpan::new(6, 10)),
149 &[NextArgument(Argument {
150 position: ArgumentImplicitlyIs(0),
155 precision: CountImplied,
157 precision_span: None,
166 &[NextArgument(Argument {
167 position: ArgumentImplicitlyIs(0),
172 precision: CountIs(10),
173 width: CountIsParam(10),
174 precision_span: None,
175 width_span: Some(InnerSpan::new(3, 6)),
183 &[NextArgument(Argument {
184 position: ArgumentImplicitlyIs(1),
189 precision: CountIsParam(0),
191 precision_span: Some(InnerSpan::new(3, 5)),
200 &[NextArgument(Argument {
201 position: ArgumentImplicitlyIs(0),
206 precision: CountIsParam(10),
208 precision_span: Some(InnerSpan::new(3, 7)),
217 &[NextArgument(Argument {
218 position: ArgumentImplicitlyIs(0),
223 precision: CountIsName("b", InnerSpan::new(6, 7)),
224 width: CountIsName("a", InnerSpan::new(4, 4)),
225 precision_span: None,
237 &[NextArgument(Argument {
238 position: ArgumentImplicitlyIs(0),
242 flags: (1 << FlagSignMinus as u32),
243 precision: CountImplied,
245 precision_span: None,
254 &[NextArgument(Argument {
255 position: ArgumentImplicitlyIs(0),
259 flags: (1 << FlagSignPlus as u32) | (1 << FlagAlternate as u32),
260 precision: CountImplied,
262 precision_span: None,
271 fn format_mixture() {
276 NextArgument(Argument {
277 position: ArgumentIs(3),
282 precision: CountImplied,
284 precision_span: None,