Changeset 120031a5 in mainline for uspace/lib/gfxfont/test/tpf.c


Ignore:
Timestamp:
2020-09-25T12:26:53Z (4 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
453f203b
Parents:
ea459d4
git-author:
Jiri Svoboda <jiri@…> (2020-09-24 17:26:44)
git-committer:
Jiri Svoboda <jiri@…> (2020-09-25 12:26:53)
Message:

Make TPF save/load test more elaborate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/gfxfont/test/tpf.c

    rea459d4 r120031a5  
    3030#include <gfx/font.h>
    3131#include <gfx/glyph.h>
     32#include <gfx/glyph_bmp.h>
    3233#include <gfx/typeface.h>
    3334#include <pcut/pcut.h>
     35#include <str.h>
    3436#include "../private/font.h"
    3537#include "../private/typeface.h"
     
    6971} testgc_bitmap_t;
    7072
     73enum {
     74        test_font_size = 9,
     75        test_font_flags = gff_bold_italic,
     76        test_font_ascent = 4,
     77        test_font_descent = 3,
     78        test_font_leading = 2,
     79        test_glyph_advance = 10
     80};
     81
     82static const char *test_glyph_pattern = "ff";
     83
    7184/** Test saving typeface to and loading from TPF file */
    7285PCUT_TEST(save_load)
     
    7588        char *p;
    7689        gfx_font_props_t props;
     90        gfx_font_props_t rprops;
    7791        gfx_font_metrics_t metrics;
     92        gfx_font_metrics_t rmetrics;
    7893        gfx_glyph_metrics_t gmetrics;
     94        gfx_glyph_metrics_t rgmetrics;
     95        gfx_glyph_pattern_t *pat;
     96        const char *str;
    7997        gfx_typeface_t *tface;
    8098        gfx_font_t *font;
     
    82100        gfx_context_t *gc;
    83101        gfx_glyph_t *glyph;
     102        gfx_glyph_bmp_t *bmp;
     103        int pix;
    84104        test_gc_t tgc;
    85105        errno_t rc;
     
    91111        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    92112
     113        rc = gfx_typeface_create(gc, &tface);
     114        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     115
     116        gfx_font_props_init(&props);
     117        props.size = test_font_size;
     118        props.flags = test_font_flags;
     119
    93120        gfx_font_metrics_init(&metrics);
    94 
    95         rc = gfx_typeface_create(gc, &tface);
    96         PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    97 
    98         gfx_font_props_init(&props);
    99         gfx_font_metrics_init(&metrics);
     121        metrics.ascent = test_font_ascent;
     122        metrics.descent = test_font_descent;
     123        metrics.leading = test_font_leading;
     124
    100125        rc = gfx_font_create(tface, &props, &metrics, &font);
    101126        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    102127
    103128        gfx_glyph_metrics_init(&gmetrics);
     129        gmetrics.advance = test_glyph_advance;
     130
    104131        rc = gfx_glyph_create(font, &gmetrics, &glyph);
    105132        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     133
     134        rc = gfx_glyph_set_pattern(glyph, test_glyph_pattern);
     135        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     136
     137        rc = gfx_glyph_bmp_open(glyph, &bmp);
     138        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     139
     140        rc = gfx_glyph_bmp_setpix(bmp, 0, 0, 1);
     141        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     142
     143        rc = gfx_glyph_bmp_setpix(bmp, 1, 1, 1);
     144        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     145
     146        rc = gfx_glyph_bmp_save(bmp);
     147        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     148
     149        gfx_glyph_bmp_close(bmp);
    106150
    107151        rc = gfx_typeface_save(tface, fname);
     
    118162        PCUT_ASSERT_NOT_NULL(finfo);
    119163
     164        gfx_font_get_props(finfo, &rprops);
     165        PCUT_ASSERT_INT_EQUALS(props.size, rprops.size);
     166        PCUT_ASSERT_INT_EQUALS(props.flags, rprops.flags);
     167
    120168        rc = gfx_font_open(finfo, &font);
    121169        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
    122170        PCUT_ASSERT_NOT_NULL(font);
     171
     172        gfx_font_get_metrics(font, &rmetrics);
     173        PCUT_ASSERT_INT_EQUALS(metrics.ascent, rmetrics.ascent);
     174        PCUT_ASSERT_INT_EQUALS(metrics.descent, rmetrics.descent);
     175        PCUT_ASSERT_INT_EQUALS(metrics.leading, rmetrics.leading);
    123176
    124177        glyph = gfx_font_first_glyph(font);
    125178        PCUT_ASSERT_NOT_NULL(glyph);
     179
     180        gfx_glyph_get_metrics(glyph, &rgmetrics);
     181        PCUT_ASSERT_INT_EQUALS(gmetrics.advance, rgmetrics.advance);
     182
     183        pat = gfx_glyph_first_pattern(glyph);
     184        str = gfx_glyph_pattern_str(pat);
     185        PCUT_ASSERT_INT_EQUALS(0, str_cmp(test_glyph_pattern, str));
     186
     187        rc = gfx_glyph_bmp_open(glyph, &bmp);
     188        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     189
     190        pix = gfx_glyph_bmp_getpix(bmp, 0, 0);
     191        PCUT_ASSERT_INT_EQUALS(1, pix);
     192        pix = gfx_glyph_bmp_getpix(bmp, 1, 1);
     193        PCUT_ASSERT_INT_EQUALS(1, pix);
     194        pix = gfx_glyph_bmp_getpix(bmp, 1, 0);
     195        PCUT_ASSERT_INT_EQUALS(0, pix);
     196        pix = gfx_glyph_bmp_getpix(bmp, 0, 1);
     197        PCUT_ASSERT_INT_EQUALS(0, pix);
     198
     199        gfx_glyph_bmp_close(bmp);
    126200
    127201        gfx_typeface_destroy(tface);
Note: See TracChangeset for help on using the changeset viewer.