git.delta.rocks / jrsonnet / refs/commits / 32f6ee5b9541

difftreelog

source

crates/jrsonnet-evaluator/tests/builtin.rs1.8 KiBsourcehistory
1mod common;23use std::path::PathBuf;45use gcmodule::Cc;6use jrsonnet_evaluator::{7	error::Result,8	function::{builtin, builtin::Builtin, CallLocation, FuncVal},9	tb,10	typed::Typed,11	State, Val,12};1314#[builtin]15fn a() -> Result<u32> {16	Ok(1)17}1819#[test]20fn basic_function() -> Result<()> {21	let s = State::default();22	let a: a = a {};23	let v = u32::from_untyped(24		a.call(25			s.clone(),26			s.create_default_context(),27			CallLocation::native(),28			&(),29		)?,30		s.clone(),31	)?;3233	ensure_eq!(v, 1);34	Ok(())35}3637#[builtin]38fn native_add(a: u32, b: u32) -> Result<u32> {39	Ok(a + b)40}4142#[test]43fn call_from_code() -> Result<()> {44	let s = State::default();45	s.with_stdlib();46	s.settings_mut().globals.insert(47		"nativeAdd".into(),48		Val::Func(FuncVal::StaticBuiltin(native_add::INST)),49	);5051	let v = s.evaluate_snippet_raw(52		PathBuf::new().into(),53		"54            assert nativeAdd(1, 2) == 3;55            assert nativeAdd(100, 200) == 300;56            null57        "58		.into(),59	)?;60	ensure_val_eq!(s.clone(), v, Val::Null);61	Ok(())62}6364#[builtin(fields(65    a: u3266))]67fn curried_add(this: &curried_add, b: u32) -> Result<u32> {68	Ok(this.a + b)69}7071#[builtin]72fn curry_add(a: u32) -> Result<FuncVal> {73	Ok(FuncVal::Builtin(Cc::new(tb!(curried_add { a }))))74}7576#[test]77fn nonstatic_builtin() -> Result<()> {78	let s = State::default();79	s.with_stdlib();80	s.settings_mut().globals.insert(81		"curryAdd".into(),82		Val::Func(FuncVal::StaticBuiltin(curry_add::INST)),83	);8485	let v = s.evaluate_snippet_raw(86		PathBuf::new().into(),87		"88            local a = curryAdd(1);89            local b = curryAdd(4);9091            assert a(2) == 3;92            assert a(200) == 201;9394            assert b(2) == 6;95            assert b(200) == 204;96            null97        "98		.into(),99	)?;100	ensure_val_eq!(s.clone(), v, Val::Null);101	Ok(())102}