git.delta.rocks / jrsonnet / refs/commits / a1d4291c87ac

difftreelog

source

tests/tests/common.rs2.1 KiBsourcehistory
1use jrsonnet_evaluator::{2	error::Result,3	function::{builtin, FuncVal},4	throw, ObjValueBuilder, State, Thunk, Val,5};67#[macro_export]8macro_rules! ensure_eq {9	($a:expr, $b:expr $(,)?) => {{10		let a = &$a;11		let b = &$b;12		if a != b {13			::jrsonnet_evaluator::throw!("assertion failed: a != b\na={:#?}\nb={:#?}", a, b)14		}15	}};16}1718#[macro_export]19macro_rules! ensure {20	($v:expr $(,)?) => {21		if !$v {22			::jrsonnet_evaluator::throw!("assertion failed: {}", stringify!($v))23		}24	};25}2627#[macro_export]28macro_rules! ensure_val_eq {29	($a:expr, $b:expr) => {{30		if !::jrsonnet_evaluator::val::equals(&$a.clone(), &$b.clone())? {31			use ::jrsonnet_evaluator::manifest::JsonFormat;32			::jrsonnet_evaluator::throw!(33				"assertion failed: a != b\na={:#?}\nb={:#?}",34				$a.manifest(JsonFormat::default())?,35				$b.manifest(JsonFormat::default())?,36			)37		}38	}};39}4041#[builtin]42fn assert_throw(lazy: Thunk<Val>, message: String) -> Result<bool> {43	match lazy.evaluate() {44		Ok(_) => {45			throw!("expected argument to throw on evaluation, but it returned instead")46		}47		Err(e) => {48			let error = format!("{}", e.error());49			ensure_eq!(message, error);50		}51	}52	Ok(true)53}5455#[builtin]56fn param_names(fun: FuncVal) -> Vec<String> {57	match fun {58		FuncVal::Id => vec!["x".to_string()],59		FuncVal::Normal(func) => func60			.params61			.iter()62			.map(|p| p.0.name().unwrap_or_else(|| "<unnamed>".into()).to_string())63			.collect(),64		FuncVal::StaticBuiltin(b) => b65			.params()66			.iter()67			.map(|p| p.name().as_str().unwrap_or(&"<unnamed>").to_string())68			.collect(),69		FuncVal::Builtin(b) => b70			.params()71			.iter()72			.map(|p| p.name().as_str().unwrap_or(&"<unnamed>").to_string())73			.collect(),74	}75}7677#[allow(dead_code)]78pub fn with_test(s: &State) {79	let mut bobj = ObjValueBuilder::new();80	bobj.member("assertThrow".into())81		.hide()82		.value_unchecked(Val::Func(FuncVal::StaticBuiltin(assert_throw::INST)));83	bobj.member("paramNames".into())84		.hide()85		.value_unchecked(Val::Func(FuncVal::StaticBuiltin(param_names::INST)));8687	s.add_global("test".into(), Thunk::evaluated(Val::Obj(bobj.build())))88}