From a2220cd6ca103b636567b557d21ab345c6ab99e0 Mon Sep 17 00:00:00 2001 From: Arnaud Bailly Date: Sun, 6 Oct 2024 21:11:04 +0200 Subject: Use proptest's Strategy to generate expressions --- rust/src/lambda.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'rust/src/lambda.rs') diff --git a/rust/src/lambda.rs b/rust/src/lambda.rs index d1ab5b5..9b7045f 100644 --- a/rust/src/lambda.rs +++ b/rust/src/lambda.rs @@ -1,3 +1,8 @@ +use proptest::{ + arbitrary::{any, any_with, arbitrary_with}, + strategy::{Strategy, ValueTree}, + test_runner::TestRunner, +}; use rand::{rngs::SmallRng, Rng, RngCore, SeedableRng}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; @@ -98,12 +103,13 @@ fn gensym() -> String { format!("x_{}", n1) } -pub fn generate_expr(size: u32, rng: &mut R) -> Value { +pub fn generate_expr(size: u32, runner: &mut TestRunner) -> Value { match size { 0 | 1 => { - let n: u16 = rng.gen(); + let n = any::().new_tree(runner).unwrap().current(); Value::Num(n.into()) } + 2 => Value::Sym(identifier().new_tree(runner).unwrap().current()), _ => todo!(), } } -- cgit v1.2.3