Skip to content

Commit 4987fd1

Browse files
committed
Convert newtype_enum and struct_enum tests into modules
Separate testing each variant kind of enum (unit, newtype, tuple, struct) results in more specific information if that checks fail (review this commit with "ignore whitespace changes" option on)
1 parent 8bfe0d0 commit 4987fd1

File tree

1 file changed

+148
-131
lines changed

1 file changed

+148
-131
lines changed

test_suite/tests/test_enum_internally_tagged.rs

Lines changed: 148 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -187,90 +187,103 @@ fn newtype_struct() {
187187
);
188188
}
189189

190-
#[test]
191-
fn newtype_enum() {
192-
assert_tokens(
193-
&InternallyTagged::NewtypeEnum(Enum::Unit),
194-
&[
195-
Token::Map { len: Some(2) },
196-
Token::Str("tag"),
197-
Token::Str("NewtypeEnum"),
198-
Token::Str("Unit"),
199-
Token::Unit,
200-
Token::MapEnd,
201-
],
202-
);
190+
mod newtype_enum {
191+
use super::*;
203192

204-
assert_tokens(
205-
&InternallyTagged::NewtypeEnum(Enum::Newtype(1)),
206-
&[
207-
Token::Map { len: Some(2) },
208-
Token::Str("tag"),
209-
Token::Str("NewtypeEnum"),
210-
Token::Str("Newtype"),
211-
Token::U8(1),
212-
Token::MapEnd,
213-
],
214-
);
193+
#[test]
194+
fn unit() {
195+
assert_tokens(
196+
&InternallyTagged::NewtypeEnum(Enum::Unit),
197+
&[
198+
Token::Map { len: Some(2) },
199+
Token::Str("tag"),
200+
Token::Str("NewtypeEnum"),
201+
Token::Str("Unit"),
202+
Token::Unit,
203+
Token::MapEnd,
204+
],
205+
);
206+
}
215207

216-
// Reaches crate::private::de::content::VariantDeserializer::tuple_variant
217-
// Content::Seq case
218-
// via ContentDeserializer::deserialize_enum
219-
assert_tokens(
220-
&InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)),
221-
&[
222-
Token::Map { len: Some(2) },
223-
Token::Str("tag"),
224-
Token::Str("NewtypeEnum"),
225-
Token::Str("Tuple"),
226-
Token::TupleStruct {
227-
name: "Tuple",
228-
len: 2,
229-
},
230-
Token::U8(1),
231-
Token::U8(1),
232-
Token::TupleStructEnd,
233-
Token::MapEnd,
234-
],
235-
);
208+
#[test]
209+
fn newtype() {
210+
assert_tokens(
211+
&InternallyTagged::NewtypeEnum(Enum::Newtype(1)),
212+
&[
213+
Token::Map { len: Some(2) },
214+
Token::Str("tag"),
215+
Token::Str("NewtypeEnum"),
216+
Token::Str("Newtype"),
217+
Token::U8(1),
218+
Token::MapEnd,
219+
],
220+
);
221+
}
236222

237-
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
238-
// Content::Map case
239-
// via ContentDeserializer::deserialize_enum
240-
assert_tokens(
241-
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
242-
&[
243-
Token::Map { len: Some(2) },
244-
Token::Str("tag"),
245-
Token::Str("NewtypeEnum"),
246-
Token::Str("Struct"),
247-
Token::Struct {
248-
name: "Struct",
249-
len: 1,
250-
},
251-
Token::Str("f"),
252-
Token::U8(1),
253-
Token::StructEnd,
254-
Token::MapEnd,
255-
],
256-
);
223+
#[test]
224+
fn tuple() {
225+
// Reaches crate::private::de::content::VariantDeserializer::tuple_variant
226+
// Content::Seq case
227+
// via ContentDeserializer::deserialize_enum
228+
assert_tokens(
229+
&InternallyTagged::NewtypeEnum(Enum::Tuple(1, 1)),
230+
&[
231+
Token::Map { len: Some(2) },
232+
Token::Str("tag"),
233+
Token::Str("NewtypeEnum"),
234+
Token::Str("Tuple"),
235+
Token::TupleStruct {
236+
name: "Tuple",
237+
len: 2,
238+
},
239+
Token::U8(1),
240+
Token::U8(1),
241+
Token::TupleStructEnd,
242+
Token::MapEnd,
243+
],
244+
);
245+
}
257246

