Changeset 0cf3d5f in mainline for uspace/lib/fmgt/test


Ignore:
Timestamp:
2025-10-10T08:45:43Z (4 months ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
c3db721
Parents:
cfd04c4
git-author:
Jiri Svoboda <jiri@…> (2025-10-09 18:45:33)
git-committer:
Jiri Svoboda <jiri@…> (2025-10-10 08:45:43)
Message:

Allow creating sparse files in Navigator and newfile.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/fmgt/test/fmgt.c

    rcfd04c4 r0cf3d5f  
    116116        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    117117
    118         rc = fmgt_new_file(fmgt, fname, 0);
     118        rc = fmgt_new_file(fmgt, fname, 0, nf_none);
    119119        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    120120
     
    150150        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    151151
    152         rc = fmgt_new_file(fmgt, fname, 20000);
     152        rc = fmgt_new_file(fmgt, fname, 20000, nf_none);
    153153        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    154154
     
    177177}
    178178
    179 /** Initial update provided when requested while creating new file. */
    180 PCUT_TEST(new_file_init_upd)
     179/** New sparse file can be created. */
     180PCUT_TEST(new_file_sparse)
    181181{
    182182        FILE *f = NULL;
     
    188188        size_t total_rd;
    189189        size_t i;
    190         test_resp_t resp;
    191         int rv;
    192 
    193         rc = vfs_cwd_set(TEMP_DIR);
    194         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    195 
    196         rc = fmgt_create(&fmgt);
    197         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    198 
    199         fmgt_set_cb(fmgt, &test_fmgt_cb, (void *)&resp);
    200         resp.nupdates = 0;
    201 
    202         fmgt_set_init_update(fmgt, true);
    203 
    204         /* Suggest unique file name. */
    205         rc = fmgt_new_file_suggest(&fname);
    206         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    207 
    208         rc = fmgt_new_file(fmgt, fname, 20000);
     190        int rv;
     191
     192        rc = vfs_cwd_set(TEMP_DIR);
     193        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     194
     195        rc = fmgt_create(&fmgt);
     196        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     197
     198        /* Suggest unique file name. */
     199        rc = fmgt_new_file_suggest(&fname);
     200        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     201
     202        rc = fmgt_new_file(fmgt, fname, 20000, nf_sparse);
    209203        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    210204
     
    225219        (void)fclose(f);
    226220
     221        /* Remove the file. */
     222        rv = remove(fname);
     223        PCUT_ASSERT_INT_EQUALS(0, rv);
     224
     225        free(fname);
     226        fmgt_destroy(fmgt);
     227}
     228
     229/** Initial update provided when requested while creating new file. */
     230PCUT_TEST(new_file_init_upd)
     231{
     232        FILE *f = NULL;
     233        fmgt_t *fmgt = NULL;
     234        char *fname = NULL;
     235        char buf[128];
     236        errno_t rc;
     237        size_t nr;
     238        size_t total_rd;
     239        size_t i;
     240        test_resp_t resp;
     241        int rv;
     242
     243        rc = vfs_cwd_set(TEMP_DIR);
     244        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     245
     246        rc = fmgt_create(&fmgt);
     247        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     248
     249        fmgt_set_cb(fmgt, &test_fmgt_cb, (void *)&resp);
     250        resp.nupdates = 0;
     251
     252        fmgt_set_init_update(fmgt, true);
     253
     254        /* Suggest unique file name. */
     255        rc = fmgt_new_file_suggest(&fname);
     256        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     257
     258        rc = fmgt_new_file(fmgt, fname, 20000, nf_none);
     259        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     260
     261        /* Verify the file. */
     262        f = fopen(fname, "rb");
     263        PCUT_ASSERT_NOT_NULL(f);
     264        total_rd = 0;
     265        do {
     266                nr = fread(buf, 1, sizeof(buf), f);
     267                for (i = 0; i < nr; i++)
     268                        PCUT_ASSERT_INT_EQUALS(0, buf[i]);
     269
     270                total_rd += nr;
     271        } while (nr > 0);
     272
     273        PCUT_ASSERT_INT_EQUALS(20000, total_rd);
     274
     275        (void)fclose(f);
     276
    227277        PCUT_ASSERT_TRUE(resp.nupdates > 0);
    228278
Note: See TracChangeset for help on using the changeset viewer.