[instancer] add testing code for change_tuple_variation_axis_limits()

Also fixed a small bug
pull/4271/head
Qunxin Liu 1 year ago committed by Behdad Esfahbod
parent 8057661f07
commit 9fd367663a
  1. 2
      src/Makefile.am
  2. 2
      src/hb-ot-var-common.hh
  3. 2
      src/meson.build
  4. 35
      src/test-tuple-varstore.cc

@ -532,7 +532,7 @@ test_instancer_solver_SOURCES = test-subset-instancer-solver.cc hb-subset-instan
test_instancer_solver_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
test_instancer_solver_LDADD = $(COMPILED_TESTS_LDADD)
test_tuple_varstore_SOURCES = test-tuple-varstore.cc hb-static.cc
test_tuple_varstore_SOURCES = test-tuple-varstore.cc hb-subset-instancer-solver.cc hb-static.cc
test_tuple_varstore_CPPFLAGS = $(COMPILED_TESTS_CPPFLAGS)
test_tuple_varstore_LDADD = $(COMPILED_TESTS_LDADD)

@ -642,7 +642,7 @@ struct TupleVariationData
if (!out) continue;
unsigned new_len = new_vars.length + out.length;
if (unlikely (!new_vars.resize (new_len, false)))
if (unlikely (!new_vars.alloc (new_len, false)))
{ fini (); return;}
for (unsigned i = 0; i < out.length; i++)

@ -723,7 +723,7 @@ if get_option('tests').enabled()
'test-vector': ['test-vector.cc', 'hb-static.cc'],
'test-bimap': ['test-bimap.cc', 'hb-static.cc'],
'test-instancer-solver': ['test-subset-instancer-solver.cc', 'hb-subset-instancer-solver.cc', 'hb-static.cc'],
'test-tuple-varstore': ['test-tuple-varstore.cc', 'hb-static.cc'],
'test-tuple-varstore': ['test-tuple-varstore.cc', 'hb-subset-instancer-solver.cc', 'hb-static.cc'],
}
foreach name, source : compiled_tests
if cpp.get_argument_syntax() == 'msvc' and source.contains('hb-static.cc')

@ -75,6 +75,41 @@ test_decompile_cvar ()
assert (tuple_variations.tuple_vars[1].deltas_x[i] == deltas_2[i]);
}
}
/* partial instancing wght=300:800 */
hb_hashmap_t<hb_tag_t, Triple> normalized_axes_location;
normalized_axes_location.set (axis_tag, Triple (-0.512817f, 0.f, 0.700012f));
tuple_variations.change_tuple_variations_axis_limits (&normalized_axes_location);
tuple_variations.merge_tuple_variations ();
assert (tuple_variations.tuple_vars[0].indices.length == 65);
assert (tuple_variations.tuple_vars[1].indices.length == 65);
assert (!tuple_variations.tuple_vars[0].deltas_y);
assert (!tuple_variations.tuple_vars[1].deltas_y);
assert (tuple_variations.tuple_vars[0].axis_tuples.get (axis_tag) == Triple (-1.f, -1.f, 0.f));
assert (tuple_variations.tuple_vars[1].axis_tuples.get (axis_tag) == Triple (0.f, 1.f, 1.f));
hb_vector_t<float> rounded_deltas_1 {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, -1, 0.f, -2, 1, 0.f, -1, 0.f, -2, 1, 0.f, -19, -19, -13, -13, 0.f, 0.f, 0.f, -2, 0.f, 0.f, 0.f, 0.f, 0.f, -2, 0.f, 1, -15, -15, -10.f, -10.f, 0.f, 0.f, 0.f, 1, -15, -15, -10.f, -10.f, 0.f, 0.f, 0.f, 1};
hb_vector_t<float> rounded_deltas_2 {0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1, 0.f, 4, -2, 0.f, 1, 0.f, 4, -2, 0.f, 68, 68, 48, 48, 0.f, 0.f, 0.f, 4, 0.f, 0.f, 1, -1, 1, 5, -1, -4, 51, 51, 37, 37, 0.f, 0.f, 0.f, -1, 51, 51, 37, 37, 0.f, 0.f, 0.f, -1};
for (unsigned i = 0; i < 65; i++)
{
if (i < 23)
{
assert (tuple_variations.tuple_vars[0].indices[i] == 0);
assert (tuple_variations.tuple_vars[1].indices[i] == 0);
}
else
{
assert (tuple_variations.tuple_vars[0].indices[i] == 1);
assert (tuple_variations.tuple_vars[1].indices[i] == 1);
assert (roundf (tuple_variations.tuple_vars[0].deltas_x[i]) == rounded_deltas_1[i]);
assert (roundf (tuple_variations.tuple_vars[1].deltas_x[i]) == rounded_deltas_2[i]);
}
}
}
int

Loading…
Cancel
Save