Skip to content

Commit

Permalink
Cover dynamic and override data types
Browse files Browse the repository at this point in the history
  • Loading branch information
arnodb committed Oct 30, 2024
1 parent 2c3a618 commit 1140dbe
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions truc/src/generator/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,10 @@ mod tests {
use rand::Rng;
use rand_chacha::rand_core::SeedableRng;

use crate::record::{definition::RecordDefinitionBuilder, type_resolver::HostTypeResolver};
use crate::record::{
definition::{DatumDefinitionOverride, RecordDefinitionBuilder},
type_resolver::StaticTypeResolver,
};

use super::*;

Expand All @@ -312,15 +315,19 @@ mod tests {
let mut rng = rand_chacha::ChaCha8Rng::from_entropy();
println!("Seed: {:#04x?}", rng.get_seed());

let type_resolver = HostTypeResolver;
let type_resolver = {
let mut resolver = StaticTypeResolver::default();
resolver.add_std_types();
resolver
};

const MAX_DATA: usize = 32;
for _ in 0..256 {
let mut definition = RecordDefinitionBuilder::new(&type_resolver);
let num_data = rng.gen_range(0..=MAX_DATA);
let add_one = |definition: &mut RecordDefinitionBuilder<_>,
rng: &mut rand_chacha::ChaCha8Rng,
i: usize| match rng.gen_range(0..5) {
i: usize| match rng.gen_range(0..7) {
0 => {
definition.add_datum_allow_uninit::<u8, _>(format!("field_{}", i));
}
Expand All @@ -336,6 +343,20 @@ mod tests {
4 => {
definition.add_datum::<String, _>(format!("field_{}", i));
}
5 => {
definition.add_dynamic_datum(format!("field_{}", i), "Box<str>");
}
6 => {
definition.add_datum_override::<Vec<()>, _>(
format!("field_{}", i),
DatumDefinitionOverride {
type_name: Some("Vec<usize>".to_owned()),
size: None,
align: None,
allow_uninit: None,
},
);
}
i => unreachable!("Unhandled value {}", i),
};
for i in 0..num_data {
Expand Down

0 comments on commit 1140dbe

Please sign in to comment.