Skip to content

Commit 68ecdc1

Browse files
dodomorandilmammino
authored andcommitted
Allow float values in DgcCertContainer
1 parent 77d5e83 commit 68ecdc1

File tree

2 files changed

+37
-30
lines changed

2 files changed

+37
-30
lines changed

src/dgc_container.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,22 @@ pub struct DgcCertContainer {
1717
pub issuer: String,
1818
#[serde(alias = "6")]
1919
#[serde(rename(serialize = "6"))]
20-
pub issued_at: u64,
20+
pub issued_at: IntegerOrFloat,
2121
#[serde(alias = "4")]
2222
#[serde(rename(serialize = "4"))]
23-
pub expiration_time: u64,
23+
pub expiration_time: IntegerOrFloat,
2424
#[serde(alias = "-260")]
2525
#[serde(rename(serialize = "-260"))]
2626
pub certs: HashMap<usize, DgcCert>,
2727
}
2828

29+
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
30+
#[serde(untagged)]
31+
pub enum IntegerOrFloat {
32+
Float(f64),
33+
Integer(u64),
34+
}
35+
2936
impl DgcCertContainer {
3037
pub fn expand_values(&mut self) {
3138
self.certs.iter_mut().for_each(|(_, t)| t.expand_values());

tests/lib.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,43 +82,43 @@ use std::path::PathBuf;
8282
// #[case::de_2dcode_raw_2_json("DE/2DCode/raw/2.json")] // SKIPPED. See #1
8383
// #[case::de_2dcode_raw_3_json("DE/2DCode/raw/3.json")] // SKIPPED. See #1
8484
// #[case::de_2dcode_raw_4_json("DE/2DCode/raw/4.json")] // SKIPPED. See #1
85-
// #[case::dk_2dcode_raw_1_json("DK/2DCode/raw/1.json")] // SKIPPED. `issued_at` is a float (see #3)
86-
// #[case::dk_2dcode_raw_10_json("DK/2DCode/raw/10.json")] // SKIPPED. `issued_at` is a float (see #3)
87-
// #[case::dk_2dcode_raw_11_json("DK/2DCode/raw/11.json")] // SKIPPED. `issued_at` is a float (see #3)
88-
// #[case::dk_2dcode_raw_12_json("DK/2DCode/raw/12.json")] // SKIPPED. `issued_at` is a float (see #3)
89-
// #[case::dk_2dcode_raw_2_json("DK/2DCode/raw/2.json")] // SKIPPED. `issued_at` is a float (see #3)
90-
// #[case::dk_2dcode_raw_3_json("DK/2DCode/raw/3.json")] // SKIPPED. `issued_at` is a float (see #3)
91-
// #[case::dk_2dcode_raw_4_json("DK/2DCode/raw/4.json")] // SKIPPED. `issued_at` is a float (see #3)
92-
// #[case::dk_2dcode_raw_5_json("DK/2DCode/raw/5.json")] // SKIPPED. `issued_at` is a float (see #3)
93-
// #[case::dk_2dcode_raw_7_json("DK/2DCode/raw/7.json")] // SKIPPED. `issued_at` is a float (see #3)
94-
// #[case::dk_2dcode_raw_8_json("DK/2DCode/raw/8.json")] // SKIPPED. `issued_at` is a float (see #3)
85+
#[case::dk_2dcode_raw_1_json("DK/2DCode/raw/1.json")]
86+
#[case::dk_2dcode_raw_10_json("DK/2DCode/raw/10.json")]
87+
#[case::dk_2dcode_raw_11_json("DK/2DCode/raw/11.json")]
88+
#[case::dk_2dcode_raw_12_json("DK/2DCode/raw/12.json")]
89+
#[case::dk_2dcode_raw_2_json("DK/2DCode/raw/2.json")]
90+
#[case::dk_2dcode_raw_3_json("DK/2DCode/raw/3.json")]
91+
#[case::dk_2dcode_raw_4_json("DK/2DCode/raw/4.json")]
92+
#[case::dk_2dcode_raw_5_json("DK/2DCode/raw/5.json")]
93+
#[case::dk_2dcode_raw_7_json("DK/2DCode/raw/7.json")]
94+
#[case::dk_2dcode_raw_8_json("DK/2DCode/raw/8.json")]
9595
// #[case::es_2dcode_raw_1001_json("ES/2DCode/raw/1001.json")] // SKIPPED. `issued_at` is a float (see #3)
9696
// #[case::es_2dcode_raw_1002_json("ES/2DCode/raw/1002.json")] // SKIPPED. `issued_at` is a float (see #3)
9797
// #[case::es_2dcode_raw_1003_json("ES/2DCode/raw/1003.json")] // SKIPPED. `issued_at` is a float (see #3)
98-
// #[case::es_2dcode_raw_101_json("ES/2DCode/raw/101.json")] // SKIPPED. `issued_at` is a float (see #3)
99-
// #[case::es_2dcode_raw_102_json("ES/2DCode/raw/102.json")] // SKIPPED. `issued_at` is a float (see #3)
100-
// #[case::es_2dcode_raw_103_json("ES/2DCode/raw/103.json")] // SKIPPED. `issued_at` is a float (see #3)
101-
// #[case::es_2dcode_raw_1101_json("ES/2DCode/raw/1101.json")] // SKIPPED. `issued_at` is a float (see #3)
102-
// #[case::es_2dcode_raw_1102_json("ES/2DCode/raw/1102.json")] // SKIPPED. `issued_at` is a float (see #3)
103-
// #[case::es_2dcode_raw_1103_json("ES/2DCode/raw/1103.json")] // SKIPPED. `issued_at` is a float (see #3)
98+
#[case::es_2dcode_raw_101_json("ES/2DCode/raw/101.json")]
99+
#[case::es_2dcode_raw_102_json("ES/2DCode/raw/102.json")]
100+
#[case::es_2dcode_raw_103_json("ES/2DCode/raw/103.json")]
101+
#[case::es_2dcode_raw_1101_json("ES/2DCode/raw/1101.json")]
102+
#[case::es_2dcode_raw_1102_json("ES/2DCode/raw/1102.json")]
103+
#[case::es_2dcode_raw_1103_json("ES/2DCode/raw/1103.json")]
104104
// #[case::es_2dcode_raw_1501_json("ES/2DCode/raw/1501.json")] // SKIPPED. Invalid COSE (missing tag)
105105
// #[case::es_2dcode_raw_1502_json("ES/2DCode/raw/1502.json")] // SKIPPED. `issued_at` is a float (see #3)
106106
// #[case::es_2dcode_raw_1503_json("ES/2DCode/raw/1503.json")] // SKIPPED. `issued_at` is a float (see #3)
107-
// #[case::es_2dcode_raw_201_json("ES/2DCode/raw/201.json")] // SKIPPED. `issued_at` is a float (see #3)
108-
// #[case::es_2dcode_raw_202_json("ES/2DCode/raw/202.json")] // SKIPPED. `issued_at` is a float (see #3)
109-
// #[case::es_2dcode_raw_203_json("ES/2DCode/raw/203.json")] // SKIPPED. `issued_at` is a float (see #3)
110-
// #[case::es_2dcode_raw_2101_json("ES/2DCode/raw/2101.json")] // SKIPPED. `issued_at` is a float (see #3)
111-
// #[case::es_2dcode_raw_2102_json("ES/2DCode/raw/2102.json")] // SKIPPED. `issued_at` is a float (see #3)
112-
// #[case::es_2dcode_raw_2103_json("ES/2DCode/raw/2103.json")] // SKIPPED. `issued_at` is a float (see #3)
107+
#[case::es_2dcode_raw_201_json("ES/2DCode/raw/201.json")]
108+
#[case::es_2dcode_raw_202_json("ES/2DCode/raw/202.json")]
109+
#[case::es_2dcode_raw_203_json("ES/2DCode/raw/203.json")]
110+
#[case::es_2dcode_raw_2101_json("ES/2DCode/raw/2101.json")]
111+
#[case::es_2dcode_raw_2102_json("ES/2DCode/raw/2102.json")]
112+
#[case::es_2dcode_raw_2103_json("ES/2DCode/raw/2103.json")]
113113
// #[case::es_2dcode_raw_401_json("ES/2DCode/raw/401.json")] // SKIPPED. `issued_at` is a float (see #3)
114114
// #[case::es_2dcode_raw_402_json("ES/2DCode/raw/402.json")] // SKIPPED. `issued_at` is a float (see #3)
115115
// #[case::es_2dcode_raw_403_json("ES/2DCode/raw/403.json")] // SKIPPED. `issued_at` is a float (see #3)
116-
// #[case::es_2dcode_raw_501_json("ES/2DCode/raw/501.json")] // SKIPPED. `issued_at` is a float (see #3)
117-
// #[case::es_2dcode_raw_502_json("ES/2DCode/raw/502.json")] // SKIPPED. `issued_at` is a float (see #3)
118-
// #[case::es_2dcode_raw_503_json("ES/2DCode/raw/503.json")] // SKIPPED. `issued_at` is a float (see #3)
119-
// #[case::es_2dcode_raw_701_json("ES/2DCode/raw/701.json")] // SKIPPED. `issued_at` is a float (see #3)
120-
// #[case::es_2dcode_raw_702_json("ES/2DCode/raw/702.json")] // SKIPPED. `issued_at` is a float (see #3)
121-
// #[case::es_2dcode_raw_703_json("ES/2DCode/raw/703.json")] // SKIPPED. `issued_at` is a float (see #3)
116+
#[case::es_2dcode_raw_501_json("ES/2DCode/raw/501.json")]
117+
#[case::es_2dcode_raw_502_json("ES/2DCode/raw/502.json")]
118+
#[case::es_2dcode_raw_503_json("ES/2DCode/raw/503.json")]
119+
#[case::es_2dcode_raw_701_json("ES/2DCode/raw/701.json")]
120+
#[case::es_2dcode_raw_702_json("ES/2DCode/raw/702.json")]
121+
#[case::es_2dcode_raw_703_json("ES/2DCode/raw/703.json")]
122122
#[case::fi_2dcode_raw_1_json("FI/2DCode/raw/1.json")]
123123
#[case::fi_2dcode_raw_10_json("FI/2DCode/raw/10.json")]
124124
#[case::fi_2dcode_raw_2_json("FI/2DCode/raw/2.json")]

0 commit comments

Comments
 (0)