From 823700564bda8495724bdbbb0fbac11252754caa Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Thu, 17 Oct 2024 15:12:14 +0200 Subject: [PATCH] improve dict test --- runtime/src/lib.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index e1bc8183c9..6ce8be2517 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -661,9 +661,9 @@ mod tests { use starknet_types_core::felt::Felt; use crate::{ - cairo_native__dict_drop, cairo_native__dict_get, cairo_native__dict_new, - cairo_native__libfunc__debug__print, cairo_native__libfunc__hades_permutation, - cairo_native__libfunc__pedersen, + cairo_native__dict_drop, cairo_native__dict_dup, cairo_native__dict_get, + cairo_native__dict_new, cairo_native__libfunc__debug__print, + cairo_native__libfunc__hades_permutation, cairo_native__libfunc__pedersen, }; pub fn felt252_short_str(value: &str) -> Felt { @@ -751,6 +751,13 @@ mod tests { drop(b); } + pub extern "C" fn dup_fn_test(ptr: *mut c_void) -> *mut c_void { + assert!(!ptr.is_null()); + let ptr: *mut u64 = ptr.cast(); + let dup = unsafe { Box::into_raw(Box::new(*ptr)) }; + dup.cast() + } + #[test] fn test_dict() { let dict = unsafe { cairo_native__dict_new(free_fn_test) }; @@ -769,6 +776,18 @@ mod tests { assert_eq!(unsafe { **ptr }, 2); } + let cloned_dict = unsafe { cairo_native__dict_dup(dict, dup_fn_test) }; + unsafe { cairo_native__dict_drop(dict, None) }; + + { + let ptr: *mut *mut u64 = + unsafe { cairo_native__dict_get(&mut *cloned_dict, &key) }.cast(); + assert!(!ptr.is_null()); + assert!(!unsafe { *ptr }.is_null()); + assert_eq!(unsafe { **ptr }, 2); + } + + unsafe { cairo_native__dict_drop(cloned_dict, None) }; } }