summaryrefslogtreecommitdiffstats
path: root/third_party/rust/failure_derive/tests/tests.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/failure_derive/tests/tests.rs')
-rw-r--r--third_party/rust/failure_derive/tests/tests.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/third_party/rust/failure_derive/tests/tests.rs b/third_party/rust/failure_derive/tests/tests.rs
new file mode 100644
index 0000000000..4e73255ef3
--- /dev/null
+++ b/third_party/rust/failure_derive/tests/tests.rs
@@ -0,0 +1,55 @@
+extern crate failure;
+#[macro_use]
+extern crate failure_derive;
+
+#[derive(Fail, Debug)]
+#[fail(display = "An error has occurred.")]
+struct UnitError;
+
+#[test]
+fn unit_struct() {
+ let s = format!("{}", UnitError);
+ assert_eq!(&s[..], "An error has occurred.");
+}
+
+#[derive(Fail, Debug)]
+#[fail(display = "Error code: {}", code)]
+struct RecordError {
+ code: u32,
+}
+
+#[test]
+fn record_struct() {
+ let s = format!("{}", RecordError { code: 0 });
+ assert_eq!(&s[..], "Error code: 0");
+}
+
+#[derive(Fail, Debug)]
+#[fail(display = "Error code: {}", _0)]
+struct TupleError(i32);
+
+#[test]
+fn tuple_struct() {
+ let s = format!("{}", TupleError(2));
+ assert_eq!(&s[..], "Error code: 2");
+}
+
+#[derive(Fail, Debug)]
+enum EnumError {
+ #[fail(display = "Error code: {}", code)]
+ StructVariant { code: i32 },
+ #[fail(display = "Error: {}", _0)]
+ TupleVariant(&'static str),
+ #[fail(display = "An error has occurred.")]
+ UnitVariant,
+}
+
+#[test]
+fn enum_error() {
+ let s = format!("{}", EnumError::StructVariant { code: 2 });
+ assert_eq!(&s[..], "Error code: 2");
+ let s = format!("{}", EnumError::TupleVariant("foobar"));
+ assert_eq!(&s[..], "Error: foobar");
+ let s = format!("{}", EnumError::UnitVariant);
+ assert_eq!(&s[..], "An error has occurred.");
+}