# Test this inner rbyd data-structure [cases.rbyd_commit_fetch] in = 'lfs.c' defines.ERASE_VALUE = [0xff, 0x00, 0x1b, -1] code = ''' lfs_t lfs; lfs_init(&lfs, cfg) => 0; lfs_rbyd_t rbyd = { .block = 0, .trunk = 0, .noff = 0, .rev = 1, .crc = 0, .count = 0, .erased = true, }; // try an empty commit lfs_rbyd_t rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, NULL) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // commit with one attribute rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, NULL)) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // commit with two attributes rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, LFS_MKRATTR(UATTR, 2, 0, &(uint32_t){0xbbbbbbbb}, 4, NULL))) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // // commit with three attributes // rbyd_ = rbyd; // lfs_bd_erase(&lfs, rbyd_.block) => 0; // lfs_rbyd_commit(&lfs, &rbyd_, // LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, // LFS_MKRATTR(UATTR, 2, 0, &(uint32_t){0xbbbbbbbb}, 4, // LFS_MKRATTR(UATTR, 3, 0, &(uint32_t){0xcccccccc}, 4, // NULL)))) => 0; // lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block) => 0; // TODO more? ''' [cases.rbyd_multi_commit_fetch] in = 'lfs.c' defines.ERASE_VALUE = [0xff, 0x00, 0x1b, -1] code = ''' lfs_t lfs; lfs_init(&lfs, cfg) => 0; lfs_rbyd_t rbyd = { .block = 0, .trunk = 0, .noff = 0, .rev = 1, .crc = 0, .count = 0, .erased = true, }; // try an empty commit lfs_rbyd_t rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, NULL) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // commit with one attribute rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, NULL) => 0; lfs_rbyd_commit(&lfs, &rbyd_, LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, NULL)) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // commit with two attributes rbyd_ = rbyd; lfs_bd_erase(&lfs, rbyd_.block) => 0; lfs_rbyd_commit(&lfs, &rbyd_, LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, NULL)) => 0; lfs_rbyd_commit(&lfs, &rbyd_, LFS_MKRATTR(UATTR, 2, 0, &(uint32_t){0xbbbbbbbb}, 4, NULL)) => 0; lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block, NULL) => 0; // // commit with three attributes // rbyd_ = rbyd; // lfs_bd_erase(&lfs, rbyd_.block) => 0; // lfs_rbyd_commit(&lfs, &rbyd_, // LFS_MKRATTR(UATTR, 1, 0, &(uint32_t){0xaaaaaaaa}, 4, NULL)) => 0; // lfs_rbyd_commit(&lfs, &rbyd_, // LFS_MKRATTR(UATTR, 2, 0, &(uint32_t){0xbbbbbbbb}, 4, NULL)) => 0; // lfs_rbyd_commit(&lfs, &rbyd_, // LFS_MKRATTR(UATTR, 3, 0, &(uint32_t){0xcccccccc}, 4, NULL)) => 0; // lfs_rbyd_fetch(&lfs, &rbyd_, rbyd.block) => 0; // TODO more? ''' # [cases.rbyd_commit_lookup] # [cases.rbyd_multi_commit_lookup] # [cases.rbyd_commit_fetchmatch] # [cases.rbyd_multi_commit_fetchmatch] # [cases.rbyd_commit_traverse] # [cases.rbyd_multi_commit_traverse]