258-
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
259-
// Content::Seq case
260-
// via ContentDeserializer::deserialize_enum
261-
assert_de_tokens(
262-
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
263-
&[
264-
Token::Map { len: Some(2) },
265-
Token::Str("tag"),
266-
Token::Str("NewtypeEnum"),
267-
Token::Str("Struct"),
268-
Token::Seq { len: Some(1) },
269-
Token::U8(1), // f
270-
Token::SeqEnd,
271-
Token::MapEnd,
272-
],
273-
);
247+
#[test]
248+
fn struct_() {
249+
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
250+
// Content::Map case
251+
// via ContentDeserializer::deserialize_enum
252+
assert_tokens(
253+
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
254+
&[
255+
Token::Map { len: Some(2) },
256+
Token::Str("tag"),
257+
Token::Str("NewtypeEnum"),
258+
Token::Str("Struct"),
259+
Token::Struct {
260+
name: "Struct",
261+
len: 1,
262+
},
263+
Token::Str("f"),
264+
Token::U8(1),
265+
Token::StructEnd,
266+
Token::MapEnd,
267+
],
268+
);
269+
270+
// Reaches crate::private::de::content::VariantDeserializer::struct_variant
271+
// Content::Seq case
272+
// via ContentDeserializer::deserialize_enum
273+
assert_de_tokens(
274+
&InternallyTagged::NewtypeEnum(Enum::Struct { f: 1 }),
275+
&[
276+
Token::Map { len: Some(2) },
277+
Token::Str("tag"),
278+
Token::Str("NewtypeEnum"),
279+
Token::Str("Struct"),
280+
Token::Seq { len: Some(1) },
281+
Token::U8(1), // f
282+
Token::SeqEnd,
283+
Token::MapEnd,
284+
],
285+
);
286+
}
274287
}
275288

276289
#[test]
@@ -301,61 +314,65 @@ fn struct_() {
301314
);
302315
}
303316

304-
#[test]
305-
fn struct_enum() {
306-
assert_de_tokens(
307-
&Enum::Unit,
308-
&[
309-
Token::Enum { name: "Enum" },
310-
Token::BorrowedStr("Unit"),
311-
Token::Unit,
312-
],
313-
);
317+
mod struct_enum {
318+
use super::*;
314319

315-
let value = InternallyTagged::StructEnum { enum_: Enum::Unit };
320+
#[test]
321+
fn unit() {
322+
assert_de_tokens(
323+
&Enum::Unit,
324+
&[
325+
Token::Enum { name: "Enum" },
326+
Token::BorrowedStr("Unit"),
327+
Token::Unit,
328+
],
329+
);
316330

317-
assert_de_tokens(
318-
&value,
319-
&[
320-
Token::Struct {
321-
name: "InternallyTagged",
322-
len: 2,
323-
},
324-
Token::Str("tag"),
325-
Token::Str("StructEnum"),
326-
Token::Str("enum_"),
327-
Token::Enum { name: "Enum" },
328-
Token::BorrowedStr("Unit"),
329-
Token::Unit,
330-
Token::StructEnd,
331-
],
332-
);
331+
let value = InternallyTagged::StructEnum { enum_: Enum::Unit };
333332

334-
assert_de_tokens(
335-
&value,
336-
&[
337-
Token::Map { len: Some(2) },
338-
Token::Str("tag"),
339-
Token::Str("StructEnum"),
340-
Token::Str("enum_"),
341-
Token::Enum { name: "Enum" },
342-
Token::BorrowedStr("Unit"),
343-
Token::Unit,
344-
Token::MapEnd,
345-
],
346-
);
333+
assert_de_tokens(
334+
&value,
335+
&[
336+
Token::Struct {
337+
name: "InternallyTagged",
338+
len: 2,
339+
},
340+
Token::Str("tag"),
341+
Token::Str("StructEnum"),
342+
Token::Str("enum_"),
343+
Token::Enum { name: "Enum" },
344+
Token::BorrowedStr("Unit"),
345+
Token::Unit,
346+
Token::StructEnd,
347+
],
348+
);
347349

348-
assert_de_tokens(
349-
&value,
350-
&[
351-
Token::Seq { len: Some(2) },
352-
Token::Str("StructEnum"), // tag
353-
Token::Enum { name: "Enum" }, // enum_
354-
Token::BorrowedStr("Unit"),
355-
Token::Unit,
356-
Token::SeqEnd,
357-
],
358-
);
350+
assert_de_tokens(
351+
&value,
352+
&[
353+
Token::Map { len: Some(2) },
354+
Token::Str("tag"),
355+
Token::Str("StructEnum"),
356+
Token::Str("enum_"),
357+
Token::Enum { name: "Enum" },
358+
Token::BorrowedStr("Unit"),
359+
Token::Unit,
360+
Token::MapEnd,
361+
],
362+
);
363+
364+
assert_de_tokens(
365+
&value,
366+
&[
367+
Token::Seq { len: Some(2) },
368+
Token::Str("StructEnum"), // tag
369+
Token::Enum { name: "Enum" }, // enum_
370+
Token::BorrowedStr("Unit"),
371+
Token::Unit,
372+
Token::SeqEnd,
373+
],
374+
);
375+
}
359376
}
360377

361378
#[test]

0 commit comments

Comments
 (0)