diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2019-05-24 23:03:55 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2019-05-24 23:03:55 +0000 |
commit | 77ba432cf7f046d3f5c29d738279e898bdd02a5c (patch) | |
tree | 92d5078972de2b02a7af1d7ef72cf99a16a441b4 /Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc | |
parent | 676d0c444418989d8c0c8d1c60ed3d52f9290c80 (diff) |
harfbuzz-2.5.0
git-svn-id: svn://tug.org/texlive/trunk@51218 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc')
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc new file mode 100644 index 00000000000..333a892429d --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/test-algs.cc @@ -0,0 +1,91 @@ +/* + * Copyright © 2019 Facebook, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Facebook Author(s): Behdad Esfahbod + */ + +#include "hb.hh" +#include "hb-algs.hh" + + +static char * +test_func (int a, char **b) +{ + return b ? b[a] : nullptr; +} + +struct A +{ + void a () {} +}; + +int +main (int argc, char **argv) +{ + int i = 1; + auto p = hb_pair (1, i); + + p.second = 2; + assert (i == 2); + + const int c = 3; + auto pc = hb_pair (1, c); + assert (pc.second == 3); + + auto q = p; + assert (&q != &p); + q.second = 4; + assert (i == 4); + + hb_invoke (test_func, 0, nullptr); + + A a; + hb_invoke (&A::a, a); + + assert (1 == hb_min (8, 1)); + assert (8 == hb_max (8, 1)); + + int x = 1, y = 2; + hb_min (x, 3); + hb_min (3, x); + hb_min (x, 4 + 3); + int &z = hb_min (x, y); + z = 3; + assert (x == 3); + + hb_pair_t<const int*, int> xp = hb_pair_t<int *, long> (nullptr, 0); + xp = hb_pair_t<int *, double> (nullptr, 1); + xp = hb_pair_t<const int*, int> (nullptr, 1); + + assert (3 == hb_partial (hb_min, 3) (4)); + assert (3 == hb_partial<1> (hb_min, 4) (3)); + + auto M0 = hb_partial<2> (hb_max, 0); + assert (M0 (-2) == 0); + assert (M0 (+2) == 2); + + assert (hb_add (2) (5) == 7); + assert (hb_add (5) (2) == 7); + + return 0; +} |