Skip to content

Commit 7771f81

Browse files
committed
Refine derive-tests
1 parent 9ff447d commit 7771f81

File tree

21 files changed

+120
-102
lines changed

21 files changed

+120
-102
lines changed

tests/derive-tests.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,17 @@ mod is_variant {
9999
pub fn pass() {
100100
tryexpand::expand(["tests/derive-tests/is_variant/pass/**/*.rs"]).and_check();
101101
}
102+
103+
// There should be no failures for this derive macro;
102104
}
103105

104106
mod variant_discriminant {
105107
#[test]
106108
pub fn pass() {
107109
tryexpand::expand(["tests/derive-tests/variant_discriminant/pass/**/*.rs"]).and_check();
108110
}
111+
112+
// There should be no failures for this derive macro;
109113
}
110114

111115
mod encapsulate {
@@ -114,12 +118,9 @@ mod encapsulate {
114118
tryexpand::expand(["tests/derive-tests/encapsulate/pass/**/*.rs"]).and_check();
115119
}
116120

117-
#[test]
118-
pub fn fail() {
119-
// the failures are already covered by the tests of the individual
120-
// derives that this umbrella derive delegates to.
121-
//
122-
// As such we only have to make sure in `pass()` that
123-
// it does actually derive what it says on the tin.
124-
}
121+
// Failures are already covered by the tests of the individual
122+
// derives that this umbrella derive delegates to.
123+
//
124+
// As such we only have to make sure in `pass()` that
125+
// it does actually derive what it says on the tin.
125126
}

tests/derive-tests/as_variant/pass/enum/mixed_variants.out.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub enum Enum {
2121
OneTupleField(VariantA),
2222
OneStructField { variant: VariantB },
2323
#[enumcapsulate(exclude)]
24-
OneExcludedTupleField(VariantA),
24+
Excluded(VariantA, VariantB),
2525
}
2626
impl ::enumcapsulate::AsVariant<VariantA> for Enum
2727
where

tests/derive-tests/as_variant/pass/enum/mixed_variants.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub enum Enum {
1414
variant: VariantB,
1515
},
1616
#[enumcapsulate(exclude)]
17-
OneExcludedTupleField(VariantA),
17+
Excluded(VariantA, VariantB),
1818
}
1919

