4 fn same(fmt: &'static str, p: &[Piece<'static>]) {
5 let parser = Parser::new(fmt, None, None, false, ParseMode::Format);
6 assert_eq!(parser.collect::<Vec<Piece<'static>>>(), p);
9 fn fmtdflt() -> FormatSpec<'static> {
14 precision: CountImplied,
24 let mut p = Parser::new(s, None, None, false, ParseMode::Format);
26 assert!(!p.errors.is_empty());
31 same("asdf", &[String("asdf")]);
32 same("a{{b", &[String("a"), String("{b")]);
33 same("a}}b", &[String("a"), String("}b")]);
34 same("a}}", &[String("a"), String("}")]);
35 same("}}", &[String("}")]);
36 same("\\}}", &[String("\\"), String("}")]);
64 &[NextArgument(Argument {
65 position: ArgumentImplicitlyIs(0),
66 position_span: InnerSpan { start: 2, end: 2 },
72 fn format_position() {
75 &[NextArgument(Argument {
76 position: ArgumentIs(3),
77 position_span: InnerSpan { start: 2, end: 3 },
83 fn format_position_nothing_else() {
86 &[NextArgument(Argument {
87 position: ArgumentIs(3),
88 position_span: InnerSpan { start: 2, end: 3 },
97 &[NextArgument(Argument {
98 position: ArgumentNamed("name"),
99 position_span: InnerSpan { start: 2, end: 6 },
108 &[NextArgument(Argument {
109 position: ArgumentIs(3),
110 position_span: InnerSpan { start: 2, end: 3 },
115 precision: CountImplied,
117 precision_span: None,
126 fn format_align_fill() {
129 &[NextArgument(Argument {
130 position: ArgumentIs(3),
131 position_span: InnerSpan { start: 2, end: 3 },
136 precision: CountImplied,
138 precision_span: None,
147 &[NextArgument(Argument {
148 position: ArgumentIs(3),
149 position_span: InnerSpan { start: 2, end: 3 },
154 precision: CountImplied,
156 precision_span: None,
165 &[NextArgument(Argument {
166 position: ArgumentIs(3),
167 position_span: InnerSpan { start: 2, end: 3 },
172 precision: CountImplied,
174 precision_span: None,
177 ty_span: Some(InnerSpan::new(6, 10)),
186 &[NextArgument(Argument {
187 position: ArgumentImplicitlyIs(0),
188 position_span: InnerSpan { start: 2, end: 2 },
193 precision: CountImplied,
194 precision_span: None,
196 width_span: Some(InnerSpan { start: 3, end: 5 }),
204 &[NextArgument(Argument {
205 position: ArgumentImplicitlyIs(0),
206 position_span: InnerSpan { start: 2, end: 2 },
211 precision: CountIs(10),
212 precision_span: Some(InnerSpan { start: 6, end: 9 }),
213 width: CountIsParam(10),
214 width_span: Some(InnerSpan { start: 3, end: 6 }),
222 &[NextArgument(Argument {
223 position: ArgumentIs(1),
224 position_span: InnerSpan { start: 2, end: 3 },
229 precision: CountIs(10),
230 precision_span: Some(InnerSpan { start: 6, end: 9 }),
231 width: CountIsParam(0),
232 width_span: Some(InnerSpan { start: 4, end: 6 }),
240 &[NextArgument(Argument {
241 position: ArgumentImplicitlyIs(1),
242 position_span: InnerSpan { start: 2, end: 2 },
247 precision: CountIsStar(0),
248 precision_span: Some(InnerSpan { start: 3, end: 5 }),
258 &[NextArgument(Argument {
259 position: ArgumentImplicitlyIs(0),
260 position_span: InnerSpan { start: 2, end: 2 },
265 precision: CountIsParam(10),
267 precision_span: Some(InnerSpan::new(3, 7)),
276 &[NextArgument(Argument {
277 position: ArgumentImplicitlyIs(0),
278 position_span: InnerSpan { start: 2, end: 2 },
283 precision: CountIsName("b", InnerSpan { start: 6, end: 7 }),
284 precision_span: Some(InnerSpan { start: 5, end: 8 }),
285 width: CountIsName("a", InnerSpan { start: 3, end: 4 }),
286 width_span: Some(InnerSpan { start: 3, end: 5 }),
294 &[NextArgument(Argument {
295 position: ArgumentImplicitlyIs(0),
296 position_span: InnerSpan { start: 2, end: 2 },
301 precision: CountIs(4),
302 precision_span: Some(InnerSpan { start: 3, end: 5 }),
315 &[NextArgument(Argument {
316 position: ArgumentImplicitlyIs(0),
317 position_span: InnerSpan { start: 2, end: 2 },
321 flags: (1 << FlagSignMinus as u32),
322 precision: CountImplied,
324 precision_span: None,
333 &[NextArgument(Argument {
334 position: ArgumentImplicitlyIs(0),
335 position_span: InnerSpan { start: 2, end: 2 },
339 flags: (1 << FlagSignPlus as u32) | (1 << FlagAlternate as u32),
340 precision: CountImplied,
342 precision_span: None,
351 fn format_mixture() {
356 NextArgument(Argument {
357 position: ArgumentIs(3),
358 position_span: InnerSpan { start: 7, end: 8 },
363 precision: CountImplied,
365 precision_span: None,
376 fn format_whitespace() {
379 &[NextArgument(Argument {
380 position: ArgumentImplicitlyIs(0),
381 position_span: InnerSpan { start: 2, end: 3 },
387 &[NextArgument(Argument {
388 position: ArgumentImplicitlyIs(0),
389 position_span: InnerSpan { start: 2, end: 4 },