diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/mocks.c | 48 | ||||
-rw-r--r-- | test/ucsinit.c | 47 |
2 files changed, 93 insertions, 2 deletions
diff --git a/test/mocks.c b/test/mocks.c index c70f9f5..132e8ac 100644 --- a/test/mocks.c +++ b/test/mocks.c @@ -161,9 +161,53 @@ os_error *xfont_read_info (font_f font, int *x0, int *y0, int *x1, int *y1) if (y0 != NULL) *y0 = 0; if (x1 != NULL) - *x1 = ((h->fonts[font].xsize >> 4) * 72) / 180; + *x1 = (h->fonts[font].xsize * 180) / (72 * 16); if (y1 != NULL) - *y1 = ((h->fonts[font].ysize >> 4) * 72) / 180; + *y1 = (h->fonts[font].ysize * 180) / (72 * 16); + + return NULL; +} + +os_error *xfont_read_font_metrics (font_f font, font_bbox_info *bbox_info, + font_width_info *xwidth_info, font_width_info *ywidth_info, + font_metrics_misc_info *misc_info, font_kern_info *kern_info, + font_metric_flags *flags, int *bbox_info_size, + int *xwidth_info_size, int *ywidth_info_size, + int *misc_info_size, int *kern_info_size) +{ + if (font == 0) + return &font_bad_font_number; + if (h->fonts[font].refcnt == 0) + return &font_no_font; + if (bbox_info != NULL || xwidth_info != NULL || ywidth_info != NULL || + kern_info != NULL || flags != NULL) + return &unimplemented; + + if (misc_info != NULL) { + os_error *err = xfont_read_info(font, + &misc_info->x0, &misc_info->y0, + &misc_info->x1, &misc_info->y1); + if (err != NULL) + return err; + misc_info->xkern = misc_info->ykern = 0; + misc_info->italic_correction = 0; + misc_info->underline_position = 0; + misc_info->underline_thickness = 0; + misc_info->cap_height = misc_info->y1 - misc_info->y0; + misc_info->xheight = misc_info->cap_height >> 1; + misc_info->descender = misc_info->ascender = 0; + } + + if (bbox_info_size != NULL) + *bbox_info_size = 0; + if (xwidth_info_size != NULL) + *xwidth_info_size = 0; + if (ywidth_info_size != NULL) + *ywidth_info_size = 0; + if (misc_info_size != NULL) + *misc_info_size = sizeof(font_metrics_misc_info); + if (kern_info_size != NULL) + *kern_info_size = 0; return NULL; } diff --git a/test/ucsinit.c b/test/ucsinit.c index 3b59a2f..b3d8f53 100644 --- a/test/ucsinit.c +++ b/test/ucsinit.c @@ -7,12 +7,59 @@ int main(int argc, const char **argv) { + int width, x; + size_t offset; + int32_t xkern, ykern, italic, ascent, descent, xheight, cap_height; + int8_t uline_position; + uint8_t uline_thickness; + os_box bbox; + UNUSED(argc); UNUSED(argv); rufl_test_harness_init(380, true, true); assert(rufl_OK == rufl_init()); + assert(NULL == rufl_fm_error); + assert(3 == rufl_family_list_entries); + assert(NULL != rufl_family_menu); + + assert(rufl_OK == rufl_font_metrics("Corpus", rufl_WEIGHT_500, + &bbox, &xkern, &ykern, &italic, + &ascent, &descent, &xheight, &cap_height, + &uline_position, &uline_thickness)); + assert(0 == bbox.x0); + assert(2 == bbox.x1); + assert(0 == bbox.y0); + assert(2 == bbox.y1); + assert(0 == xkern); + assert(0 == ykern); + assert(0 == italic); + assert(0 == ascent); + assert(0 == descent); + assert((bbox.y1 - bbox.y0) == cap_height); + assert((cap_height / 2) == xheight); + assert(0 == uline_position); + assert(0 == uline_thickness); + + assert(rufl_OK == rufl_width("Corpus", rufl_WEIGHT_500, 10, + (const uint8_t *) "!\xc2\xa0", 3, &width)); + assert(2 == width); + + assert(rufl_OK == rufl_x_to_offset("Homerton", rufl_WEIGHT_500, 10, + (const uint8_t *) "!\xc2\xa0", 3, 1, + &offset, &x)); + assert(1 == offset); + assert(1 == x); + + assert(rufl_OK == rufl_split("Trinity", rufl_WEIGHT_500, 10, + (const uint8_t *) "!\xc2\xa0", 3, 1, + &offset, &x)); + assert(1 == offset); + assert(1 == x); + + rufl_dump_state(true); + rufl_quit(); printf("PASS\n"); |