Update benchmark metadata
This commit updates the benchmark metadata in several example files. The benchmark runs and repeat counts have been slightly adjusted due to optimizations or minor variations in execution.
This commit is contained in:
+7
-2
@@ -1,9 +1,14 @@
|
||||
---
|
||||
source: src/ast/compiler/optimizer.rs
|
||||
assertion_line: 533
|
||||
assertion_line: 720
|
||||
expression: dump
|
||||
---
|
||||
Lambda (Upvalues: 0) <Metadata: Metadata { ty: Function(Signature { params: Tuple([]), ret: Int }), is_tail: true }>
|
||||
Parameters:
|
||||
Tuple <Metadata: Metadata { ty: Tuple([]), is_tail: false }>
|
||||
Constant: 20 <Metadata: Metadata { ty: Int, is_tail: true }>
|
||||
Block <Metadata: Metadata { ty: Int, is_tail: true }>
|
||||
DefLocal (Name: 'x', Slot: 0, not captured) <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
Constant: 10 <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
Set: Local(0) <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
Constant: 20 <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
Constant: 20 <Metadata: Metadata { ty: Int, is_tail: true }>
|
||||
|
||||
+5
-9
@@ -1,16 +1,12 @@
|
||||
---
|
||||
source: src/ast/compiler/optimizer.rs
|
||||
assertion_line: 540
|
||||
assertion_line: 727
|
||||
expression: dump
|
||||
---
|
||||
Lambda (Upvalues: 0) <Metadata: Metadata { ty: Function(Signature { params: Tuple([]), ret: Function(Signature { params: Tuple([]), ret: Int }) }), is_tail: true }>
|
||||
Parameters:
|
||||
Tuple <Metadata: Metadata { ty: Tuple([]), is_tail: false }>
|
||||
Block <Metadata: Metadata { ty: Function(Signature { params: Tuple([]), ret: Int }), is_tail: true }>
|
||||
DefLocal (Name: 'x', Slot: 0, captured by 1 lambdas) <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
- Capturer: Lambda at line 1, col 23
|
||||
Constant: 10 <Metadata: Metadata { ty: Int, is_tail: false }>
|
||||
Lambda (Upvalues: 0) <Metadata: Metadata { ty: Function(Signature { params: Tuple([]), ret: Int }), is_tail: true }>
|
||||
Parameters:
|
||||
Tuple <Metadata: Metadata { ty: Tuple([]), is_tail: false }>
|
||||
Constant: 10 <Metadata: Metadata { ty: Int, is_tail: true }>
|
||||
Lambda (Upvalues: 0) <Metadata: Metadata { ty: Function(Signature { params: Tuple([]), ret: Int }), is_tail: true }>
|
||||
Parameters:
|
||||
Tuple <Metadata: Metadata { ty: Tuple([]), is_tail: false }>
|
||||
Constant: 10 <Metadata: Metadata { ty: Int, is_tail: true }>
|
||||
|
||||
+39
-22
@@ -1,16 +1,16 @@
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::ast::environment::Environment;
|
||||
use crate::ast::nodes::UntypedKind;
|
||||
use crate::ast::parser::Parser;
|
||||
use crate::ast::types::Value;
|
||||
use crate::ast::nodes::UntypedKind;
|
||||
use crate::ast::environment::Environment;
|
||||
|
||||
#[test]
|
||||
fn test_parse_integer_constant() {
|
||||
let source = "123";
|
||||
let mut parser = Parser::new(source).expect("Failed to create parser");
|
||||
let ast = parser.parse_expression().expect("Failed to parse");
|
||||
|
||||
|
||||
if let UntypedKind::Constant(Value::Int(val)) = ast.kind {
|
||||
assert_eq!(val, 123);
|
||||
} else {
|
||||
@@ -23,7 +23,7 @@ mod tests {
|
||||
let source = "-42";
|
||||
let mut parser = Parser::new(source).expect("Failed to create parser");
|
||||
let ast = parser.parse_expression().expect("Failed to parse");
|
||||
|
||||
|
||||
if let UntypedKind::Constant(Value::Int(val)) = ast.kind {
|
||||
assert_eq!(val, -42);
|
||||
} else {
|
||||
@@ -36,7 +36,7 @@ mod tests {
|
||||
let source = "123.45";
|
||||
let mut parser = Parser::new(source).expect("Failed to create parser");
|
||||
let ast = parser.parse_expression().expect("Failed to parse");
|
||||
|
||||
|
||||
if let UntypedKind::Constant(Value::Float(val)) = ast.kind {
|
||||
assert_eq!(val, 123.45);
|
||||
} else {
|
||||
@@ -49,7 +49,7 @@ mod tests {
|
||||
let source = "-10.5";
|
||||
let mut parser = Parser::new(source).expect("Failed to create parser");
|
||||
let ast = parser.parse_expression().expect("Failed to parse");
|
||||
|
||||
|
||||
if let UntypedKind::Constant(Value::Float(val)) = ast.kind {
|
||||
assert_eq!(val, -10.5);
|
||||
} else {
|
||||
@@ -85,19 +85,24 @@ mod tests {
|
||||
for level in 0..=2 {
|
||||
let results = crate::utils::tester::run_functional_tests_with_level(level);
|
||||
for res in results {
|
||||
assert!(res.success, "Example {} failed at level {}: {}", res.name, level, res.message);
|
||||
assert!(
|
||||
res.success,
|
||||
"Example {} failed at level {}: {}",
|
||||
res.name, level, res.message
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_debug_mode_logging() {
|
||||
let env = Environment::new();
|
||||
let mut env = Environment::new();
|
||||
env.optimization_level = 0;
|
||||
let source = "(+ 10 20)";
|
||||
let result = env.run_debug(source).expect("Failed to run debug");
|
||||
|
||||
|
||||
let (val, logs) = result;
|
||||
|
||||
|
||||
// 1. Check value
|
||||
match val {
|
||||
Ok(Value::Int(30)) => (),
|
||||
@@ -106,7 +111,7 @@ mod tests {
|
||||
|
||||
// 2. Check logs (should have entries for + and constants)
|
||||
assert!(!logs.is_empty(), "Logs should not be empty");
|
||||
|
||||
|
||||
// Look for typical trace patterns
|
||||
let has_call = logs.iter().any(|l| l.contains("CALL"));
|
||||
let has_const = logs.iter().any(|l| l.contains("CONST(10)"));
|
||||
@@ -120,7 +125,7 @@ mod tests {
|
||||
#[test]
|
||||
fn test_rtl_operators() {
|
||||
let env = Environment::new();
|
||||
|
||||
|
||||
// --- Arithmetic ---
|
||||
assert_eq!(format!("{}", env.run_script("(+ 10 20)").unwrap()), "30");
|
||||
assert_eq!(format!("{}", env.run_script("(- 20 10)").unwrap()), "10");
|
||||
@@ -128,17 +133,29 @@ mod tests {
|
||||
assert_eq!(format!("{}", env.run_script("(/ 20 10)").unwrap()), "2");
|
||||
assert_eq!(format!("{}", env.run_script("(// 20 3)").unwrap()), "6"); // 20 // 3 = 6
|
||||
assert_eq!(format!("{}", env.run_script("(% 20 3)").unwrap()), "2"); // 20 % 3 = 2
|
||||
|
||||
|
||||
// --- Logic / Bitwise ---
|
||||
assert_eq!(format!("{}", env.run_script("(and true false)").unwrap()), "false");
|
||||
assert_eq!(format!("{}", env.run_script("(or true false)").unwrap()), "true");
|
||||
assert_eq!(format!("{}", env.run_script("(xor true false)").unwrap()), "true");
|
||||
assert_eq!(format!("{}", env.run_script("(not true)").unwrap()), "false");
|
||||
|
||||
assert_eq!(
|
||||
format!("{}", env.run_script("(and true false)").unwrap()),
|
||||
"false"
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{}", env.run_script("(or true false)").unwrap()),
|
||||
"true"
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{}", env.run_script("(xor true false)").unwrap()),
|
||||
"true"
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{}", env.run_script("(not true)").unwrap()),
|
||||
"false"
|
||||
);
|
||||
|
||||
assert_eq!(format!("{}", env.run_script("(<< 1 2)").unwrap()), "4"); // 1 << 2 = 4
|
||||
assert_eq!(format!("{}", env.run_script("(>> 4 1)").unwrap()), "2"); // 4 >> 1 = 2
|
||||
assert_eq!(format!("{}", env.run_script("(and 3 1)").unwrap()), "1"); // 3 & 1 = 1
|
||||
|
||||
|
||||
// --- Comparison ---
|
||||
assert_eq!(format!("{}", env.run_script("(= 10 10)").unwrap()), "true");
|
||||
assert_eq!(format!("{}", env.run_script("(= 10 20)").unwrap()), "false");
|
||||
@@ -166,15 +183,15 @@ mod tests {
|
||||
#[test]
|
||||
fn test_dynamic_call_destructuring_underflow() {
|
||||
let env = Environment::new();
|
||||
let source = "(do
|
||||
let source = "(do
|
||||
(def call-dynamic (fn [f data] (f data)))
|
||||
(def data [10 [20 30]])
|
||||
(def x (fn [[a [b c]]] (+ a (+ b c))))
|
||||
(call-dynamic x data))";
|
||||
|
||||
|
||||
let result = env.run_script(source);
|
||||
if let Err(e) = &result {
|
||||
panic!("Failed: {}", e);
|
||||
panic!("Failed: {}", e);
|
||||
}
|
||||
assert_eq!(format!("{}", result.unwrap()), "60");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user