Changeset ea459d4 in mainline for uspace/lib/riff/test/chunk.c


Ignore:
Timestamp:
2020-09-24T14:25:21Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
120031a5
Parents:
aaf962e6
git-author:
Jiri Svoboda <jiri@…> (2020-09-22 17:25:10)
git-committer:
Jiri Svoboda <jiri@…> (2020-09-24 14:25:21)
Message:

Reading typeface from TPF file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/riff/test/chunk.c

    raaf962e6 rea459d4  
    544544}
    545545
     546/** Seek back to different positions in a chunk */
     547PCUT_TEST(rchunk_seek)
     548{
     549        char fname[L_tmpnam];
     550        char *p;
     551        riffw_t *rw;
     552        riffr_t *rr;
     553        riff_wchunk_t wriffck;
     554        riff_wchunk_t wdatack;
     555        riff_rchunk_t rriffck;
     556        riff_rchunk_t rdatack;
     557        uint32_t rword;
     558        errno_t rc;
     559
     560        p = tmpnam(fname);
     561        PCUT_ASSERT_NOT_NULL(p);
     562
     563        /* Write RIFF file */
     564
     565        rc = riff_wopen(p, &rw);
     566        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     567        PCUT_ASSERT_NOT_NULL(rw);
     568
     569        rc = riff_wchunk_start(rw, CKID_RIFF, &wriffck);
     570        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     571
     572        /* Write data chunk */
     573
     574        rc = riff_wchunk_start(rw, CKID_dat1, &wdatack);
     575        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     576
     577        rc = riff_write_uint32(rw, 1);
     578        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     579
     580        rc = riff_write_uint32(rw, 2);
     581        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     582
     583        rc = riff_write_uint32(rw, 3);
     584        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     585
     586        rc = riff_write_uint32(rw, 4);
     587        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     588
     589        rc = riff_wchunk_end(rw, &wdatack);
     590        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     591
     592        rc = riff_wchunk_end(rw, &wriffck);
     593        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     594
     595        rc = riff_wclose(rw);
     596        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     597
     598        /* Read back RIFF file */
     599
     600        rc = riff_ropen(p, &rriffck, &rr);
     601        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     602        PCUT_ASSERT_NOT_NULL(rr);
     603
     604        PCUT_ASSERT_INT_EQUALS(CKID_RIFF, rriffck.ckid);
     605
     606        /* Read data chunk */
     607
     608        rc = riff_rchunk_start(&rriffck, &rdatack);
     609        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     610        PCUT_ASSERT_INT_EQUALS(CKID_dat1, rdatack.ckid);
     611
     612        rc = riff_read_uint32(&rdatack, &rword);
     613        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     614        PCUT_ASSERT_INT_EQUALS(1, rword);
     615
     616        rc = riff_rchunk_end(&rdatack);
     617        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     618
     619        /* Try reading first word of data chunk again */
     620
     621        rc = riff_rchunk_seek(&rdatack, 0, SEEK_SET);
     622        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     623
     624        rc = riff_read_uint32(&rdatack, &rword);
     625        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     626        PCUT_ASSERT_INT_EQUALS(1, rword);
     627
     628        /* Try reading last word of data chunk */
     629
     630        rc = riff_rchunk_seek(&rdatack, -4, SEEK_END);
     631        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     632
     633        rc = riff_read_uint32(&rdatack, &rword);
     634        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     635        PCUT_ASSERT_INT_EQUALS(4, rword);
     636
     637        /* Try reading previous word of data chunk */
     638
     639        rc = riff_rchunk_seek(&rdatack, -8, SEEK_CUR);
     640        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     641
     642        rc = riff_read_uint32(&rdatack, &rword);
     643        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     644        PCUT_ASSERT_INT_EQUALS(3, rword);
     645
     646        rc = riff_rclose(rr);
     647        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     648
     649        (void) remove(p);
     650}
     651
    546652PCUT_EXPORT(chunk);
Note: See TracChangeset for help on using the changeset viewer.