refactor(ast): rename value types to Number/Decimal/Text/Boolean
Renamed AST value types for v0.3 naming convention: - Value::Int -> Value::Number - Value::Float -> Value::Decimal - Value::String -> Value::Text - Value::Bool -> Value::Boolean - Expr::IntLit -> Expr::NumberLit - Expr::FloatLit -> Expr::DecimalLit - Expr::StringLit -> Expr::TextLit - Expr::BoolLit -> Expr::BooleanLit Updated all references across parser, resolver, validator, LSP, query engine, tests, and editor.
This commit is contained in:
@@ -384,12 +384,12 @@ mod tests {
|
||||
fields: vec![
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(34),
|
||||
value: Value::Number(34),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
name: "health".to_string(),
|
||||
value: Value::Float(0.8),
|
||||
value: Value::Decimal(0.8),
|
||||
span: Span::new(10, 20),
|
||||
},
|
||||
],
|
||||
@@ -403,8 +403,8 @@ mod tests {
|
||||
|
||||
assert_eq!(resolved.name, "Martha");
|
||||
assert_eq!(resolved.fields.len(), 2);
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Int(34)));
|
||||
assert_eq!(resolved.fields.get("health"), Some(&Value::Float(0.8)));
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Number(34)));
|
||||
assert_eq!(resolved.fields.get("health"), Some(&Value::Decimal(0.8)));
|
||||
assert_eq!(resolved.prose_blocks.len(), 0);
|
||||
}
|
||||
|
||||
@@ -422,7 +422,7 @@ mod tests {
|
||||
fields: vec![
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(34),
|
||||
value: Value::Number(34),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
@@ -441,7 +441,7 @@ mod tests {
|
||||
|
||||
assert_eq!(resolved.name, "Martha");
|
||||
assert_eq!(resolved.fields.len(), 1);
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Int(34)));
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Number(34)));
|
||||
assert_eq!(resolved.prose_blocks.len(), 1);
|
||||
assert_eq!(resolved.prose_blocks.get("backstory"), Some(&prose_block));
|
||||
}
|
||||
@@ -454,12 +454,12 @@ mod tests {
|
||||
fields: vec![
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(34),
|
||||
value: Value::Number(34),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(35),
|
||||
value: Value::Number(35),
|
||||
span: Span::new(10, 20),
|
||||
},
|
||||
],
|
||||
@@ -481,7 +481,7 @@ mod tests {
|
||||
species: None,
|
||||
fields: vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(34),
|
||||
value: Value::Number(34),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
template: None,
|
||||
@@ -550,7 +550,7 @@ mod tests {
|
||||
let fields = vec![
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(30),
|
||||
value: Value::Number(30),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
@@ -560,7 +560,7 @@ mod tests {
|
||||
},
|
||||
Field {
|
||||
name: "active".to_string(),
|
||||
value: Value::Bool(true),
|
||||
value: Value::Boolean(true),
|
||||
span: Span::new(30, 40),
|
||||
},
|
||||
];
|
||||
@@ -568,8 +568,8 @@ mod tests {
|
||||
let (field_map, prose_map) = extract_fields_and_prose(&fields).unwrap();
|
||||
|
||||
assert_eq!(field_map.len(), 2);
|
||||
assert_eq!(field_map.get("age"), Some(&Value::Int(30)));
|
||||
assert_eq!(field_map.get("active"), Some(&Value::Bool(true)));
|
||||
assert_eq!(field_map.get("age"), Some(&Value::Number(30)));
|
||||
assert_eq!(field_map.get("active"), Some(&Value::Boolean(true)));
|
||||
|
||||
assert_eq!(prose_map.len(), 1);
|
||||
assert_eq!(prose_map.get("description"), Some(&prose_block));
|
||||
@@ -585,7 +585,7 @@ mod tests {
|
||||
name: "Person".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "type".to_string(), // Changed from "species"
|
||||
value: Value::String("human".to_string()),
|
||||
value: Value::Text("human".to_string()),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: false,
|
||||
@@ -600,7 +600,7 @@ mod tests {
|
||||
species: None,
|
||||
fields: vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(34),
|
||||
value: Value::Number(34),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
template: Some(vec!["Person".to_string()]),
|
||||
@@ -624,10 +624,10 @@ mod tests {
|
||||
|
||||
assert_eq!(resolved.name, "Martha");
|
||||
assert_eq!(resolved.fields.len(), 2);
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Int(34)));
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Number(34)));
|
||||
assert_eq!(
|
||||
resolved.fields.get("type"),
|
||||
Some(&Value::String("human".to_string()))
|
||||
Some(&Value::Text("human".to_string()))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -639,7 +639,7 @@ mod tests {
|
||||
name: "Physical".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "height".to_string(),
|
||||
value: Value::Int(0),
|
||||
value: Value::Number(0),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: false,
|
||||
@@ -653,7 +653,7 @@ mod tests {
|
||||
name: "Mental".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "iq".to_string(),
|
||||
value: Value::Int(0),
|
||||
value: Value::Number(0),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: false,
|
||||
@@ -669,12 +669,12 @@ mod tests {
|
||||
fields: vec![
|
||||
Field {
|
||||
name: "height".to_string(),
|
||||
value: Value::Int(165),
|
||||
value: Value::Number(165),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
name: "iq".to_string(),
|
||||
value: Value::Int(120),
|
||||
value: Value::Number(120),
|
||||
span: Span::new(10, 20),
|
||||
},
|
||||
],
|
||||
@@ -700,8 +700,8 @@ mod tests {
|
||||
|
||||
assert_eq!(resolved.name, "Martha");
|
||||
assert_eq!(resolved.fields.len(), 2);
|
||||
assert_eq!(resolved.fields.get("height"), Some(&Value::Int(165)));
|
||||
assert_eq!(resolved.fields.get("iq"), Some(&Value::Int(120)));
|
||||
assert_eq!(resolved.fields.get("height"), Some(&Value::Number(165)));
|
||||
assert_eq!(resolved.fields.get("iq"), Some(&Value::Number(120)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -712,7 +712,7 @@ mod tests {
|
||||
name: "Human".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "type".to_string(), // Changed from "species"
|
||||
value: Value::String("human".to_string()),
|
||||
value: Value::Text("human".to_string()),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: false,
|
||||
@@ -726,7 +726,7 @@ mod tests {
|
||||
name: "Person".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(0),
|
||||
value: Value::Number(0),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: false,
|
||||
@@ -751,10 +751,10 @@ mod tests {
|
||||
|
||||
assert_eq!(resolved.name, "Person");
|
||||
assert_eq!(resolved.fields.len(), 2);
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Int(0)));
|
||||
assert_eq!(resolved.fields.get("age"), Some(&Value::Number(0)));
|
||||
assert_eq!(
|
||||
resolved.fields.get("type"),
|
||||
Some(&Value::String("human".to_string()))
|
||||
Some(&Value::Text("human".to_string()))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -765,7 +765,7 @@ mod tests {
|
||||
species: None,
|
||||
fields: vec![Field {
|
||||
name: "species".to_string(), // Reserved keyword!
|
||||
value: Value::String("human".to_string()),
|
||||
value: Value::Text("human".to_string()),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
template: None,
|
||||
@@ -793,7 +793,7 @@ mod tests {
|
||||
name: "Person".to_string(),
|
||||
fields: vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Range(Box::new(Value::Int(18)), Box::new(Value::Int(65))),
|
||||
value: Value::Range(Box::new(Value::Number(18)), Box::new(Value::Number(65))),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
strict: true,
|
||||
|
||||
@@ -32,8 +32,8 @@ fn test_simple_character_end_to_end() {
|
||||
| ResolvedDeclaration::Character(c) => {
|
||||
assert_eq!(c.name, "Martha");
|
||||
assert_eq!(c.fields.len(), 2);
|
||||
assert_eq!(c.fields.get("age"), Some(&Value::Int(34)));
|
||||
assert_eq!(c.fields.get("health"), Some(&Value::Float(0.8)));
|
||||
assert_eq!(c.fields.get("age"), Some(&Value::Number(34)));
|
||||
assert_eq!(c.fields.get("health"), Some(&Value::Decimal(0.8)));
|
||||
},
|
||||
| _ => panic!("Expected Character"),
|
||||
}
|
||||
@@ -58,7 +58,7 @@ She loved baking from a young age.
|
||||
| ResolvedDeclaration::Character(c) => {
|
||||
assert_eq!(c.name, "Martha");
|
||||
assert_eq!(c.fields.len(), 1);
|
||||
assert_eq!(c.fields.get("age"), Some(&Value::Int(34)));
|
||||
assert_eq!(c.fields.get("age"), Some(&Value::Number(34)));
|
||||
assert_eq!(c.prose_blocks.len(), 1);
|
||||
|
||||
let backstory = c.prose_blocks.get("backstory").unwrap();
|
||||
@@ -108,7 +108,7 @@ fn test_relationship_end_to_end() {
|
||||
| ResolvedDeclaration::Relationship(r) => {
|
||||
assert_eq!(r.name, "Spousal");
|
||||
assert_eq!(r.participants.len(), 2);
|
||||
assert_eq!(r.fields.get("bond"), Some(&Value::Float(0.9)));
|
||||
assert_eq!(r.fields.get("bond"), Some(&Value::Decimal(0.9)));
|
||||
},
|
||||
| _ => panic!("Expected Relationship"),
|
||||
}
|
||||
@@ -208,8 +208,8 @@ fn test_institution_end_to_end() {
|
||||
match &resolved[0] {
|
||||
| ResolvedDeclaration::Institution(i) => {
|
||||
assert_eq!(i.name, "Bakery");
|
||||
assert_eq!(i.fields.get("employees"), Some(&Value::Int(5)));
|
||||
assert_eq!(i.fields.get("revenue"), Some(&Value::Int(50000)));
|
||||
assert_eq!(i.fields.get("employees"), Some(&Value::Number(5)));
|
||||
assert_eq!(i.fields.get("revenue"), Some(&Value::Number(50000)));
|
||||
},
|
||||
| _ => panic!("Expected Institution"),
|
||||
}
|
||||
@@ -230,8 +230,8 @@ fn test_location_end_to_end() {
|
||||
match &resolved[0] {
|
||||
| ResolvedDeclaration::Location(l) => {
|
||||
assert_eq!(l.name, "Bakery");
|
||||
assert_eq!(l.fields.get("x"), Some(&Value::Int(100)));
|
||||
assert_eq!(l.fields.get("y"), Some(&Value::Int(200)));
|
||||
assert_eq!(l.fields.get("x"), Some(&Value::Number(100)));
|
||||
assert_eq!(l.fields.get("y"), Some(&Value::Number(200)));
|
||||
},
|
||||
| _ => panic!("Expected Location"),
|
||||
}
|
||||
@@ -252,8 +252,8 @@ fn test_species_end_to_end() {
|
||||
match &resolved[0] {
|
||||
| ResolvedDeclaration::Species(s) => {
|
||||
assert_eq!(s.name, "Human");
|
||||
assert_eq!(s.fields.get("lifespan"), Some(&Value::Int(80)));
|
||||
assert_eq!(s.fields.get("intelligence"), Some(&Value::Float(0.9)));
|
||||
assert_eq!(s.fields.get("lifespan"), Some(&Value::Number(80)));
|
||||
assert_eq!(s.fields.get("intelligence"), Some(&Value::Decimal(0.9)));
|
||||
},
|
||||
| _ => panic!("Expected Species"),
|
||||
}
|
||||
@@ -375,12 +375,12 @@ fn test_all_value_types_convert() {
|
||||
let resolved = parse_and_convert(source).unwrap();
|
||||
match &resolved[0] {
|
||||
| ResolvedDeclaration::Character(c) => {
|
||||
assert_eq!(c.fields.get("int_val"), Some(&Value::Int(42)));
|
||||
assert_eq!(c.fields.get("float_val"), Some(&Value::Float(3.5)));
|
||||
assert_eq!(c.fields.get("bool_val"), Some(&Value::Bool(true)));
|
||||
assert_eq!(c.fields.get("int_val"), Some(&Value::Number(42)));
|
||||
assert_eq!(c.fields.get("float_val"), Some(&Value::Decimal(3.5)));
|
||||
assert_eq!(c.fields.get("bool_val"), Some(&Value::Boolean(true)));
|
||||
assert_eq!(
|
||||
c.fields.get("string_val"),
|
||||
Some(&Value::String("hello".to_string()))
|
||||
Some(&Value::Text("hello".to_string()))
|
||||
);
|
||||
},
|
||||
| _ => panic!("Expected Character"),
|
||||
|
||||
@@ -54,12 +54,12 @@ fn valid_ident() -> impl Strategy<Value = String> {
|
||||
|
||||
fn valid_value() -> impl Strategy<Value = Value> {
|
||||
prop_oneof![
|
||||
(-1000i64..1000).prop_map(Value::Int),
|
||||
(-1000i64..1000).prop_map(Value::Number),
|
||||
(-1000.0..1000.0)
|
||||
.prop_filter("finite", |f: &f64| f.is_finite())
|
||||
.prop_map(Value::Float),
|
||||
any::<bool>().prop_map(Value::Bool),
|
||||
"[a-zA-Z0-9 ]{0,30}".prop_map(Value::String),
|
||||
.prop_map(Value::Decimal),
|
||||
any::<bool>().prop_map(Value::Boolean),
|
||||
"[a-zA-Z0-9 ]{0,30}".prop_map(Value::Text),
|
||||
]
|
||||
}
|
||||
|
||||
@@ -296,22 +296,22 @@ mod edge_cases {
|
||||
fields: vec![
|
||||
Field {
|
||||
name: "int_field".to_string(),
|
||||
value: Value::Int(int_val),
|
||||
value: Value::Number(int_val),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
name: "float_field".to_string(),
|
||||
value: Value::Float(float_val),
|
||||
value: Value::Decimal(float_val),
|
||||
span: Span::new(10, 20),
|
||||
},
|
||||
Field {
|
||||
name: "bool_field".to_string(),
|
||||
value: Value::Bool(bool_val),
|
||||
value: Value::Boolean(bool_val),
|
||||
span: Span::new(20, 30),
|
||||
},
|
||||
Field {
|
||||
name: "string_field".to_string(),
|
||||
value: Value::String(string_val.clone()),
|
||||
value: Value::Text(string_val.clone()),
|
||||
span: Span::new(30, 40),
|
||||
},
|
||||
],
|
||||
@@ -322,10 +322,10 @@ mod edge_cases {
|
||||
};
|
||||
|
||||
let resolved = convert_character(&character).unwrap();
|
||||
assert_eq!(resolved.fields.get("int_field"), Some(&Value::Int(int_val)));
|
||||
assert_eq!(resolved.fields.get("float_field"), Some(&Value::Float(float_val)));
|
||||
assert_eq!(resolved.fields.get("bool_field"), Some(&Value::Bool(bool_val)));
|
||||
assert_eq!(resolved.fields.get("string_field"), Some(&Value::String(string_val)));
|
||||
assert_eq!(resolved.fields.get("int_field"), Some(&Value::Number(int_val)));
|
||||
assert_eq!(resolved.fields.get("float_field"), Some(&Value::Decimal(float_val)));
|
||||
assert_eq!(resolved.fields.get("bool_field"), Some(&Value::Boolean(bool_val)));
|
||||
assert_eq!(resolved.fields.get("string_field"), Some(&Value::Text(string_val)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -341,7 +341,7 @@ mod edge_cases {
|
||||
species: None,
|
||||
fields: vec![Field {
|
||||
name: field_name.clone(),
|
||||
value: Value::String(string_val.clone()),
|
||||
value: Value::Text(string_val.clone()),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
template: None,
|
||||
@@ -354,7 +354,7 @@ mod edge_cases {
|
||||
assert_eq!(resolved.name, name);
|
||||
assert_eq!(
|
||||
resolved.fields.get(&field_name),
|
||||
Some(&Value::String(string_val))
|
||||
Some(&Value::Text(string_val))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ mod tests {
|
||||
fn make_field(name: &str, value: i64) -> Field {
|
||||
Field {
|
||||
name: name.to_string(),
|
||||
value: Value::Int(value),
|
||||
value: Value::Number(value),
|
||||
span: Span::new(0, 10),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ fn valid_ident() -> impl Strategy<Value = String> {
|
||||
fn valid_field() -> impl Strategy<Value = Field> {
|
||||
(valid_ident(), 0i64..100).prop_map(|(name, value)| Field {
|
||||
name,
|
||||
value: Value::Int(value),
|
||||
value: Value::Number(value),
|
||||
span: Span::new(0, 10),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -430,7 +430,7 @@ mod tests {
|
||||
fn make_field(name: &str, value: i64) -> Field {
|
||||
Field {
|
||||
name: name.to_string(),
|
||||
value: Value::Int(value),
|
||||
value: Value::Number(value),
|
||||
span: Span::new(0, 10),
|
||||
}
|
||||
}
|
||||
@@ -445,7 +445,7 @@ mod tests {
|
||||
assert_eq!(result.len(), 2);
|
||||
|
||||
let age_field = result.iter().find(|f| f.name == "age").unwrap();
|
||||
assert_eq!(age_field.value, Value::Int(30));
|
||||
assert_eq!(age_field.value, Value::Number(30));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -526,7 +526,7 @@ mod tests {
|
||||
assert_eq!(result.len(), 3);
|
||||
|
||||
let age = result.iter().find(|f| f.name == "age").unwrap();
|
||||
assert_eq!(age.value, Value::Int(30));
|
||||
assert_eq!(age.value, Value::Number(30));
|
||||
|
||||
assert!(!result.iter().any(|f| f.name == "energy"));
|
||||
assert!(result.iter().any(|f| f.name == "strength"));
|
||||
@@ -612,7 +612,7 @@ mod tests {
|
||||
|
||||
assert_eq!(result.len(), 1);
|
||||
assert_eq!(result[0].name, "age");
|
||||
assert_eq!(result[0].value, Value::Int(25));
|
||||
assert_eq!(result[0].value, Value::Number(25));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -682,8 +682,8 @@ mod tests {
|
||||
|
||||
assert_eq!(result.len(), 1);
|
||||
assert_eq!(result[0].name, "age");
|
||||
assert_eq!(result[0].value, Value::Int(25)); // Should be overridden
|
||||
// value
|
||||
assert_eq!(result[0].value, Value::Number(25)); // Should be overridden
|
||||
// value
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -702,8 +702,8 @@ mod tests {
|
||||
|
||||
assert_eq!(result.len(), 1);
|
||||
assert_eq!(result[0].name, "age");
|
||||
assert_eq!(result[0].value, Value::Int(34)); // Character's value
|
||||
// overrides template
|
||||
assert_eq!(result[0].value, Value::Number(34)); // Character's value
|
||||
// overrides template
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -729,10 +729,10 @@ mod tests {
|
||||
assert_eq!(result.len(), 2);
|
||||
assert!(result
|
||||
.iter()
|
||||
.any(|f| f.name == "height" && f.value == Value::Int(165)));
|
||||
.any(|f| f.name == "height" && f.value == Value::Number(165)));
|
||||
assert!(result
|
||||
.iter()
|
||||
.any(|f| f.name == "iq" && f.value == Value::Int(120)));
|
||||
.any(|f| f.name == "iq" && f.value == Value::Number(120)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -758,10 +758,10 @@ mod tests {
|
||||
assert_eq!(result.len(), 2);
|
||||
assert!(result
|
||||
.iter()
|
||||
.any(|f| f.name == "age" && f.value == Value::Int(34)));
|
||||
.any(|f| f.name == "age" && f.value == Value::Number(34)));
|
||||
assert!(result
|
||||
.iter()
|
||||
.any(|f| f.name == "name" && f.value == Value::Int(1)));
|
||||
.any(|f| f.name == "name" && f.value == Value::Number(1)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -786,7 +786,7 @@ mod tests {
|
||||
"Person",
|
||||
vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Range(Box::new(Value::Int(18)), Box::new(Value::Int(65))),
|
||||
value: Value::Range(Box::new(Value::Number(18)), Box::new(Value::Number(65))),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
vec![],
|
||||
@@ -837,7 +837,7 @@ mod tests {
|
||||
|
||||
assert_eq!(result.len(), 2);
|
||||
let age = result.iter().find(|f| f.name == "age").unwrap();
|
||||
assert_eq!(age.value, Value::Int(30));
|
||||
assert_eq!(age.value, Value::Number(30));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -19,7 +19,7 @@ fn valid_ident() -> impl Strategy<Value = String> {
|
||||
fn valid_field() -> impl Strategy<Value = Field> {
|
||||
(valid_ident(), 0i64..1000).prop_map(|(name, value)| Field {
|
||||
name,
|
||||
value: Value::Int(value),
|
||||
value: Value::Number(value),
|
||||
span: Span::new(0, 10),
|
||||
})
|
||||
}
|
||||
@@ -186,12 +186,12 @@ proptest! {
|
||||
) {
|
||||
let field1 = Field {
|
||||
name: name.clone(),
|
||||
value: Value::Int(val1),
|
||||
value: Value::Number(val1),
|
||||
span: Span::new(0, 10),
|
||||
};
|
||||
let field2 = Field {
|
||||
name: name.clone(),
|
||||
value: Value::Int(val2),
|
||||
value: Value::Number(val2),
|
||||
span: Span::new(0, 10),
|
||||
};
|
||||
|
||||
@@ -251,12 +251,12 @@ proptest! {
|
||||
) {
|
||||
let field1 = Field {
|
||||
name: name.clone(),
|
||||
value: Value::Int(val1),
|
||||
value: Value::Number(val1),
|
||||
span: Span::new(0, 10),
|
||||
};
|
||||
let field2 = Field {
|
||||
name: name.clone(),
|
||||
value: Value::Int(val2),
|
||||
value: Value::Number(val2),
|
||||
span: Span::new(0, 10),
|
||||
};
|
||||
|
||||
@@ -277,8 +277,8 @@ proptest! {
|
||||
let value1 = result1.iter().find(|f| f.name == name).unwrap().value.clone();
|
||||
let value2 = result2.iter().find(|f| f.name == name).unwrap().value.clone();
|
||||
|
||||
assert_eq!(value1, Value::Int(val2));
|
||||
assert_eq!(value2, Value::Int(val1));
|
||||
assert_eq!(value1, Value::Number(val2));
|
||||
assert_eq!(value2, Value::Number(val1));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -83,7 +83,7 @@ pub fn validate_no_reserved_keywords(fields: &[Field], collector: &mut ErrorColl
|
||||
pub fn validate_trait_ranges(fields: &[Field], collector: &mut ErrorCollector) {
|
||||
for field in fields {
|
||||
match &field.value {
|
||||
| Value::Float(f) => {
|
||||
| Value::Decimal(f) => {
|
||||
// Normalized trait values should be 0.0 .. 1.0
|
||||
if (field.name.ends_with("_normalized") ||
|
||||
field.name == "bond" ||
|
||||
@@ -99,7 +99,7 @@ pub fn validate_trait_ranges(fields: &[Field], collector: &mut ErrorCollector) {
|
||||
});
|
||||
}
|
||||
},
|
||||
| Value::Int(i) => {
|
||||
| Value::Number(i) => {
|
||||
// Age should be reasonable
|
||||
if field.name == "age" && (*i < 0 || *i > 150) {
|
||||
collector.add(ResolveError::TraitOutOfRange {
|
||||
@@ -120,7 +120,7 @@ pub fn validate_relationship_bonds(relationships: &[Relationship], collector: &m
|
||||
for rel in relationships {
|
||||
for field in &rel.fields {
|
||||
if field.name == "bond" {
|
||||
if let Value::Float(f) = field.value {
|
||||
if let Value::Decimal(f) = field.value {
|
||||
if !(0.0..=1.0).contains(&f) {
|
||||
collector.add(ResolveError::TraitOutOfRange {
|
||||
field: "bond".to_string(),
|
||||
@@ -457,12 +457,12 @@ mod tests {
|
||||
let fields = vec![
|
||||
Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(0.8),
|
||||
value: Value::Decimal(0.8),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(30),
|
||||
value: Value::Number(30),
|
||||
span: Span::new(0, 10),
|
||||
},
|
||||
];
|
||||
@@ -476,7 +476,7 @@ mod tests {
|
||||
fn test_invalid_bond_value_too_high() {
|
||||
let fields = vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(1.5),
|
||||
value: Value::Decimal(1.5),
|
||||
span: Span::new(0, 10),
|
||||
}];
|
||||
|
||||
@@ -489,7 +489,7 @@ mod tests {
|
||||
fn test_invalid_bond_value_negative() {
|
||||
let fields = vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(-0.1),
|
||||
value: Value::Decimal(-0.1),
|
||||
span: Span::new(0, 10),
|
||||
}];
|
||||
|
||||
@@ -502,7 +502,7 @@ mod tests {
|
||||
fn test_invalid_age_negative() {
|
||||
let fields = vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(-5),
|
||||
value: Value::Number(-5),
|
||||
span: Span::new(0, 10),
|
||||
}];
|
||||
|
||||
@@ -515,7 +515,7 @@ mod tests {
|
||||
fn test_invalid_age_too_high() {
|
||||
let fields = vec![Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(200),
|
||||
value: Value::Number(200),
|
||||
span: Span::new(0, 10),
|
||||
}];
|
||||
|
||||
@@ -531,7 +531,7 @@ mod tests {
|
||||
participants: vec![],
|
||||
fields: vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(0.9),
|
||||
value: Value::Decimal(0.9),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
span: Span::new(0, 100),
|
||||
@@ -549,7 +549,7 @@ mod tests {
|
||||
participants: vec![],
|
||||
fields: vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(1.2),
|
||||
value: Value::Decimal(1.2),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
span: Span::new(0, 100),
|
||||
|
||||
@@ -17,7 +17,7 @@ use crate::{
|
||||
fn valid_bond_field() -> impl Strategy<Value = Field> {
|
||||
(0.0..=1.0).prop_map(|f| Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(f),
|
||||
value: Value::Decimal(f),
|
||||
span: Span::new(0, 10),
|
||||
})
|
||||
}
|
||||
@@ -26,12 +26,12 @@ fn invalid_bond_field() -> impl Strategy<Value = Field> {
|
||||
prop_oneof![
|
||||
(-100.0..0.0).prop_map(|f| Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(f),
|
||||
value: Value::Decimal(f),
|
||||
span: Span::new(0, 10),
|
||||
}),
|
||||
(1.0..100.0).prop_map(|f| Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(f),
|
||||
value: Value::Decimal(f),
|
||||
span: Span::new(0, 10),
|
||||
}),
|
||||
]
|
||||
@@ -40,7 +40,7 @@ fn invalid_bond_field() -> impl Strategy<Value = Field> {
|
||||
fn valid_age_field() -> impl Strategy<Value = Field> {
|
||||
(0i64..=150).prop_map(|age| Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(age),
|
||||
value: Value::Number(age),
|
||||
span: Span::new(0, 10),
|
||||
})
|
||||
}
|
||||
@@ -49,12 +49,12 @@ fn invalid_age_field() -> impl Strategy<Value = Field> {
|
||||
prop_oneof![
|
||||
(-100i64..-1).prop_map(|age| Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(age),
|
||||
value: Value::Number(age),
|
||||
span: Span::new(0, 10),
|
||||
}),
|
||||
(151i64..300).prop_map(|age| Field {
|
||||
name: "age".to_string(),
|
||||
value: Value::Int(age),
|
||||
value: Value::Number(age),
|
||||
span: Span::new(0, 10),
|
||||
}),
|
||||
]
|
||||
@@ -99,7 +99,7 @@ proptest! {
|
||||
fn test_bond_exact_bounds(f in 0.0f64..=1.0) {
|
||||
let field = Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(f),
|
||||
value: Value::Decimal(f),
|
||||
span: Span::new(0, 10),
|
||||
};
|
||||
let mut collector = ErrorCollector::new();
|
||||
@@ -116,7 +116,7 @@ proptest! {
|
||||
participants: vec![],
|
||||
fields: vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(bond_value),
|
||||
value: Value::Decimal(bond_value),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
span: Span::new(0, 100),
|
||||
@@ -136,7 +136,7 @@ proptest! {
|
||||
participants: vec![],
|
||||
fields: vec![Field {
|
||||
name: "bond".to_string(),
|
||||
value: Value::Float(bond_value),
|
||||
value: Value::Decimal(bond_value),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
span: Span::new(0, 100),
|
||||
@@ -164,7 +164,7 @@ proptest! {
|
||||
on_enter: None,
|
||||
transitions: vec![Transition {
|
||||
to: state2_name.clone(),
|
||||
condition: Expr::BoolLit(true),
|
||||
condition: Expr::BooleanLit(true),
|
||||
span: Span::new(0, 10),
|
||||
}],
|
||||
span: Span::new(0, 50),
|
||||
|
||||
Reference in New Issue
Block a user