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("}")]);
61 fn invalid_position() {
62 musterr("{18446744073709551616}");
67 musterr("{:18446744073709551616}");
71 fn invalid_precision() {
72 musterr("{:.18446744073709551616}");
79 &[NextArgument(Box::new(Argument {
80 position: ArgumentImplicitlyIs(0),
81 position_span: InnerSpan { start: 2, end: 2 },
87 fn format_position() {
90 &[NextArgument(Box::new(Argument {
91 position: ArgumentIs(3),
92 position_span: InnerSpan { start: 2, end: 3 },
98 fn format_position_nothing_else() {
101 &[NextArgument(Box::new(Argument {
102 position: ArgumentIs(3),
103 position_span: InnerSpan { start: 2, end: 3 },
112 &[NextArgument(Box::new(Argument {
113 position: ArgumentNamed("name"),
114 position_span: InnerSpan { start: 2, end: 6 },
123 &[NextArgument(Box::new(Argument {
124 position: ArgumentIs(3),
125 position_span: InnerSpan { start: 2, end: 3 },
130 precision: CountImplied,
132 precision_span: None,
141 fn format_align_fill() {
144 &[NextArgument(Box::new(Argument {
145 position: ArgumentIs(3),
146 position_span: InnerSpan { start: 2, end: 3 },
151 precision: CountImplied,
153 precision_span: None,
162 &[NextArgument(Box::new(Argument {
163 position: ArgumentIs(3),
164 position_span: InnerSpan { start: 2, end: 3 },
169 precision: CountImplied,
171 precision_span: None,
180 &[NextArgument(Box::new(Argument {
181 position: ArgumentIs(3),
182 position_span: InnerSpan { start: 2, end: 3 },
187 precision: CountImplied,
189 precision_span: None,
192 ty_span: Some(InnerSpan::new(6, 10)),
201 &[NextArgument(Box::new(Argument {
202 position: ArgumentImplicitlyIs(0),
203 position_span: InnerSpan { start: 2, end: 2 },
208 precision: CountImplied,
209 precision_span: None,
211 width_span: Some(InnerSpan { start: 3, end: 5 }),
219 &[NextArgument(Box::new(Argument {
220 position: ArgumentImplicitlyIs(0),
221 position_span: InnerSpan { start: 2, end: 2 },
226 precision: CountIs(10),
227 precision_span: Some(InnerSpan { start: 6, end: 9 }),
228 width: CountIsParam(10),
229 width_span: Some(InnerSpan { start: 3, end: 6 }),
237 &[NextArgument(Box::new(Argument {
238 position: ArgumentIs(1),
239 position_span: InnerSpan { start: 2, end: 3 },
244 precision: CountIs(10),
245 precision_span: Some(InnerSpan { start: 6, end: 9 }),
246 width: CountIsParam(0),
247 width_span: Some(InnerSpan { start: 4, end: 6 }),
255 &[NextArgument(Box::new(Argument {
256 position: ArgumentImplicitlyIs(1),
257 position_span: InnerSpan { start: 2, end: 2 },
262 precision: CountIsStar(0),
263 precision_span: Some(InnerSpan { start: 3, end: 5 }),
273 &[NextArgument(Box::new(Argument {
274 position: ArgumentImplicitlyIs(0),
275 position_span: InnerSpan { start: 2, end: 2 },
280 precision: CountIsParam(10),
282 precision_span: Some(InnerSpan::new(3, 7)),
291 &[NextArgument(Box::new(Argument {
292 position: ArgumentImplicitlyIs(0),
293 position_span: InnerSpan { start: 2, end: 2 },
298 precision: CountIsName("b", InnerSpan { start: 6, end: 7 }),
299 precision_span: Some(InnerSpan { start: 5, end: 8 }),
300 width: CountIsName("a", InnerSpan { start: 3, end: 4 }),
301 width_span: Some(InnerSpan { start: 3, end: 5 }),
309 &[NextArgument(Box::new(Argument {
310 position: ArgumentImplicitlyIs(0),
311 position_span: InnerSpan { start: 2, end: 2 },
316 precision: CountIs(4),
317 precision_span: Some(InnerSpan { start: 3, end: 5 }),
330 &[NextArgument(Box::new(Argument {
331 position: ArgumentImplicitlyIs(0),
332 position_span: InnerSpan { start: 2, end: 2 },
336 flags: (1 << FlagSignMinus as u32),
337 precision: CountImplied,
339 precision_span: None,
348 &[NextArgument(Box::new(Argument {
349 position: ArgumentImplicitlyIs(0),
350 position_span: InnerSpan { start: 2, end: 2 },
354 flags: (1 << FlagSignPlus as u32) | (1 << FlagAlternate as u32),
355 precision: CountImplied,
357 precision_span: None,
366 fn format_mixture() {
371 NextArgument(Box::new(Argument {
372 position: ArgumentIs(3),
373 position_span: InnerSpan { start: 7, end: 8 },
378 precision: CountImplied,
380 precision_span: None,
391 fn format_whitespace() {
394 &[NextArgument(Box::new(Argument {
395 position: ArgumentImplicitlyIs(0),
396 position_span: InnerSpan { start: 2, end: 3 },
402 &[NextArgument(Box::new(Argument {
403 position: ArgumentImplicitlyIs(0),
404 position_span: InnerSpan { start: 2, end: 4 },