Skip to content

Commit e180921

Browse files
committed
Add a test suite
Signed-off-by: Anders Kaseorg <[email protected]>
1 parent 74d828f commit e180921

File tree

1 file changed

+235
-0
lines changed

1 file changed

+235
-0
lines changed

tests/tests.rs

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
#[macro_use] extern crate enum_primitive as ep;
2+
3+
enum_from_primitive! {
4+
enum Unused {
5+
A = 17,
6+
B = 42
7+
}
8+
}
9+
10+
enum_from_primitive! {
11+
#[derive(Debug, PartialEq)]
12+
enum Empty {
13+
}
14+
}
15+
16+
#[test]
17+
fn empty() {
18+
use ep::FromPrimitive;
19+
assert_eq!(Empty::from_i32(91), None);
20+
}
21+
22+
enum_from_primitive! {
23+
#[derive(Debug, PartialEq)]
24+
enum One {
25+
A = 17
26+
}
27+
}
28+
29+
#[test]
30+
fn one() {
31+
use ep::FromPrimitive;
32+
assert_eq!(One::from_isize(17), Some(One::A));
33+
assert_eq!(One::from_isize(91), None);
34+
assert_eq!(One::from_i8(17), Some(One::A));
35+
assert_eq!(One::from_i8(91), None);
36+
assert_eq!(One::from_i16(17), Some(One::A));
37+
assert_eq!(One::from_i16(91), None);
38+
assert_eq!(One::from_i32(17), Some(One::A));
39+
assert_eq!(One::from_i32(91), None);
40+
assert_eq!(One::from_i64(17), Some(One::A));
41+
assert_eq!(One::from_i64(91), None);
42+
assert_eq!(One::from_usize(17), Some(One::A));
43+
assert_eq!(One::from_usize(91), None);
44+
assert_eq!(One::from_u8(17), Some(One::A));
45+
assert_eq!(One::from_u8(91), None);
46+
assert_eq!(One::from_u16(17), Some(One::A));
47+
assert_eq!(One::from_u16(91), None);
48+
assert_eq!(One::from_u32(17), Some(One::A));
49+
assert_eq!(One::from_u32(91), None);
50+
assert_eq!(One::from_u64(17), Some(One::A));
51+
assert_eq!(One::from_u64(91), None);
52+
}
53+
54+
enum_from_primitive! {
55+
#[derive(Debug, PartialEq)]
56+
enum OneComma {
57+
A = 17,
58+
}
59+
}
60+
61+
#[test]
62+
fn one_comma() {
63+
use ep::FromPrimitive;
64+
assert_eq!(OneComma::from_i32(17), Some(OneComma::A));
65+
assert_eq!(OneComma::from_i32(91), None);
66+
}
67+
68+
enum_from_primitive! {
69+
#[derive(Debug, PartialEq)]
70+
enum Two {
71+
A = 17,
72+
B = 42
73+
}
74+
}
75+
76+
#[test]
77+
fn two() {
78+
use ep::FromPrimitive;
79+
assert_eq!(PubTwo::from_i32(17), Some(PubTwo::A));
80+
assert_eq!(PubTwo::from_i32(42), Some(PubTwo::B));
81+
assert_eq!(PubTwo::from_i32(91), None);
82+
}
83+
84+
enum_from_primitive! {
85+
#[derive(Debug, PartialEq)]
86+
enum TwoComma {
87+
A = 17,
88+
B = 42,
89+
}
90+
}
91+
92+
#[test]
93+
fn two_comma() {
94+
use ep::FromPrimitive;
95+
assert_eq!(TwoComma::from_i32(17), Some(TwoComma::A));
96+
assert_eq!(TwoComma::from_i32(42), Some(TwoComma::B));
97+
assert_eq!(TwoComma::from_i32(91), None);
98+
}
99+
100+
enum_from_primitive! {
101+
#[derive(Debug, PartialEq)]
102+
pub enum PubEmpty {
103+
}
104+
}
105+
106+
#[test]
107+
fn pub_empty() {
108+
use ep::FromPrimitive;
109+
assert_eq!(PubEmpty::from_i32(91), None);
110+
}
111+
112+
enum_from_primitive! {
113+
#[derive(Debug, PartialEq)]
114+
pub enum PubOne {
115+
A = 17
116+
}
117+
}
118+
119+
#[test]
120+
fn pub_one() {
121+
use ep::FromPrimitive;
122+
assert_eq!(PubOne::from_i32(17), Some(PubOne::A));
123+
assert_eq!(PubOne::from_i32(91), None);
124+
}
125+
126+
enum_from_primitive! {
127+
#[derive(Debug, PartialEq)]
128+
pub enum PubOneComma {
129+
A = 17,
130+
}
131+
}
132+
133+
#[test]
134+
fn pub_one_comma() {
135+
use ep::FromPrimitive;
136+
assert_eq!(PubOneComma::from_i32(17), Some(PubOneComma::A));
137+
assert_eq!(PubOneComma::from_i32(91), None);
138+
}
139+
140+
enum_from_primitive! {
141+
#[derive(Debug, PartialEq)]
142+
pub enum PubTwo {
143+
A = 17,
144+
B = 42
145+
}
146+
}
147+
148+
#[test]
149+
fn pub_two() {
150+
use ep::FromPrimitive;
151+
assert_eq!(PubTwo::from_i32(17), Some(PubTwo::A));
152+
assert_eq!(PubTwo::from_i32(42), Some(PubTwo::B));
153+
assert_eq!(PubTwo::from_i32(91), None);
154+
}
155+
156+
enum_from_primitive! {
157+
#[derive(Debug, PartialEq)]
158+
pub enum PubTwoComma {
159+
A = 17,
160+
B = 42,
161+
}
162+
}
163+
164+
#[test]
165+
fn pub_two_comma() {
166+
use ep::FromPrimitive;
167+
assert_eq!(PubTwoComma::from_i32(17), Some(PubTwoComma::A));
168+
assert_eq!(PubTwoComma::from_i32(42), Some(PubTwoComma::B));
169+
assert_eq!(PubTwoComma::from_i32(91), None);
170+
}
171+
172+
enum_from_primitive! {
173+
#[derive(Debug, PartialEq)]
174+
enum Negative {
175+
A = -17
176+
}
177+
}
178+
179+
#[test]
180+
fn negative() {
181+
use ep::FromPrimitive;
182+
assert_eq!(Negative::from_isize(-17), Some(Negative::A));
183+
assert_eq!(Negative::from_isize(-91), None);
184+
assert_eq!(Negative::from_i8(-17), Some(Negative::A));
185+
assert_eq!(Negative::from_i8(-91), None);
186+
assert_eq!(Negative::from_i16(-17), Some(Negative::A));
187+
assert_eq!(Negative::from_i16(-91), None);
188+
assert_eq!(Negative::from_i32(-17), Some(Negative::A));
189+
assert_eq!(Negative::from_i32(-91), None);
190+
assert_eq!(Negative::from_i64(-17), Some(Negative::A));
191+
assert_eq!(Negative::from_i64(-91), None);
192+
assert_eq!(Negative::from_usize(!16), Some(Negative::A));
193+
assert_eq!(Negative::from_usize(!90), None);
194+
assert_eq!(Negative::from_u8(!16), None);
195+
assert_eq!(Negative::from_u8(!90), None);
196+
assert_eq!(Negative::from_u16(!16), None);
197+
assert_eq!(Negative::from_u16(!90), None);
198+
assert_eq!(Negative::from_u32(!16), None);
199+
assert_eq!(Negative::from_u32(!90), None);
200+
assert_eq!(Negative::from_u64(!16), Some(Negative::A));
201+
assert_eq!(Negative::from_u64(!90), None);
202+
}
203+
204+
#[test]
205+
fn in_local_mod() {
206+
mod local_mod {
207+
enum_from_primitive! {
208+
#[derive(Debug, PartialEq)]
209+
pub enum InLocalMod {
210+
A = 17,
211+
B = 42,
212+
}
213+
}
214+
}
215+
216+
use ep::FromPrimitive;
217+
assert_eq!(local_mod::InLocalMod::from_i32(17), Some(local_mod::InLocalMod::A));
218+
assert_eq!(local_mod::InLocalMod::from_i32(42), Some(local_mod::InLocalMod::B));
219+
assert_eq!(local_mod::InLocalMod::from_i32(91), None);
220+
}
221+
222+
enum_from_primitive! {
223+
#[derive(Debug, PartialEq)]
224+
#[doc = "Documented"]
225+
pub enum Documented {
226+
A = 17
227+
}
228+
}
229+
230+
#[test]
231+
fn documented() {
232+
use ep::FromPrimitive;
233+
assert_eq!(Documented::from_i32(17), Some(Documented::A));
234+
assert_eq!(Documented::from_i32(91), None);
235+
}

0 commit comments

Comments
 (0)