@@ -218,6 +218,111 @@ ZTEST(bt_mesh_brg_cfg, test_basic_functionality_storage)
218218 }
219219}
220220
221+ static void check_bt_mesh_brg_cfg_tbl_multiple_delete (int expect_left )
222+ {
223+ uint8_t status ;
224+ int err ;
225+ int n ;
226+ const struct bt_mesh_brg_cfg_row * brg_tbl ;
227+
228+ n = bt_mesh_brg_cfg_tbl_get (& brg_tbl );
229+ zassert_equal (n , TEST_VECT_SZ - 1 );
230+
231+ ztest_expect_value (bt_mesh_settings_store_schedule , flag , BT_MESH_SETTINGS_BRG_PENDING );
232+ err = bt_mesh_brg_cfg_tbl_remove (test_vector [1 ].net_idx1 , test_vector [1 ].net_idx2 ,
233+ test_vector [1 ].addr1 , BT_MESH_ADDR_UNASSIGNED , & status );
234+ zassert_equal (err , 0 );
235+
236+ n = bt_mesh_brg_cfg_tbl_get (& brg_tbl );
237+ zassert_equal (n , expect_left );
238+
239+ for (int i = 0 ; i < n ; i ++ ) {
240+ zassert_true (brg_tbl [i ].net_idx1 == test_vector [0 ].net_idx1 );
241+ zassert_true (brg_tbl [i ].net_idx2 == test_vector [0 ].net_idx2 );
242+ zassert_true (brg_tbl [i ].addr1 == test_vector [0 ].addr1 );
243+ zassert_true (brg_tbl [i ].addr2 == test_vector [i * 2 ].addr2 );
244+ }
245+ }
246+
247+ ZTEST (bt_mesh_brg_cfg , test_removal_multiple_entries )
248+ {
249+ check_bt_mesh_brg_cfg_tbl_reset ();
250+
251+ uint8_t status ;
252+ int err ;
253+
254+ /* Test removal of every second entry */
255+ for (int i = 0 ; i < TEST_VECT_SZ - 1 ; i ++ ) {
256+ ztest_expect_value (bt_mesh_settings_store_schedule , flag ,
257+ BT_MESH_SETTINGS_BRG_PENDING );
258+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction , test_vector [i % 2 ].net_idx1 ,
259+ test_vector [i % 2 ].net_idx2 , test_vector [i % 2 ].addr1 ,
260+ test_vector [i ].addr2 , & status );
261+ zassert_equal (err , 0 );
262+ zassert_equal (status , STATUS_SUCCESS );
263+ }
264+
265+ check_bt_mesh_brg_cfg_tbl_multiple_delete ((TEST_VECT_SZ - 1 ) / 2 );
266+ check_bt_mesh_brg_cfg_tbl_reset ();
267+
268+ /* Test removal of all entries, except first */
269+ for (int i = 0 ; i < TEST_VECT_SZ - 1 ; i ++ ) {
270+ ztest_expect_value (bt_mesh_settings_store_schedule , flag ,
271+ BT_MESH_SETTINGS_BRG_PENDING );
272+ if (i == 0 ) {
273+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction ,
274+ test_vector [i ].net_idx1 ,
275+ test_vector [i ].net_idx2 , test_vector [i ].addr1 ,
276+ test_vector [i ].addr2 , & status );
277+ } else {
278+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction ,
279+ test_vector [1 ].net_idx1 ,
280+ test_vector [1 ].net_idx2 , test_vector [1 ].addr1 ,
281+ test_vector [i ].addr2 , & status );
282+ }
283+ zassert_equal (err , 0 );
284+ zassert_equal (status , STATUS_SUCCESS );
285+ }
286+
287+ check_bt_mesh_brg_cfg_tbl_multiple_delete (1 );
288+ check_bt_mesh_brg_cfg_tbl_reset ();
289+
290+ /* Test removal of all entries, except last */
291+ for (int i = TEST_VECT_SZ - 2 ; i >= 0 ; i -- ) {
292+ ztest_expect_value (bt_mesh_settings_store_schedule , flag ,
293+ BT_MESH_SETTINGS_BRG_PENDING );
294+ if (i == 0 ) {
295+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction ,
296+ test_vector [i ].net_idx1 ,
297+ test_vector [i ].net_idx2 , test_vector [i ].addr1 ,
298+ test_vector [i ].addr2 , & status );
299+ } else {
300+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction ,
301+ test_vector [1 ].net_idx1 ,
302+ test_vector [1 ].net_idx2 , test_vector [1 ].addr1 ,
303+ test_vector [i ].addr2 , & status );
304+ }
305+ zassert_equal (err , 0 );
306+ zassert_equal (status , STATUS_SUCCESS );
307+ }
308+
309+ check_bt_mesh_brg_cfg_tbl_multiple_delete (1 );
310+ check_bt_mesh_brg_cfg_tbl_reset ();
311+
312+ /* Test removal of all entries */
313+ for (int i = 0 ; i < TEST_VECT_SZ - 1 ; i ++ ) {
314+ ztest_expect_value (bt_mesh_settings_store_schedule , flag ,
315+ BT_MESH_SETTINGS_BRG_PENDING );
316+ err = bt_mesh_brg_cfg_tbl_add (test_vector [i ].direction , test_vector [1 ].net_idx1 ,
317+ test_vector [1 ].net_idx2 , test_vector [1 ].addr1 ,
318+ test_vector [i ].addr2 , & status );
319+ zassert_equal (err , 0 );
320+ zassert_equal (status , STATUS_SUCCESS );
321+ }
322+
323+ check_bt_mesh_brg_cfg_tbl_multiple_delete (0 );
324+ }
325+
221326static void pending_store_enable_create_expectations (bool * enable_val )
222327{
223328 if (* enable_val ) {
0 commit comments