2020
fn main() {

tests/derive-tests/as_variant_mut/pass/enum/mixed_variants.out.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ pub enum Enum {
99
ZeroStructFields {},
1010
OneTupleField(VariantA),
1111
OneStructField { variant: VariantB },
12+
#[enumcapsulate(exclude)]
1213
TwoTupleFields(i32, u32),
14+
#[enumcapsulate(exclude)]
1315
TwoStructFields { a: i32, b: u32 },
1416
#[enumcapsulate(exclude)]
15-
Excluded(bool),
16-
#[enumcapsulate(include(field = 1))]
17+
Excluded(VariantA, VariantB),
18+
#[enumcapsulate(field(index = 1))]
1719
IncludedTuple(i8, VariantC),
18-
#[enumcapsulate(include(field = "variant"))]
20+
#[enumcapsulate(field(name = "variant"))]
1921
IncludedStruct { value: u8, variant: VariantD },
2022
}
2123
impl ::enumcapsulate::AsVariantMut<VariantA> for Enum {

tests/derive-tests/as_variant_mut/pass/enum/mixed_variants.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,25 @@ pub enum Enum {
1414
OneStructField {
1515
variant: VariantB,
1616
},
17+
#[enumcapsulate(exclude)]
1718
TwoTupleFields(i32, u32),
19+
#[enumcapsulate(exclude)]
1820
TwoStructFields {
1921
a: i32,
2022
b: u32,
2123
},
2224
#[enumcapsulate(exclude)]
23-
Excluded(bool),
24-
#[enumcapsulate(include(field = 1))]
25+
Excluded(VariantA, VariantB),
26+
#[enumcapsulate(field(index = 1))]
2527
IncludedTuple(i8, VariantC),
26-
#[enumcapsulate(include(field = "variant"))]
28+
#[enumcapsulate(field(name = "variant"))]
2729
IncludedStruct {
2830
value: u8,
2931
variant: VariantD,
3032
},
3133
}
3234

3335
fn main() {
34-
35-
3636
let mut subject = Enum::Unit;
3737

3838
{

tests/derive-tests/as_variant_ref/pass/enum/mixed_variants.out.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ pub enum Enum {
3737
ZeroStructFields {},
3838
OneTupleField(VariantA),
3939
OneStructField { variant: VariantB },
40+
#[enumcapsulate(exclude)]
4041
TwoTupleFields(i32, u32),
42+
#[enumcapsulate(exclude)]
4143
TwoStructFields { a: i32, b: u32 },
4244
#[enumcapsulate(exclude)]
43-
Excluded(bool),
44-
#[enumcapsulate(include(field = 1))]
45+
Excluded(VariantA, VariantB),
46+
#[enumcapsulate(field(index = 1))]
4547
IncludedTuple(i8, VariantC),
46-
#[enumcapsulate(include(field = "variant"))]
48+
#[enumcapsulate(field(name = "variant"))]
4749
IncludedStruct { value: u8, variant: VariantD },
4850
}
4951
impl ::enumcapsulate::AsVariantRef<VariantA> for Enum {

tests/derive-tests/as_variant_ref/pass/enum/mixed_variants.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,18 @@ pub enum Enum {
1818
OneStructField {
1919
variant: VariantB,
2020
},
21+
#[enumcapsulate(exclude)]
2122
TwoTupleFields(i32, u32),
23+
#[enumcapsulate(exclude)]
2224
TwoStructFields {
2325
a: i32,
2426
b: u32,
2527
},
2628
#[enumcapsulate(exclude)]
27-
Excluded(bool),
28-
#[enumcapsulate(include(field = 1))]
29+
Excluded(VariantA, VariantB),
30+
#[enumcapsulate(field(index = 1))]
2931
IncludedTuple(i8, VariantC),
30-
#[enumcapsulate(include(field = "variant"))]
32+
#[enumcapsulate(field(name = "variant"))]
3133
IncludedStruct {
3234
value: u8,
3335
variant: VariantD,

tests/derive-tests/encapsulate/pass/enum/tuple_variants/one_field.out.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
use enumcapsulate::{AsVariant, AsVariantMut, AsVariantRef, Encapsulate, IntoVariant};
1+
use enumcapsulate::{
2+
AsVariant, AsVariantMut, AsVariantRef, Encapsulate, FromVariant, IntoVariant,
3+
};
24
pub struct VariantA;
35
#[automatically_derived]
46
impl ::core::clone::Clone for VariantA {
@@ -15,11 +17,9 @@ impl ::core::clone::Clone for VariantB {
1517
VariantB
1618
}
1719
}
18-
pub struct VariantC;
19-
pub struct VariantD;
2020
pub enum Enum {
2121
VariantA(VariantA),
22-
VariantB(VariantB),
22+
VariantB { b: VariantB },
2323
}
2424
impl ::core::convert::From<VariantA> for Enum {
2525
fn from(inner: VariantA) -> Self {
@@ -28,7 +28,7 @@ impl ::core::convert::From<VariantA> for Enum {
2828
}
2929
impl ::core::convert::From<VariantB> for Enum {
3030
fn from(inner: VariantB) -> Self {
31-
Self::VariantB(inner)
31+
Self::VariantB { b: inner }
3232
}
3333
}
3434
impl ::core::convert::TryFrom<Enum> for VariantA {
@@ -44,7 +44,7 @@ impl ::core::convert::TryFrom<Enum> for VariantB {
4444
type Error = Enum;
4545
fn try_from(outer: Enum) -> Result<Self, Self::Error> {
4646
match outer {
47-
Enum::VariantB(inner, ..) => Ok(inner),
47+
Enum::VariantB { b: inner, .. } => Ok(inner),
4848
err => Err(err),
4949
}
5050
}
@@ -56,7 +56,7 @@ impl ::enumcapsulate::FromVariant<VariantA> for Enum {
5656
}
5757
impl ::enumcapsulate::FromVariant<VariantB> for Enum {
5858
fn from_variant(inner: VariantB) -> Self {
59-
Self::VariantB(inner)
59+
Self::VariantB { b: inner }
6060
}
6161
}
6262
impl ::enumcapsulate::AsVariant<VariantA> for Enum
@@ -76,7 +76,7 @@ where
7676
{
7777
fn as_variant(&self) -> Option<VariantB> {
7878
match self {
79-
Enum::VariantB(inner, ..) => Some(inner.clone()),
79+
Enum::VariantB { b: inner, .. } => Some(inner.clone()),
8080
_ => None,
8181
}
8282
}
@@ -92,7 +92,7 @@ impl ::enumcapsulate::AsVariantRef<VariantA> for Enum {
9292
impl ::enumcapsulate::AsVariantRef<VariantB> for Enum {
9393
fn as_variant_ref(&self) -> Option<&VariantB> {
9494
match self {
95-
Enum::VariantB(inner, ..) => Some(inner),
95+
Enum::VariantB { b: inner, .. } => Some(inner),
9696
_ => None,
9797
}
9898
}
@@ -108,7 +108,7 @@ impl ::enumcapsulate::AsVariantMut<VariantA> for Enum {
108108
impl ::enumcapsulate::AsVariantMut<VariantB> for Enum {
109109
fn as_variant_mut(&mut self) -> Option<&mut VariantB> {
110110
match self {
111-
Enum::VariantB(inner, ..) => Some(inner),
111+
Enum::VariantB { b: inner, .. } => Some(inner),
112112
_ => None,
113113
}
114114
}
@@ -124,7 +124,7 @@ impl ::enumcapsulate::IntoVariant<VariantA> for Enum {
124124
impl ::enumcapsulate::IntoVariant<VariantB> for Enum {
125125
fn into_variant(self) -> Result<VariantB, Self> {
126126
match self {
127-
Enum::VariantB(inner, ..) => Ok(inner),
127+
Enum::VariantB { b: inner, .. } => Ok(inner),
128128
err => Err(err),
129129
}
130130
}
@@ -143,7 +143,7 @@ impl ::enumcapsulate::IsVariant for Enum {
143143
let type_id = TypeId::of::<T>();
144144
match self {
145145
Enum::VariantA(inner, ..) => type_id_of_val(inner) == type_id,
146-
Enum::VariantB(inner, ..) => type_id_of_val(inner) == type_id,
146+
Enum::VariantB { b: inner, .. } => type_id_of_val(inner) == type_id,
147147
_ => false,
148148
}
149149
}
@@ -206,15 +206,15 @@ impl ::enumcapsulate::VariantDiscriminant for Enum {
206206
fn variant_discriminant(&self) -> Self::Discriminant {
207207
match self {
208208
Enum::VariantA(..) => EnumDiscriminant::VariantA,
209-
Enum::VariantB(..) => EnumDiscriminant::VariantB,
209+
Enum::VariantB { .. } => EnumDiscriminant::VariantB,
210210
_ => ::core::panicking::panic("internal error: entered unreachable code"),
211211
}
212212
}
213213
}
214214
fn check<T, U>()
215215
where
216-
T: AsVariant<U> + AsVariantRef<U> + AsVariantMut<U> + IntoVariant<U> + From<U>
217-
+ TryInto<U>,
216+
T: FromVariant<U> + IntoVariant<U> + From<U> + TryInto<U> + AsVariant<U>
217+
+ AsVariantRef<U> + AsVariantMut<U>,
218218
{}
219219
fn main() {
220220
check::<Enum, VariantA>();

tests/derive-tests/encapsulate/pass/enum/tuple_variants/one_field.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,25 @@
1-
use enumcapsulate::{AsVariant, AsVariantMut, AsVariantRef, Encapsulate, IntoVariant};
1+
use enumcapsulate::{AsVariant, AsVariantMut, AsVariantRef, Encapsulate, FromVariant, IntoVariant};
22

33
#[derive(Clone)]
44
pub struct VariantA;
55
#[derive(Clone)]
66
pub struct VariantB;
7-
pub struct VariantC;
8-
pub struct VariantD;
97

108
#[derive(Encapsulate)]
119
pub enum Enum {
1210
VariantA(VariantA),
13-
VariantB(VariantB),
11+
VariantB { b: VariantB },
1412
}
1513

1614
fn check<T, U>()
1715
where
18-
T: AsVariant<U> + AsVariantRef<U> + AsVariantMut<U> + IntoVariant<U> + From<U> + TryInto<U>,
16+
T: FromVariant<U>
17+
+ IntoVariant<U>
18+
+ From<U>
19+
+ TryInto<U>
20+
+ AsVariant<U>
21+
+ AsVariantRef<U>
22+
+ AsVariantMut<U>,
1923
{
2024
}
2125

tests/derive-tests/from/pass/enum/mixed_variants.out.rs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,14 @@
11
use enumcapsulate::From;
22
pub struct VariantA;
33
pub struct VariantB;
4-
pub struct VariantC;
5-
pub struct VariantD;
64
pub enum Enum {
75
Unit,
86
ZeroTupleFields(),
97
ZeroStructFields {},
108
OneTupleField(VariantA),
119
OneStructField { variant: VariantB },
12-
TwoTupleFields(i32, u32),
13-
TwoStructFields { a: i32, b: u32 },
1410
#[enumcapsulate(exclude)]
15-
Excluded(bool),
16-
#[enumcapsulate(include(field = 1))]
17-
IncludedTuple(i8, VariantC),
18-
#[enumcapsulate(include(field = "variant"))]
19-
IncludedStruct { value: u8, variant: VariantD },
11+
Excluded(VariantA, VariantB),
2012
}
2113
impl ::core::convert::From<VariantA> for Enum {
2214
fn from(inner: VariantA) -> Self {

0 commit comments

Comments
 (0)