1 /* 2 * Copyright 2018 Google, Inc. 3 * 4 * This is part of HarfBuzz, a text shaping library. 5 * 6 * Permission is hereby granted, without written agreement and without 7 * license or royalty fees, to use, copy, modify, and distribute this 8 * software and its documentation for any purpose, provided that the 9 * above copyright notice and the following two paragraphs appear in 10 * all copies of this software. 11 * 12 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 13 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 14 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 15 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 16 * DAMAGE. 17 * 18 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 19 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 20 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 21 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 22 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 23 * 24 * Google Author(s): Garret Rieger 25 */ 26 27 #ifndef HB_SUBSET_TEST_H 28 #define HB_SUBSET_TEST_H 29 30 #include <stdio.h> 31 32 #include "hb-test.h" 33 #include "hb-subset.h" 34 35 #ifdef HAVE_STDBOOL_H 36 # include <stdbool.h> 37 #else 38 typedef short bool; 39 # ifndef true 40 # define true 1 41 # endif 42 # ifndef false 43 # define false 0 44 # endif 45 #endif 46 47 48 HB_BEGIN_DECLS 49 50 static inline hb_subset_input_t * 51 hb_subset_test_create_input(const hb_set_t *codepoints) 52 { 53 hb_subset_input_t *input = hb_subset_input_create_or_fail (); 54 hb_set_t * input_codepoints = hb_subset_input_unicode_set (input); 55 hb_set_union (input_codepoints, codepoints); 56 return input; 57 } 58 59 static inline hb_face_t * 60 hb_subset_test_create_subset (hb_face_t *source, 61 hb_subset_input_t *input) 62 { 63 hb_face_t *subset = hb_subset (source, input); 64 g_assert (subset); 65 66 hb_subset_input_destroy (input); 67 return subset; 68 } 69 70 static inline void 71 hb_subset_test_check (hb_face_t *expected, 72 hb_face_t *actual, 73 hb_tag_t table) 74 { 75 hb_blob_t *expected_blob, *actual_blob; 76 //fprintf(stderr, "comparing %c%c%c%c ", HB_UNTAG(table)); 77 expected_blob = hb_face_reference_table (expected, table); 78 actual_blob = hb_face_reference_table (actual, table); 79 hb_test_assert_blobs_equal (expected_blob, actual_blob); 80 hb_blob_destroy (expected_blob); 81 hb_blob_destroy (actual_blob); 82 } 83 84 85 HB_END_DECLS 86 87 #endif /* HB_SUBSET_TEST_H */ 88