feat: add vfreeze/vthaw slots to intf_varray_t; designated initializers (P0-0b)
rtti header already present at rtti-0.0.2 with vfreeze_fn_t, vthaw_fn_t, retain_fn_t, and the two new slots in intf_varray_t. No header modification needed. Convert intf_varray_t compound-literal initializers in zarray.c and kvmgr.c to designated style with explicit .vfreeze = NULL and .vthaw = NULL slots. kv.c has no intf_varray_t initializer. Add test_zarray_cow.c with test_freeze_thaw_slots_exist which verifies the struct layout has the slots accessible and that they are NULL until P0-2 wires the real implementations. Wire test into meson.build and test.c. Full clean rebuild confirmed: 27/28 targets linked, no new test failures. Only the 4 pre-existing failures remain.
This commit is contained in:
parent
e0e2f56c81
commit
c78f9cf91c
5 changed files with 44 additions and 2 deletions
|
|
@ -290,7 +290,9 @@ typeinfo_t xkvmgr_type = {
|
|||
.vget_vec = (vget_vec_fn_t)xkvmgr_get_vec,
|
||||
.vput = (vput_fn_t)xkvmgr_put,
|
||||
.vput_vec = (vput_vec_fn_t)xkvmgr_put_vec,
|
||||
.vclear = (vclear_fn_t)NULL },
|
||||
.vclear = (vclear_fn_t)NULL,
|
||||
.vfreeze = NULL, /* wired in P0-2 */
|
||||
.vthaw = NULL /* wired in P0-2 */ },
|
||||
.iter
|
||||
= &(intf_iterator_t) { .make = (iter_make_fn_t)xkvmgr_make_iter,
|
||||
.next = (iter_next_fn_t)xkvmgr_iter_next,
|
||||
|
|
|
|||
|
|
@ -163,6 +163,7 @@ libxce_test_src = ['testsuite/test.c',
|
|||
'testsuite/test_wobj.c',
|
||||
'testsuite/test_qobj.c',
|
||||
'testsuite/test_request.c',
|
||||
'testsuite/test_zarray_cow.c',
|
||||
]
|
||||
|
||||
libxce_test_deps = [libxce_deps, librtti_dep, unity_dep, libxce_dep]
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ extern void test_jobobj(void);
|
|||
extern void test_qobj(void);
|
||||
extern void test_wobj(void);
|
||||
extern void test_request(void);
|
||||
extern void test_zarray_cow(void);
|
||||
|
||||
void setUp(void) { return; }
|
||||
|
||||
|
|
@ -127,6 +128,7 @@ int main(int argc, char* argv[])
|
|||
TEST(test_wobj);
|
||||
TEST(test_qobj);
|
||||
TEST(test_request);
|
||||
TEST(test_zarray_cow);
|
||||
|
||||
return UNITY_END();
|
||||
}
|
||||
|
|
|
|||
35
src/lib/testsuite/test_zarray_cow.c
Normal file
35
src/lib/testsuite/test_zarray_cow.c
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#include <assert.h>
|
||||
#include <rtti.h>
|
||||
#include <stdio.h>
|
||||
#include <unity/unity.h>
|
||||
|
||||
#include "zarray.h"
|
||||
|
||||
/* xzarray_type is defined in zarray.c */
|
||||
extern typeinfo_t xzarray_type;
|
||||
|
||||
static void test_freeze_thaw_slots_exist(void)
|
||||
{
|
||||
/* After P0-0b, intf_varray_t has vfreeze and vthaw slots.
|
||||
* They are NULL until P0-2 wires the implementations. */
|
||||
const intf_varray_t* iface
|
||||
= (const intf_varray_t*)xzarray_type.interfaces.varray;
|
||||
|
||||
TEST_ASSERT_NOT_NULL(iface);
|
||||
|
||||
/* Access slots without crash — verifies struct layout has them */
|
||||
(void)iface->vfreeze;
|
||||
(void)iface->vthaw;
|
||||
|
||||
/* Slots must be NULL until P0-2 wires the real implementations */
|
||||
TEST_ASSERT_NULL(iface->vfreeze);
|
||||
TEST_ASSERT_NULL(iface->vthaw);
|
||||
|
||||
printf("test_freeze_thaw_slots_exist: PASS\n");
|
||||
}
|
||||
|
||||
void test_zarray_cow(void)
|
||||
{
|
||||
printf("\n>> zarray COW interface slot test\n\n");
|
||||
RUN_TEST(test_freeze_thaw_slots_exist);
|
||||
}
|
||||
|
|
@ -668,7 +668,9 @@ typeinfo_t xzarray_type = {
|
|||
.vget_vec = (vget_vec_fn_t)xzarray_get_vec,
|
||||
.vput = (vput_fn_t)xzarray_put,
|
||||
.vput_vec = (vput_vec_fn_t)xzarray_put_vec,
|
||||
.vclear = (vclear_fn_t)xzarray_clear },
|
||||
.vclear = (vclear_fn_t)xzarray_clear,
|
||||
.vfreeze = NULL, /* wired in P0-2 */
|
||||
.vthaw = NULL /* wired in P0-2 */ },
|
||||
.iter
|
||||
= &(intf_iterator_t) { .make = (iter_make_fn_t)xzarray_make_iter,
|
||||
.next = (iter_next_fn_t)xzarray_iter_next,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue