fix(tvix/nix-compat-derive-tests) More enum tests
Before this commit only deriving of tuple enums where tested. This adds a few tests to cover the other types of enums. Change-Id: I62f311e4db98cab84bd4ac164d50051e9aab0d4d Reviewed-on: https://cl.tvl.fyi/c/depot/+/12725 Autosubmit: Brian Olsen <me@griff.name> Reviewed-by: Vladimir Kryachko <v.kryachko@gmail.com> Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
28dbf5f0eb
commit
6f914bc0fa
1 changed files with 65 additions and 6 deletions
|
@ -356,16 +356,35 @@ async fn read_from_u64_reader_error() {
|
|||
#[derive(Debug, PartialEq, Eq, NixDeserialize)]
|
||||
enum TestEnum {
|
||||
#[nix(version = "..=19")]
|
||||
Pre20(TestTryFromU64),
|
||||
#[nix(version = "20..")]
|
||||
Pre20(TestTryFromU64, #[nix(version = "10..")] u64),
|
||||
#[nix(version = "20..=29")]
|
||||
Post20(StructVersionTest),
|
||||
#[nix(version = "30..=39")]
|
||||
Post30,
|
||||
#[nix(version = "40..")]
|
||||
Post40 {
|
||||
msg: String,
|
||||
#[nix(version = "45..")]
|
||||
level: u64,
|
||||
},
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_9() {
|
||||
let mut mock = Builder::new().version((1, 9)).read_number(42).build();
|
||||
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||
assert_eq!(TestEnum::Pre20(TestTryFromU64, 0), value);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_19() {
|
||||
let mut mock = Builder::new().version((1, 19)).read_number(42).build();
|
||||
let mut mock = Builder::new()
|
||||
.version((1, 19))
|
||||
.read_number(42)
|
||||
.read_number(666)
|
||||
.build();
|
||||
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||
assert_eq!(TestEnum::Pre20(TestTryFromU64), value);
|
||||
assert_eq!(TestEnum::Pre20(TestTryFromU64, 666), value);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
@ -385,6 +404,46 @@ async fn read_enum_20() {
|
|||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_30() {
|
||||
let mut mock = Builder::new().version((1, 30)).build();
|
||||
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||
assert_eq!(TestEnum::Post30, value);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_40() {
|
||||
let mut mock = Builder::new()
|
||||
.version((1, 40))
|
||||
.read_slice(b"hello world")
|
||||
.build();
|
||||
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||
assert_eq!(
|
||||
TestEnum::Post40 {
|
||||
msg: "hello world".into(),
|
||||
level: 0,
|
||||
},
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_45() {
|
||||
let mut mock = Builder::new()
|
||||
.version((1, 45))
|
||||
.read_slice(b"hello world")
|
||||
.read_number(9001)
|
||||
.build();
|
||||
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||
assert_eq!(
|
||||
TestEnum::Post40 {
|
||||
msg: "hello world".into(),
|
||||
level: 9001,
|
||||
},
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_reader_error() {
|
||||
let mut mock = Builder::new()
|
||||
|
@ -396,8 +455,8 @@ async fn read_enum_reader_error() {
|
|||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn read_enum_invalid_data_19() {
|
||||
let mut mock = Builder::new().version((1, 19)).read_number(666).build();
|
||||
async fn read_enum_invalid_data_9() {
|
||||
let mut mock = Builder::new().version((1, 9)).read_number(666).build();
|
||||
let err = mock.read_value::<TestEnum>().await.unwrap_err();
|
||||
assert_eq!(Error::InvalidData("666".into()), err);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue