diff options
author | Nadrieril | 2019-04-07 18:04:45 +0200 |
---|---|---|
committer | Nadrieril | 2019-04-07 18:04:45 +0200 |
commit | 21b1fda39e51d157dadbfbb2aeb0f542a9506fcf (patch) | |
tree | 09012b2d9294a58455b74e8bd0e041f7cb153a23 /dhall/tests/traits.rs | |
parent | 727c5219c9af55df3e61fb372fa2fadecdd15b18 (diff) | |
parent | 4bebcd96b6e76b9b8ae7877af91d2ae571e617a9 (diff) |
Merge branch 'statemachine-api'
Diffstat (limited to 'dhall/tests/traits.rs')
-rw-r--r-- | dhall/tests/traits.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/dhall/tests/traits.rs b/dhall/tests/traits.rs new file mode 100644 index 0000000..ac6b5e6 --- /dev/null +++ b/dhall/tests/traits.rs @@ -0,0 +1,53 @@ +#![feature(proc_macro_hygiene)] +use dhall::StaticType; +use dhall_generator::dhall_expr; + +#[test] +fn test_dhall_type() { + assert_eq!(bool::get_type(), dhall_expr!(Bool)); + assert_eq!(String::get_type(), dhall_expr!(Text)); + assert_eq!( + <(bool, Option<String>)>::get_type(), + dhall_expr!({ _1: Bool, _2: Optional Text }) + ); + + #[derive(dhall::StaticType)] + #[allow(dead_code)] + struct A { + field1: bool, + field2: Option<bool>, + } + assert_eq!( + <A as dhall::StaticType>::get_type(), + dhall_expr!({ field1: Bool, field2: Optional Bool }) + ); + + #[derive(StaticType)] + #[allow(dead_code)] + struct B<'a, T: 'a> { + field1: &'a T, + field2: Option<T>, + } + assert_eq!(<B<'static, bool>>::get_type(), A::get_type()); + + #[derive(StaticType)] + #[allow(dead_code)] + struct C<T>(T, Option<String>); + assert_eq!(<C<bool>>::get_type(), <(bool, Option<String>)>::get_type()); + + #[derive(StaticType)] + #[allow(dead_code)] + struct D(); + assert_eq!( + <C<D>>::get_type(), + dhall_expr!({ _1: {}, _2: Optional Text }) + ); + + #[derive(StaticType)] + #[allow(dead_code)] + enum E<T> { + A(T), + B(String), + }; + assert_eq!(<E<bool>>::get_type(), dhall_expr!(< A: Bool | B: Text >)); +} |