fix pstr_iter_tests test

This commit is contained in:
Skgland
2025-11-20 23:08:46 +01:00
committed by rishi
parent e7ac3ae0f7
commit 896b90e57d
2 changed files with 11 additions and 18 deletions

View File

@@ -678,16 +678,7 @@ impl Heap {
} }
pub(crate) fn clear(&mut self) { pub(crate) fn clear(&mut self) {
unsafe { *self = Heap::new();
let layout =
alloc::Layout::from_size_align(self.inner.byte_cap, size_of::<HeapCellValue>())
.unwrap();
alloc::dealloc(self.inner.ptr, layout);
}
self.inner.ptr = ptr::null_mut();
self.inner.byte_len = 0;
self.inner.byte_cap = 0;
} }
pub(crate) fn store_resource_error(&mut self) { pub(crate) fn store_resource_error(&mut self) {

View File

@@ -217,6 +217,8 @@ mod test {
fn pstr_iter_tests() { fn pstr_iter_tests() {
let mut wam = MockWAM::new(); let mut wam = MockWAM::new();
let init_len = wam.machine_st.heap.cell_len();
let pstr_cell = wam.machine_st.heap.allocate_pstr("abc ").unwrap(); let pstr_cell = wam.machine_st.heap.allocate_pstr("abc ").unwrap();
wam.machine_st wam.machine_st
.heap .heap
@@ -233,7 +235,7 @@ mod test {
assert_eq!( assert_eq!(
iter.next(), iter.next(),
Some(PStrIteratee::PStrSlice { Some(PStrIteratee::PStrSlice {
slice_loc: heap_index!(1), slice_loc: heap_index!(init_len),
slice_len: "abc ".len() slice_len: "abc ".len()
}), }),
); );
@@ -241,9 +243,9 @@ mod test {
assert!(!iter.is_cyclic()); assert!(!iter.is_cyclic());
} }
assert_eq!(wam.machine_st.heap[2], empty_list_as_cell!()); assert_eq!(wam.machine_st.heap[init_len + 1], empty_list_as_cell!());
wam.machine_st.heap[2] = pstr_loc_as_cell!(heap_index!(3)); wam.machine_st.heap[init_len + 1] = pstr_loc_as_cell!(heap_index!(init_len + 2));
wam.machine_st.heap.allocate_pstr("def").unwrap(); wam.machine_st.heap.allocate_pstr("def").unwrap();
let h = wam.machine_st.heap.cell_len(); let h = wam.machine_st.heap.cell_len();
@@ -256,14 +258,14 @@ mod test {
assert_eq!( assert_eq!(
iter.next(), iter.next(),
Some(PStrIteratee::PStrSlice { Some(PStrIteratee::PStrSlice {
slice_loc: heap_index!(1), slice_loc: heap_index!(init_len),
slice_len: "abc ".len() slice_len: "abc ".len()
}) })
); );
assert_eq!( assert_eq!(
iter.next(), iter.next(),
Some(PStrIteratee::PStrSlice { Some(PStrIteratee::PStrSlice {
slice_loc: heap_index!(3), slice_loc: heap_index!(init_len + 2),
slice_len: "def".len(), slice_len: "def".len(),
}) })
); );
@@ -282,14 +284,14 @@ mod test {
assert_eq!( assert_eq!(
iter.next(), iter.next(),
Some(PStrIteratee::PStrSlice { Some(PStrIteratee::PStrSlice {
slice_loc: heap_index!(1), slice_loc: heap_index!(init_len),
slice_len: "abc ".len() slice_len: "abc ".len()
}) })
); );
assert_eq!( assert_eq!(
iter.next(), iter.next(),
Some(PStrIteratee::PStrSlice { Some(PStrIteratee::PStrSlice {
slice_loc: heap_index!(3), slice_loc: heap_index!(init_len + 2),
slice_len: "def".len(), slice_len: "def".len(),
}) })
); );
@@ -298,7 +300,7 @@ mod test {
assert!(!iter.is_cyclic()); assert!(!iter.is_cyclic());
} }
wam.machine_st.heap[h] = pstr_loc_as_cell!(heap_index!(3)); wam.machine_st.heap[h] = pstr_loc_as_cell!(heap_index!(init_len + 2));
{ {
let mut iter = HeapPStrIter::new(&wam.machine_st.heap, 0); let mut iter = HeapPStrIter::new(&wam.machine_st.heap, 0);