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("}")]);
63 &[NextArgument(Argument {
64 position: ArgumentImplicitlyIs(0),
65 position_span: InnerSpan { start: 2, end: 2 },
71 fn format_position() {
74 &[NextArgument(Argument {
75 position: ArgumentIs(3),
76 position_span: InnerSpan { start: 2, end: 3 },
82 fn format_position_nothing_else() {
85 &[NextArgument(Argument {
86 position: ArgumentIs(3),
87 position_span: InnerSpan { start: 2, end: 3 },
96 &[NextArgument(Argument {
97 position: ArgumentNamed("name"),
98 position_span: InnerSpan { start: 2, end: 6 },
107 &[NextArgument(Argument {
108 position: ArgumentIs(3),
109 position_span: InnerSpan { start: 2, end: 3 },
114 precision: CountImplied,
116 precision_span: None,
125 fn format_align_fill() {
128 &[NextArgument(Argument {
129 position: ArgumentIs(3),
130 position_span: InnerSpan { start: 2, end: 3 },
135 precision: CountImplied,
137 precision_span: None,
146 &[NextArgument(Argument {
147 position: ArgumentIs(3),
148 position_span: InnerSpan { start: 2, end: 3 },
153 precision: CountImplied,
155 precision_span: None,
164 &[NextArgument(Argument {
165 position: ArgumentIs(3),
166 position_span: InnerSpan { start: 2, end: 3 },
171 precision: CountImplied,
173 precision_span: None,
176 ty_span: Some(InnerSpan::new(6, 10)),
185 &[NextArgument(Argument {
186 position: ArgumentImplicitlyIs(0),
187 position_span: InnerSpan { start: 2, end: 2 },
192 precision: CountImplied,
194 precision_span: None,
203 &[NextArgument(Argument {
204 position: ArgumentImplicitlyIs(0),
205 position_span: InnerSpan { start: 2, end: 2 },
210 precision: CountIs(10),
211 width: CountIsParam(10),
212 precision_span: None,
213 width_span: Some(InnerSpan::new(3, 6)),
221 &[NextArgument(Argument {
222 position: ArgumentIs(1),
223 position_span: InnerSpan { start: 2, end: 3 },
228 precision: CountIs(10),
229 width: CountIsParam(0),
230 precision_span: None,
231 width_span: Some(InnerSpan::new(4, 6)),
239 &[NextArgument(Argument {
240 position: ArgumentImplicitlyIs(1),
241 position_span: InnerSpan { start: 2, end: 2 },
246 precision: CountIsParam(0),
248 precision_span: Some(InnerSpan::new(3, 5)),
257 &[NextArgument(Argument {
258 position: ArgumentImplicitlyIs(0),
259 position_span: InnerSpan { start: 2, end: 2 },
264 precision: CountIsParam(10),
266 precision_span: Some(InnerSpan::new(3, 7)),
275 &[NextArgument(Argument {
276 position: ArgumentImplicitlyIs(0),
277 position_span: InnerSpan { start: 2, end: 2 },
282 precision: CountIsName("b", InnerSpan::new(6, 7)),
283 width: CountIsName("a", InnerSpan::new(4, 4)),
284 precision_span: None,
296 &[NextArgument(Argument {
297 position: ArgumentImplicitlyIs(0),
298 position_span: InnerSpan { start: 2, end: 2 },
302 flags: (1 << FlagSignMinus as u32),
303 precision: CountImplied,
305 precision_span: None,
314 &[NextArgument(Argument {
315 position: ArgumentImplicitlyIs(0),
316 position_span: InnerSpan { start: 2, end: 2 },
320 flags: (1 << FlagSignPlus as u32) | (1 << FlagAlternate as u32),
321 precision: CountImplied,
323 precision_span: None,
332 fn format_mixture() {
337 NextArgument(Argument {
338 position: ArgumentIs(3),
339 position_span: InnerSpan { start: 7, end: 8 },
344 precision: CountImplied,
346 precision_span: None,
357 fn format_whitespace() {
360 &[NextArgument(Argument {
361 position: ArgumentImplicitlyIs(0),
362 position_span: InnerSpan { start: 2, end: 3 },
368 &[NextArgument(Argument {
369 position: ArgumentImplicitlyIs(0),
370 position_span: InnerSpan { start: 2, end: 4 },