#![cfg_attr(docsrs, feature(doc_cfg))]
#![forbid(unsafe_code)]
pub use wickra_backtest_core as core;
pub use wickra_backtest_data as data;
pub use wickra_backtest_core::*;
#[must_use]
pub fn version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn version_is_the_crate_version() {
assert_eq!(version(), env!("CARGO_PKG_VERSION"));
}
#[test]
fn a_report_and_the_type_of_its_metrics_field_are_both_reachable() {
fn takes(_: &BacktestReport, _: &Metrics) {}
let _ = takes;
let _: u32 = REPORT_SCHEMA_VERSION;
}
#[test]
fn the_streaming_handle_and_the_feeds_it_steps_with_are_both_reachable() {
fn steps(handle: &mut StreamingBacktest<'_>, candle: &Candle, feeds: &Feeds) -> Result<()> {
handle.step_with_feeds(candle, feeds)
}
let _ = steps;
}
#[test]
fn the_json_entry_point_and_its_request_type_are_reachable() {
fn takes(_: RunRequest) -> fn(&str) -> Result<String> {
run_json
}
let _ = takes;
}
#[test]
fn a_spec_can_be_built_from_typed_parts_not_only_parsed_from_json() {
let _: Option<Condition> = None;
let _: Option<Costs> = None;
let _: Option<Execution> = None;
let _: Option<Feed> = None;
let _: Option<FillTiming> = None;
let _: Option<IndicatorSpec> = None;
let _: Option<IntPredicate> = None;
let _: Option<Operand> = None;
let _: Option<OperandExpr> = None;
let _: Option<OrderType> = None;
let _: Option<PriceField> = None;
let _: Option<Risk> = None;
let _: Option<Sizing> = None;
let _: Option<Slippage> = None;
let _: u32 = SPEC_VERSION;
}
#[test]
fn the_data_types_the_engine_consumes_are_reachable() {
let _: Option<CrossSection> = None;
let _: Option<CrossSectionMember> = None;
let _: Option<Level> = None;
let _: Option<TradeSide> = None;
let _: Option<DerivativesTick> = None;
let _: Option<OrderBook> = None;
let _: Option<TradePrint> = None;
let _: Option<Trade> = None;
let _: f64 = DEFAULT_CAPITAL;
}
}