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)]
|
#[derive(Debug, PartialEq, Eq, NixDeserialize)]
|
||||||
enum TestEnum {
|
enum TestEnum {
|
||||||
#[nix(version = "..=19")]
|
#[nix(version = "..=19")]
|
||||||
Pre20(TestTryFromU64),
|
Pre20(TestTryFromU64, #[nix(version = "10..")] u64),
|
||||||
#[nix(version = "20..")]
|
#[nix(version = "20..=29")]
|
||||||
Post20(StructVersionTest),
|
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]
|
#[tokio::test]
|
||||||
async fn read_enum_19() {
|
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();
|
let value = mock.read_value::<TestEnum>().await.unwrap();
|
||||||
assert_eq!(TestEnum::Pre20(TestTryFromU64), value);
|
assert_eq!(TestEnum::Pre20(TestTryFromU64, 666), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[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]
|
#[tokio::test]
|
||||||
async fn read_enum_reader_error() {
|
async fn read_enum_reader_error() {
|
||||||
let mut mock = Builder::new()
|
let mut mock = Builder::new()
|
||||||
|
@ -396,8 +455,8 @@ async fn read_enum_reader_error() {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn read_enum_invalid_data_19() {
|
async fn read_enum_invalid_data_9() {
|
||||||
let mut mock = Builder::new().version((1, 19)).read_number(666).build();
|
let mut mock = Builder::new().version((1, 9)).read_number(666).build();
|
||||||
let err = mock.read_value::<TestEnum>().await.unwrap_err();
|
let err = mock.read_value::<TestEnum>().await.unwrap_err();
|
||||||
assert_eq!(Error::InvalidData("666".into()), err);
|
assert_eq!(Error::InvalidData("666".into()), err);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue