use crate::{L1BlockInfo, OpSpecId, OpTransaction};
use revm::{
context::{BlockEnv, CfgEnv, TxEnv},
database_interface::EmptyDB,
Context, Journal, MainContext,
};
pub type OpContext<DB> =
Context<BlockEnv, OpTransaction<TxEnv>, CfgEnv<OpSpecId>, DB, Journal<DB>, L1BlockInfo>;
pub trait DefaultOp {
fn op() -> OpContext<EmptyDB>;
}
impl DefaultOp for OpContext<EmptyDB> {
fn op() -> Self {
Context::mainnet()
.with_tx(OpTransaction::default())
.with_cfg(CfgEnv::new_with_spec(OpSpecId::BEDROCK))
.with_chain(L1BlockInfo::default())
}
}
#[cfg(test)]
mod test {
use super::*;
use crate::api::builder::OpBuilder;
use revm::{
inspector::{InspectEvm, NoOpInspector},
ExecuteEvm,
};
#[test]
fn default_run_op() {
let ctx = Context::op();
let mut evm = ctx.build_op_with_inspector(NoOpInspector {});
let _ = evm.replay();
let _ = evm.inspect_replay();
}
}