summaryrefslogtreecommitdiffstats
path: root/vendor/serde_repr/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/serde_repr/tests
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/serde_repr/tests')
-rw-r--r--vendor/serde_repr/tests/compiletest.rs7
-rw-r--r--vendor/serde_repr/tests/test.rs80
-rw-r--r--vendor/serde_repr/tests/ui/empty_enum.rs6
-rw-r--r--vendor/serde_repr/tests/ui/empty_enum.stderr7
-rw-r--r--vendor/serde_repr/tests/ui/missing_repr.rs11
-rw-r--r--vendor/serde_repr/tests/ui/missing_repr.stderr7
-rw-r--r--vendor/serde_repr/tests/ui/multiple_others.rs12
-rw-r--r--vendor/serde_repr/tests/ui/multiple_others.stderr7
-rw-r--r--vendor/serde_repr/tests/ui/non_unit_variant.rs12
-rw-r--r--vendor/serde_repr/tests/ui/non_unit_variant.stderr5
-rw-r--r--vendor/serde_repr/tests/ui/not_enum.rs11
-rw-r--r--vendor/serde_repr/tests/ui/not_enum.stderr7
12 files changed, 172 insertions, 0 deletions
diff --git a/vendor/serde_repr/tests/compiletest.rs b/vendor/serde_repr/tests/compiletest.rs
new file mode 100644
index 000000000..7974a6249
--- /dev/null
+++ b/vendor/serde_repr/tests/compiletest.rs
@@ -0,0 +1,7 @@
+#[rustversion::attr(not(nightly), ignore)]
+#[cfg_attr(miri, ignore)]
+#[test]
+fn ui() {
+ let t = trybuild::TestCases::new();
+ t.compile_fail("tests/ui/*.rs");
+}
diff --git a/vendor/serde_repr/tests/test.rs b/vendor/serde_repr/tests/test.rs
new file mode 100644
index 000000000..8c44827dd
--- /dev/null
+++ b/vendor/serde_repr/tests/test.rs
@@ -0,0 +1,80 @@
+#![allow(
+ // Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7422
+ clippy::nonstandard_macro_braces,
+ clippy::wildcard_imports,
+)]
+
+use serde_repr::{Deserialize_repr, Serialize_repr};
+
+mod small_prime {
+ use super::*;
+
+ #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
+ #[repr(u8)]
+ enum SmallPrime {
+ Two = 2,
+ Three = 3,
+ Five = 5,
+ Seven = 7,
+ }
+
+ #[test]
+ fn test_serialize() {
+ let j = serde_json::to_string(&SmallPrime::Seven).unwrap();
+ assert_eq!(j, "7");
+ }
+
+ #[test]
+ fn test_deserialize() {
+ let p: SmallPrime = serde_json::from_str("2").unwrap();
+ assert_eq!(p, SmallPrime::Two);
+ }
+}
+
+mod other {
+ use super::*;
+
+ #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
+ #[repr(u8)]
+ enum TestOther {
+ A,
+ B,
+ #[serde(other, rename = "useless")]
+ Other,
+ }
+
+ #[test]
+ fn test_deserialize() {
+ let p: TestOther = serde_json::from_str("0").unwrap();
+ assert_eq!(p, TestOther::A);
+ let p: TestOther = serde_json::from_str("1").unwrap();
+ assert_eq!(p, TestOther::B);
+ let p: TestOther = serde_json::from_str("5").unwrap();
+ assert_eq!(p, TestOther::Other);
+ }
+}
+
+mod implicit_discriminant {
+ use super::*;
+
+ #[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug)]
+ #[repr(u8)]
+ enum ImplicitDiscriminant {
+ Zero,
+ One,
+ Two,
+ Three,
+ }
+
+ #[test]
+ fn test_serialize() {
+ let j = serde_json::to_string(&ImplicitDiscriminant::Three).unwrap();
+ assert_eq!(j, "3");
+ }
+
+ #[test]
+ fn test_deserialize() {
+ let p: ImplicitDiscriminant = serde_json::from_str("2").unwrap();
+ assert_eq!(p, ImplicitDiscriminant::Two);
+ }
+}
diff --git a/vendor/serde_repr/tests/ui/empty_enum.rs b/vendor/serde_repr/tests/ui/empty_enum.rs
new file mode 100644
index 000000000..f1fb6f9d5
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/empty_enum.rs
@@ -0,0 +1,6 @@
+use serde_repr::Serialize_repr;
+
+#[derive(Serialize_repr)]
+enum SmallPrime {}
+
+fn main() {}
diff --git a/vendor/serde_repr/tests/ui/empty_enum.stderr b/vendor/serde_repr/tests/ui/empty_enum.stderr
new file mode 100644
index 000000000..d7c4de19b
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/empty_enum.stderr
@@ -0,0 +1,7 @@
+error: there must be at least one variant
+ --> tests/ui/empty_enum.rs:3:10
+ |
+3 | #[derive(Serialize_repr)]
+ | ^^^^^^^^^^^^^^
+ |
+ = note: this error originates in the derive macro `Serialize_repr` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/serde_repr/tests/ui/missing_repr.rs b/vendor/serde_repr/tests/ui/missing_repr.rs
new file mode 100644
index 000000000..00836356b
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/missing_repr.rs
@@ -0,0 +1,11 @@
+use serde_repr::Serialize_repr;
+
+#[derive(Serialize_repr)]
+enum SmallPrime {
+ Two = 2,
+ Three = 3,
+ Five = 5,
+ Seven = 7,
+}
+
+fn main() {}
diff --git a/vendor/serde_repr/tests/ui/missing_repr.stderr b/vendor/serde_repr/tests/ui/missing_repr.stderr
new file mode 100644
index 000000000..e011be6f1
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/missing_repr.stderr
@@ -0,0 +1,7 @@
+error: missing #[repr(...)] attribute
+ --> tests/ui/missing_repr.rs:3:10
+ |
+3 | #[derive(Serialize_repr)]
+ | ^^^^^^^^^^^^^^
+ |
+ = note: this error originates in the derive macro `Serialize_repr` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/serde_repr/tests/ui/multiple_others.rs b/vendor/serde_repr/tests/ui/multiple_others.rs
new file mode 100644
index 000000000..fdb552b10
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/multiple_others.rs
@@ -0,0 +1,12 @@
+use serde_repr::Deserialize_repr;
+
+#[derive(Deserialize_repr)]
+#[repr(u8)]
+enum MultipleOthers {
+ #[serde(other)]
+ A,
+ #[serde(other)]
+ B,
+}
+
+fn main() {}
diff --git a/vendor/serde_repr/tests/ui/multiple_others.stderr b/vendor/serde_repr/tests/ui/multiple_others.stderr
new file mode 100644
index 000000000..599d5e172
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/multiple_others.stderr
@@ -0,0 +1,7 @@
+error: only one variant can be #[serde(other)]
+ --> tests/ui/multiple_others.rs:3:10
+ |
+3 | #[derive(Deserialize_repr)]
+ | ^^^^^^^^^^^^^^^^
+ |
+ = note: this error originates in the derive macro `Deserialize_repr` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/serde_repr/tests/ui/non_unit_variant.rs b/vendor/serde_repr/tests/ui/non_unit_variant.rs
new file mode 100644
index 000000000..9cdc80d0a
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/non_unit_variant.rs
@@ -0,0 +1,12 @@
+use serde_repr::Serialize_repr;
+
+#[derive(Serialize_repr)]
+#[repr(u8)]
+enum SmallPrime {
+ Two(u8),
+ Three(u8),
+ Five(u8),
+ Seven(u8),
+}
+
+fn main() {}
diff --git a/vendor/serde_repr/tests/ui/non_unit_variant.stderr b/vendor/serde_repr/tests/ui/non_unit_variant.stderr
new file mode 100644
index 000000000..8eaf0c1d9
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/non_unit_variant.stderr
@@ -0,0 +1,5 @@
+error: must be a unit variant
+ --> tests/ui/non_unit_variant.rs:6:5
+ |
+6 | Two(u8),
+ | ^^^
diff --git a/vendor/serde_repr/tests/ui/not_enum.rs b/vendor/serde_repr/tests/ui/not_enum.rs
new file mode 100644
index 000000000..92a1d746d
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/not_enum.rs
@@ -0,0 +1,11 @@
+use serde_repr::Serialize_repr;
+
+#[derive(Serialize_repr)]
+struct SmallPrime {
+ two: u8,
+ three: u8,
+ five: u8,
+ seven: u8,
+}
+
+fn main() {}
diff --git a/vendor/serde_repr/tests/ui/not_enum.stderr b/vendor/serde_repr/tests/ui/not_enum.stderr
new file mode 100644
index 000000000..26ad4c313
--- /dev/null
+++ b/vendor/serde_repr/tests/ui/not_enum.stderr
@@ -0,0 +1,7 @@
+error: input must be an enum
+ --> tests/ui/not_enum.rs:3:10
+ |
+3 | #[derive(Serialize_repr)]
+ | ^^^^^^^^^^^^^^
+ |
+ = note: this error originates in the derive macro `Serialize_repr` (in Nightly builds, run with -Z macro-backtrace for more info)