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

difftreelog

source

tests/tests/builtin.rs1.7 KiBsourcehistory
1mod common;23use jrsonnet_evaluator::{4	error::Result,5	function::{builtin, builtin::Builtin, CallLocation, FuncVal},6	tb,7	typed::Typed,8	ContextBuilder, State, Thunk, Val,9};10use jrsonnet_gcmodule::Cc;11use jrsonnet_stdlib::StateExt;1213#[builtin]14fn a() -> Result<u32> {15	Ok(1)16}1718#[test]19fn basic_function() -> Result<()> {20	let a: a = a {};21	let v = u32::from_untyped(a.call(22		ContextBuilder::dangerous_empty_state().build(),23		CallLocation::native(),24		&(),25	)?)?;2627	ensure_eq!(v, 1);28	Ok(())29}3031#[builtin]32fn native_add(a: u32, b: u32) -> Result<u32> {33	Ok(a + b)34}3536#[test]37fn call_from_code() -> Result<()> {38	let s = State::default();39	s.with_stdlib();40	s.add_global(41		"nativeAdd".into(),42		Thunk::evaluated(Val::Func(FuncVal::StaticBuiltin(native_add::INST))),43	);4445	let v = s.evaluate_snippet(46		"snip".to_owned(),47		"48            assert nativeAdd(1, 2) == 3;49            assert nativeAdd(100, 200) == 300;50            null51        ",52	)?;53	ensure_val_eq!(v, Val::Null);54	Ok(())55}5657#[builtin(fields(58    a: u3259))]60fn curried_add(this: &curried_add, b: u32) -> Result<u32> {61	Ok(this.a + b)62}6364#[builtin]65fn curry_add(a: u32) -> Result<FuncVal> {66	Ok(FuncVal::Builtin(Cc::new(tb!(curried_add { a }))))67}6869#[test]70fn nonstatic_builtin() -> Result<()> {71	let s = State::default();72	s.with_stdlib();73	s.add_global(74		"curryAdd".into(),75		Thunk::evaluated(Val::Func(FuncVal::StaticBuiltin(curry_add::INST))),76	);7778	let v = s.evaluate_snippet(79		"snip".to_owned(),80		"81            local a = curryAdd(1);82            local b = curryAdd(4);8384            assert a(2) == 3;85            assert a(200) == 201;8687            assert b(2) == 6;88            assert b(200) == 204;89            null90        ",91	)?;92	ensure_val_eq!(v, Val::Null);93	Ok(())94}