Refactor: Remove integration tests and organize into modules
This commit refactors the test suite by removing the monolithic `integration_test.rs` file. The tests have been categorized and moved into dedicated modules within the `tests/` directory: - `tests/parser.rs`: Contains tests for parsing various literal values. - `tests/destructuring.rs`: Houses tests related to destructuring syntax. - `tests/closures.rs`: Includes tests for closure behavior and related optimizations. - `tests/optimizer.rs`: Contains tests specifically targeting optimizer logic and regressions. - `tests/records.rs`: Holds tests for record syntax and associated optimizations. - `tests/rtl.rs`: Contains tests for runtime library operators and functions. - `tests/pipeline.rs`: Tests for pipeline functionality. - `tests/macros.rs`: Tests for macro expansion and related issues. - `tests/error_recovery.rs`: Includes tests for compiler error handling and recovery mechanisms. - `tests/examples.rs`: Verifies the execution of example scripts. This reorganization improves test discoverability and maintainability. The `lib.rs` file has also been updated to reflect these changes by removing the reference to the old `integration_test` module. The `type_checker.rs` file has had some tests removed, as they are now covered by the more specific tests in `tests/error_recovery.rs`.
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
use myc::ast::environment::Environment;
|
||||
use myc::ast::types::Value;
|
||||
|
||||
#[test]
|
||||
fn test_pipeline_optional_type() {
|
||||
let env = Environment::new();
|
||||
// The lambda uses an `if` without an `else` returning a float constant.
|
||||
// The TypeChecker should deduce `Optional(Float)` for the lambda body,
|
||||
// and correctly unwrap it to `Series(Float)` for the pipeline output.
|
||||
let source = "(do
|
||||
(def src (create-random-ohlc 42 10))
|
||||
(def filtered
|
||||
(pipe [src]
|
||||
(fn [tick]
|
||||
(if true
|
||||
42.0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
filtered
|
||||
)";
|
||||
let res = env.run_script(source);
|
||||
if let Err(e) = &res {
|
||||
panic!("Script failed to compile/run: {:?}", e);
|
||||
}
|
||||
|
||||
let val = res.unwrap();
|
||||
if let Value::Object(obj) = val {
|
||||
assert_eq!(obj.type_name(), "StreamNode");
|
||||
} else {
|
||||
panic!("Expected an Object(StreamNode)");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user