blob: 1102062aad3363edd6f2bb0d6b1611cc8c84030d [file] [log] [blame]
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
* Copyright (c) 2015 Runtime Inc
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "fcb_test.h"
void (test_fcb_append_too_big(void))
{
struct fcb *fcb;
int rc;
int len;
struct fcb_entry elem_loc;
fcb = &test_fcb;
/*
* Max element which fits inside sector is
* sector size - (disk header + crc + 1-2 bytes of length).
*/
len = fcb->f_active.fe_sector->fs_size;
rc = fcb_append(fcb, len, &elem_loc);
zassert_true(rc != 0,
"fcb_append call should fail for too big entry");
len--;
rc = fcb_append(fcb, len, &elem_loc);
zassert_true(rc != 0,
"fcb_append call should fail for too big entry");
len -= sizeof(struct fcb_disk_area);
rc = fcb_append(fcb, len, &elem_loc);
zassert_true(rc != 0,
"fcb_append call should fail for too big entry");
len = fcb->f_active.fe_sector->fs_size -
(sizeof(struct fcb_disk_area) + 1 + 2);
rc = fcb_append(fcb, len, &elem_loc);
zassert_true(rc == 0, "fcb_append call failure");
rc = fcb_append_finish(fcb, &elem_loc);
zassert_true(rc == 0, "fcb_append call failure");
rc = fcb_elem_info(fcb, &elem_loc);
zassert_true(rc == 0, "fcb_elem_info call failure");
zassert_true(elem_loc.fe_data_len == len,
"entry length fetched should match length of appended entry");
}