use super::storage_key_derive;
#[test]
fn unit_struct_works() {
crate::test_derive! {
storage_key_derive {
struct UnitStruct;
}
expands to {
const _: () = {
impl ::ink::storage::traits::StorageKey for UnitStruct {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn unit_struct_generic_works() {
crate::test_derive! {
storage_key_derive {
struct UnitStruct<T>;
}
expands to {
const _: () = {
impl<T> ::ink::storage::traits::StorageKey for UnitStruct<T> {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn unit_struct_salt_works() {
crate::test_derive! {
storage_key_derive {
struct UnitStruct<Salt: ::ink::storage::traits::StorageKey>;
}
expands to {
const _: () = {
impl<Salt: ::ink::storage::traits::StorageKey> ::ink::storage::traits::StorageKey for UnitStruct<Salt> {
const KEY: ::ink::primitives::Key = <Salt as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn struct_works() {
crate::test_derive! {
storage_key_derive {
struct NamedFields {
a: i32,
b: [u8; 32],
d: Box<i32>,
}
}
expands to {
const _: () = {
impl ::ink::storage::traits::StorageKey for NamedFields {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn struct_generic_works() {
crate::test_derive! {
storage_key_derive {
struct NamedFields<T> {
a: T,
b: [u8; 32],
d: Box<i32>,
}
}
expands to {
const _: () = {
impl<T> ::ink::storage::traits::StorageKey for NamedFields<T> {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn struct_salt_works() {
crate::test_derive! {
storage_key_derive {
struct NamedFields<Salt: StorageKey> {
a: i32,
b: [u8; 32],
d: Box<i32>,
}
}
expands to {
const _: () = {
impl<Salt: StorageKey> ::ink::storage::traits::StorageKey for NamedFields<Salt> {
const KEY: ::ink::primitives::Key = <Salt as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn enum_works() {
crate::test_derive! {
storage_key_derive {
enum MixedEnum {
A,
B(i32, [u8; 32]),
C { a: i32, b: (bool, i32) },
}
}
expands to {
const _: () = {
impl ::ink::storage::traits::StorageKey for MixedEnum {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn enum_generic_works() {
crate::test_derive! {
storage_key_derive {
enum MixedEnum<T> {
A,
B(T, [u8; 32]),
C { a: i32, b: (bool, i32) },
}
}
expands to {
const _: () = {
impl<T> ::ink::storage::traits::StorageKey for MixedEnum<T> {
const KEY: ::ink::primitives::Key = <() as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}
#[test]
fn enum_salt_works() {
crate::test_derive! {
storage_key_derive {
enum MixedEnum<Salt: traits::StorageKey> {
A,
B(u32, [u8; 32]),
C { a: i32, b: (bool, i32) },
}
}
expands to {
const _: () = {
impl<Salt: traits::StorageKey> ::ink::storage::traits::StorageKey for MixedEnum<Salt> {
const KEY: ::ink::primitives::Key = <Salt as ::ink::storage::traits::StorageKey>::KEY;
}
};
}
no_build
}
}