tomlplusplus/tests/unicode_generated.cpp
Mark Gillard fd07301bae improved support for __fp16, _Float16 and __float128
also:
- fixed a bunch of doxygen parsing issues
- added `#define` leak detection to the single-header script
- renamed `TOML_ALL_INLINE` to `TOML_HEADER_ONLY` (the old one still works too)
- simplified abi namespace definitions
2020-07-25 20:50:24 +03:00

715 lines
53 KiB
C++

//# This file is a part of toml++ and is subject to the the terms of the MIT license.
//# Copyright (c) 2019-2020 Mark Gillard <mark.gillard@outlook.com.au>
//# See https://github.com/marzer/tomlplusplus/blob/master/LICENSE for the full license text.
// SPDX-License-Identifier: MIT
//#-----
//# this file was generated by generate_unicode_functions.py - do not modify it directly
#include "tests.h"
#include "unicode.h"
using namespace toml::impl;
TEST_CASE("unicode - is_hexadecimal_digit")
{
static constexpr auto fn = is_hexadecimal_digit;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'0', U'9' }, { U'A', U'F' }, { U'a', U'f' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'/' }, { U':', U'@' }, { U'G', U'`' },
{ U'g', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
}
#if TOML_LANG_UNRELEASED // toml/issues/687 (unicode bare keys)
TEST_CASE("unicode - is_unicode_letter")
{
static constexpr auto fn = is_unicode_letter;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u00C0', U'\u00D6' }, { U'\u00D8', U'\u00F6' }, { U'\u00F8', U'\u02C1' },
{ U'\u02C6', U'\u02D1' }, { U'\u02E0', U'\u02E4' }, { U'\u0370', U'\u0374' },
{ U'\u0376', U'\u0377' }, { U'\u037A', U'\u037D' }, { U'\u0388', U'\u038A' },
{ U'\u038E', U'\u03A1' }, { U'\u03A3', U'\u03F5' }, { U'\u03F7', U'\u0481' },
{ U'\u048A', U'\u052F' }, { U'\u0531', U'\u0556' }, { U'\u0560', U'\u0588' },
{ U'\u05D0', U'\u05EA' }, { U'\u05EF', U'\u05F2' }, { U'\u0620', U'\u064A' },
{ U'\u066E', U'\u066F' }, { U'\u0671', U'\u06D3' }, { U'\u06E5', U'\u06E6' },
{ U'\u06EE', U'\u06EF' }, { U'\u06FA', U'\u06FC' }, { U'\u0712', U'\u072F' },
{ U'\u074D', U'\u07A5' }, { U'\u07CA', U'\u07EA' }, { U'\u07F4', U'\u07F5' },
{ U'\u0800', U'\u0815' }, { U'\u0840', U'\u0858' }, { U'\u0860', U'\u086A' },
{ U'\u08A0', U'\u08B4' }, { U'\u08B6', U'\u08C7' }, { U'\u0904', U'\u0939' },
{ U'\u0958', U'\u0961' }, { U'\u0971', U'\u0980' }, { U'\u0985', U'\u098C' },
{ U'\u098F', U'\u0990' }, { U'\u0993', U'\u09A8' }, { U'\u09AA', U'\u09B0' },
{ U'\u09B6', U'\u09B9' }, { U'\u09DC', U'\u09DD' }, { U'\u09DF', U'\u09E1' },
{ U'\u09F0', U'\u09F1' }, { U'\u0A05', U'\u0A0A' }, { U'\u0A0F', U'\u0A10' },
{ U'\u0A13', U'\u0A28' }, { U'\u0A2A', U'\u0A30' }, { U'\u0A32', U'\u0A33' },
{ U'\u0A35', U'\u0A36' }, { U'\u0A38', U'\u0A39' }, { U'\u0A59', U'\u0A5C' },
{ U'\u0A72', U'\u0A74' }, { U'\u0A85', U'\u0A8D' }, { U'\u0A8F', U'\u0A91' },
{ U'\u0A93', U'\u0AA8' }, { U'\u0AAA', U'\u0AB0' }, { U'\u0AB2', U'\u0AB3' },
{ U'\u0AB5', U'\u0AB9' }, { U'\u0AE0', U'\u0AE1' }, { U'\u0B05', U'\u0B0C' },
{ U'\u0B0F', U'\u0B10' }, { U'\u0B13', U'\u0B28' }, { U'\u0B2A', U'\u0B30' },
{ U'\u0B32', U'\u0B33' }, { U'\u0B35', U'\u0B39' }, { U'\u0B5C', U'\u0B5D' },
{ U'\u0B5F', U'\u0B61' }, { U'\u0B85', U'\u0B8A' }, { U'\u0B8E', U'\u0B90' },
{ U'\u0B92', U'\u0B95' }, { U'\u0B99', U'\u0B9A' }, { U'\u0B9E', U'\u0B9F' },
{ U'\u0BA3', U'\u0BA4' }, { U'\u0BA8', U'\u0BAA' }, { U'\u0BAE', U'\u0BB9' },
{ U'\u0C05', U'\u0C0C' }, { U'\u0C0E', U'\u0C10' }, { U'\u0C12', U'\u0C28' },
{ U'\u0C2A', U'\u0C39' }, { U'\u0C58', U'\u0C5A' }, { U'\u0C60', U'\u0C61' },
{ U'\u0C85', U'\u0C8C' }, { U'\u0C8E', U'\u0C90' }, { U'\u0C92', U'\u0CA8' },
{ U'\u0CAA', U'\u0CB3' }, { U'\u0CB5', U'\u0CB9' }, { U'\u0CE0', U'\u0CE1' },
{ U'\u0CF1', U'\u0CF2' }, { U'\u0D04', U'\u0D0C' }, { U'\u0D0E', U'\u0D10' },
{ U'\u0D12', U'\u0D3A' }, { U'\u0D54', U'\u0D56' }, { U'\u0D5F', U'\u0D61' },
{ U'\u0D7A', U'\u0D7F' }, { U'\u0D85', U'\u0D96' }, { U'\u0D9A', U'\u0DB1' },
{ U'\u0DB3', U'\u0DBB' }, { U'\u0DC0', U'\u0DC6' }, { U'\u0E01', U'\u0E30' },
{ U'\u0E32', U'\u0E33' }, { U'\u0E40', U'\u0E46' }, { U'\u0E81', U'\u0E82' },
{ U'\u0E86', U'\u0E8A' }, { U'\u0E8C', U'\u0EA3' }, { U'\u0EA7', U'\u0EB0' },
{ U'\u0EB2', U'\u0EB3' }, { U'\u0EC0', U'\u0EC4' }, { U'\u0EDC', U'\u0EDF' },
{ U'\u0F40', U'\u0F47' }, { U'\u0F49', U'\u0F6C' }, { U'\u0F88', U'\u0F8C' },
{ U'\u1000', U'\u102A' }, { U'\u1050', U'\u1055' }, { U'\u105A', U'\u105D' },
{ U'\u1065', U'\u1066' }, { U'\u106E', U'\u1070' }, { U'\u1075', U'\u1081' },
{ U'\u10A0', U'\u10C5' }, { U'\u10D0', U'\u10FA' }, { U'\u10FC', U'\u1248' },
{ U'\u124A', U'\u124D' }, { U'\u1250', U'\u1256' }, { U'\u125A', U'\u125D' },
{ U'\u1260', U'\u1288' }, { U'\u128A', U'\u128D' }, { U'\u1290', U'\u12B0' },
{ U'\u12B2', U'\u12B5' }, { U'\u12B8', U'\u12BE' }, { U'\u12C2', U'\u12C5' },
{ U'\u12C8', U'\u12D6' }, { U'\u12D8', U'\u1310' }, { U'\u1312', U'\u1315' },
{ U'\u1318', U'\u135A' }, { U'\u1380', U'\u138F' }, { U'\u13A0', U'\u13F5' },
{ U'\u13F8', U'\u13FD' }, { U'\u1401', U'\u166C' }, { U'\u166F', U'\u167F' },
{ U'\u1681', U'\u169A' }, { U'\u16A0', U'\u16EA' }, { U'\u16F1', U'\u16F8' },
{ U'\u1700', U'\u170C' }, { U'\u170E', U'\u1711' }, { U'\u1720', U'\u1731' },
{ U'\u1740', U'\u1751' }, { U'\u1760', U'\u176C' }, { U'\u176E', U'\u1770' },
{ U'\u1780', U'\u17B3' }, { U'\u1820', U'\u1878' }, { U'\u1880', U'\u1884' },
{ U'\u1887', U'\u18A8' }, { U'\u18B0', U'\u18F5' }, { U'\u1900', U'\u191E' },
{ U'\u1950', U'\u196D' }, { U'\u1970', U'\u1974' }, { U'\u1980', U'\u19AB' },
{ U'\u19B0', U'\u19C9' }, { U'\u1A00', U'\u1A16' }, { U'\u1A20', U'\u1A54' },
{ U'\u1B05', U'\u1B33' }, { U'\u1B45', U'\u1B4B' }, { U'\u1B83', U'\u1BA0' },
{ U'\u1BAE', U'\u1BAF' }, { U'\u1BBA', U'\u1BE5' }, { U'\u1C00', U'\u1C23' },
{ U'\u1C4D', U'\u1C4F' }, { U'\u1C5A', U'\u1C7D' }, { U'\u1C80', U'\u1C88' },
{ U'\u1C90', U'\u1CBA' }, { U'\u1CBD', U'\u1CBF' }, { U'\u1CE9', U'\u1CEC' },
{ U'\u1CEE', U'\u1CF3' }, { U'\u1CF5', U'\u1CF6' }, { U'\u1D00', U'\u1DBF' },
{ U'\u1E00', U'\u1F15' }, { U'\u1F18', U'\u1F1D' }, { U'\u1F20', U'\u1F45' },
{ U'\u1F48', U'\u1F4D' }, { U'\u1F50', U'\u1F57' }, { U'\u1F5F', U'\u1F7D' },
{ U'\u1F80', U'\u1FB4' }, { U'\u1FB6', U'\u1FBC' }, { U'\u1FC2', U'\u1FC4' },
{ U'\u1FC6', U'\u1FCC' }, { U'\u1FD0', U'\u1FD3' }, { U'\u1FD6', U'\u1FDB' },
{ U'\u1FE0', U'\u1FEC' }, { U'\u1FF2', U'\u1FF4' }, { U'\u1FF6', U'\u1FFC' },
{ U'\u2090', U'\u209C' }, { U'\u210A', U'\u2113' }, { U'\u2119', U'\u211D' },
{ U'\u212A', U'\u212D' }, { U'\u212F', U'\u2139' }, { U'\u213C', U'\u213F' },
{ U'\u2145', U'\u2149' }, { U'\u2183', U'\u2184' }, { U'\u2C00', U'\u2C2E' },
{ U'\u2C30', U'\u2C5E' }, { U'\u2C60', U'\u2CE4' }, { U'\u2CEB', U'\u2CEE' },
{ U'\u2CF2', U'\u2CF3' }, { U'\u2D00', U'\u2D25' }, { U'\u2D30', U'\u2D67' },
{ U'\u2D80', U'\u2D96' }, { U'\u2DA0', U'\u2DA6' }, { U'\u2DA8', U'\u2DAE' },
{ U'\u2DB0', U'\u2DB6' }, { U'\u2DB8', U'\u2DBE' }, { U'\u2DC0', U'\u2DC6' },
{ U'\u2DC8', U'\u2DCE' }, { U'\u2DD0', U'\u2DD6' }, { U'\u2DD8', U'\u2DDE' },
{ U'\u3005', U'\u3006' }, { U'\u3031', U'\u3035' }, { U'\u303B', U'\u303C' },
{ U'\u3041', U'\u3096' }, { U'\u309D', U'\u309F' }, { U'\u30A1', U'\u30FA' },
{ U'\u30FC', U'\u30FF' }, { U'\u3105', U'\u312F' }, { U'\u3131', U'\u318E' },
{ U'\u31A0', U'\u31BF' }, { U'\u31F0', U'\u31FF' }, { U'\u3400', U'\u4DBE' },
{ U'\u4E00', U'\u9FFB' }, { U'\uA000', U'\uA48C' }, { U'\uA4D0', U'\uA4FD' },
{ U'\uA500', U'\uA60C' }, { U'\uA610', U'\uA61F' }, { U'\uA62A', U'\uA62B' },
{ U'\uA640', U'\uA66E' }, { U'\uA67F', U'\uA69D' }, { U'\uA6A0', U'\uA6E5' },
{ U'\uA717', U'\uA71F' }, { U'\uA722', U'\uA788' }, { U'\uA78B', U'\uA7BF' },
{ U'\uA7C2', U'\uA7CA' }, { U'\uA7F5', U'\uA801' }, { U'\uA803', U'\uA805' },
{ U'\uA807', U'\uA80A' }, { U'\uA80C', U'\uA822' }, { U'\uA840', U'\uA873' },
{ U'\uA882', U'\uA8B3' }, { U'\uA8F2', U'\uA8F7' }, { U'\uA8FD', U'\uA8FE' },
{ U'\uA90A', U'\uA925' }, { U'\uA930', U'\uA946' }, { U'\uA960', U'\uA97C' },
{ U'\uA984', U'\uA9B2' }, { U'\uA9E0', U'\uA9E4' }, { U'\uA9E6', U'\uA9EF' },
{ U'\uA9FA', U'\uA9FE' }, { U'\uAA00', U'\uAA28' }, { U'\uAA40', U'\uAA42' },
{ U'\uAA44', U'\uAA4B' }, { U'\uAA60', U'\uAA76' }, { U'\uAA7E', U'\uAAAF' },
{ U'\uAAB5', U'\uAAB6' }, { U'\uAAB9', U'\uAABD' }, { U'\uAADB', U'\uAADD' },
{ U'\uAAE0', U'\uAAEA' }, { U'\uAAF2', U'\uAAF4' }, { U'\uAB01', U'\uAB06' },
{ U'\uAB09', U'\uAB0E' }, { U'\uAB11', U'\uAB16' }, { U'\uAB20', U'\uAB26' },
{ U'\uAB28', U'\uAB2E' }, { U'\uAB30', U'\uAB5A' }, { U'\uAB5C', U'\uAB69' },
{ U'\uAB70', U'\uABE2' }, { U'\uAC00', U'\uD7A2' }, { U'\uD7B0', U'\uD7C6' },
{ U'\uD7CB', U'\uD7FB' }, { U'\uF900', U'\uFA6D' }, { U'\uFA70', U'\uFAD9' },
{ U'\uFB00', U'\uFB06' }, { U'\uFB13', U'\uFB17' }, { U'\uFB1F', U'\uFB28' },
{ U'\uFB2A', U'\uFB36' }, { U'\uFB38', U'\uFB3C' }, { U'\uFB40', U'\uFB41' },
{ U'\uFB43', U'\uFB44' }, { U'\uFB46', U'\uFBB1' }, { U'\uFBD3', U'\uFD3D' },
{ U'\uFD50', U'\uFD8F' }, { U'\uFD92', U'\uFDC7' }, { U'\uFDF0', U'\uFDFB' },
{ U'\uFE70', U'\uFE74' }, { U'\uFE76', U'\uFEFC' }, { U'\uFF21', U'\uFF3A' },
{ U'\uFF41', U'\uFF5A' }, { U'\uFF66', U'\uFFBE' }, { U'\uFFC2', U'\uFFC7' },
{ U'\uFFCA', U'\uFFCF' }, { U'\uFFD2', U'\uFFD7' }, { U'\uFFDA', U'\uFFDC' },
{ U'\U00010000', U'\U0001000B' }, { U'\U0001000D', U'\U00010026' }, { U'\U00010028', U'\U0001003A' },
{ U'\U0001003C', U'\U0001003D' }, { U'\U0001003F', U'\U0001004D' }, { U'\U00010050', U'\U0001005D' },
{ U'\U00010080', U'\U000100FA' }, { U'\U00010280', U'\U0001029C' }, { U'\U000102A0', U'\U000102D0' },
{ U'\U00010300', U'\U0001031F' }, { U'\U0001032D', U'\U00010340' }, { U'\U00010342', U'\U00010349' },
{ U'\U00010350', U'\U00010375' }, { U'\U00010380', U'\U0001039D' }, { U'\U000103A0', U'\U000103C3' },
{ U'\U000103C8', U'\U000103CF' }, { U'\U00010400', U'\U0001049D' }, { U'\U000104B0', U'\U000104D3' },
{ U'\U000104D8', U'\U000104FB' }, { U'\U00010500', U'\U00010527' }, { U'\U00010530', U'\U00010563' },
{ U'\U00010600', U'\U00010736' }, { U'\U00010740', U'\U00010755' }, { U'\U00010760', U'\U00010767' },
{ U'\U00010800', U'\U00010805' }, { U'\U0001080A', U'\U00010835' }, { U'\U00010837', U'\U00010838' },
{ U'\U0001083F', U'\U00010855' }, { U'\U00010860', U'\U00010876' }, { U'\U00010880', U'\U0001089E' },
{ U'\U000108E0', U'\U000108F2' }, { U'\U000108F4', U'\U000108F5' }, { U'\U00010900', U'\U00010915' },
{ U'\U00010920', U'\U00010939' }, { U'\U00010980', U'\U000109B7' }, { U'\U000109BE', U'\U000109BF' },
{ U'\U00010A10', U'\U00010A13' }, { U'\U00010A15', U'\U00010A17' }, { U'\U00010A19', U'\U00010A35' },
{ U'\U00010A60', U'\U00010A7C' }, { U'\U00010A80', U'\U00010A9C' }, { U'\U00010AC0', U'\U00010AC7' },
{ U'\U00010AC9', U'\U00010AE4' }, { U'\U00010B00', U'\U00010B35' }, { U'\U00010B40', U'\U00010B55' },
{ U'\U00010B60', U'\U00010B72' }, { U'\U00010B80', U'\U00010B91' }, { U'\U00010C00', U'\U00010C48' },
{ U'\U00010C80', U'\U00010CB2' }, { U'\U00010CC0', U'\U00010CF2' }, { U'\U00010D00', U'\U00010D23' },
{ U'\U00010E80', U'\U00010EA9' }, { U'\U00010EB0', U'\U00010EB1' }, { U'\U00010F00', U'\U00010F1C' },
{ U'\U00010F30', U'\U00010F45' }, { U'\U00010FB0', U'\U00010FC4' }, { U'\U00010FE0', U'\U00010FF6' },
{ U'\U00011003', U'\U00011037' }, { U'\U00011083', U'\U000110AF' }, { U'\U000110D0', U'\U000110E8' },
{ U'\U00011103', U'\U00011126' }, { U'\U00011150', U'\U00011172' }, { U'\U00011183', U'\U000111B2' },
{ U'\U000111C1', U'\U000111C4' }, { U'\U00011200', U'\U00011211' }, { U'\U00011213', U'\U0001122B' },
{ U'\U00011280', U'\U00011286' }, { U'\U0001128A', U'\U0001128D' }, { U'\U0001128F', U'\U0001129D' },
{ U'\U0001129F', U'\U000112A8' }, { U'\U000112B0', U'\U000112DE' }, { U'\U00011305', U'\U0001130C' },
{ U'\U0001130F', U'\U00011310' }, { U'\U00011313', U'\U00011328' }, { U'\U0001132A', U'\U00011330' },
{ U'\U00011332', U'\U00011333' }, { U'\U00011335', U'\U00011339' }, { U'\U0001135D', U'\U00011361' },
{ U'\U00011400', U'\U00011434' }, { U'\U00011447', U'\U0001144A' }, { U'\U0001145F', U'\U00011461' },
{ U'\U00011480', U'\U000114AF' }, { U'\U000114C4', U'\U000114C5' }, { U'\U00011580', U'\U000115AE' },
{ U'\U000115D8', U'\U000115DB' }, { U'\U00011600', U'\U0001162F' }, { U'\U00011680', U'\U000116AA' },
{ U'\U00011700', U'\U0001171A' }, { U'\U00011800', U'\U0001182B' }, { U'\U000118A0', U'\U000118DF' },
{ U'\U000118FF', U'\U00011906' }, { U'\U0001190C', U'\U00011913' }, { U'\U00011915', U'\U00011916' },
{ U'\U00011918', U'\U0001192F' }, { U'\U000119A0', U'\U000119A7' }, { U'\U000119AA', U'\U000119D0' },
{ U'\U00011A0B', U'\U00011A32' }, { U'\U00011A5C', U'\U00011A89' }, { U'\U00011AC0', U'\U00011AF8' },
{ U'\U00011C00', U'\U00011C08' }, { U'\U00011C0A', U'\U00011C2E' }, { U'\U00011C72', U'\U00011C8F' },
{ U'\U00011D00', U'\U00011D06' }, { U'\U00011D08', U'\U00011D09' }, { U'\U00011D0B', U'\U00011D30' },
{ U'\U00011D60', U'\U00011D65' }, { U'\U00011D67', U'\U00011D68' }, { U'\U00011D6A', U'\U00011D89' },
{ U'\U00011EE0', U'\U00011EF2' }, { U'\U00012000', U'\U00012399' }, { U'\U00012480', U'\U00012543' },
{ U'\U00013000', U'\U0001342E' }, { U'\U00014400', U'\U00014646' }, { U'\U00016800', U'\U00016A38' },
{ U'\U00016A40', U'\U00016A5E' }, { U'\U00016AD0', U'\U00016AED' }, { U'\U00016B00', U'\U00016B2F' },
{ U'\U00016B40', U'\U00016B43' }, { U'\U00016B63', U'\U00016B77' }, { U'\U00016B7D', U'\U00016B8F' },
{ U'\U00016E40', U'\U00016E7F' }, { U'\U00016F00', U'\U00016F4A' }, { U'\U00016F93', U'\U00016F9F' },
{ U'\U00016FE0', U'\U00016FE1' }, { U'\U00017000', U'\U000187F6' }, { U'\U00018800', U'\U00018CD5' },
{ U'\U00018D00', U'\U00018D07' }, { U'\U0001B000', U'\U0001B11E' }, { U'\U0001B150', U'\U0001B152' },
{ U'\U0001B164', U'\U0001B167' }, { U'\U0001B170', U'\U0001B2FB' }, { U'\U0001BC00', U'\U0001BC6A' },
{ U'\U0001BC70', U'\U0001BC7C' }, { U'\U0001BC80', U'\U0001BC88' }, { U'\U0001BC90', U'\U0001BC99' },
{ U'\U0001D400', U'\U0001D454' }, { U'\U0001D456', U'\U0001D49C' }, { U'\U0001D49E', U'\U0001D49F' },
{ U'\U0001D4A5', U'\U0001D4A6' }, { U'\U0001D4A9', U'\U0001D4AC' }, { U'\U0001D4AE', U'\U0001D4B9' },
{ U'\U0001D4BD', U'\U0001D4C3' }, { U'\U0001D4C5', U'\U0001D505' }, { U'\U0001D507', U'\U0001D50A' },
{ U'\U0001D50D', U'\U0001D514' }, { U'\U0001D516', U'\U0001D51C' }, { U'\U0001D51E', U'\U0001D539' },
{ U'\U0001D53B', U'\U0001D53E' }, { U'\U0001D540', U'\U0001D544' }, { U'\U0001D54A', U'\U0001D550' },
{ U'\U0001D552', U'\U0001D6A5' }, { U'\U0001D6A8', U'\U0001D6C0' }, { U'\U0001D6C2', U'\U0001D6DA' },
{ U'\U0001D6DC', U'\U0001D6FA' }, { U'\U0001D6FC', U'\U0001D714' }, { U'\U0001D716', U'\U0001D734' },
{ U'\U0001D736', U'\U0001D74E' }, { U'\U0001D750', U'\U0001D76E' }, { U'\U0001D770', U'\U0001D788' },
{ U'\U0001D78A', U'\U0001D7A8' }, { U'\U0001D7AA', U'\U0001D7C2' }, { U'\U0001D7C4', U'\U0001D7CB' },
{ U'\U0001E100', U'\U0001E12C' }, { U'\U0001E137', U'\U0001E13D' }, { U'\U0001E2C0', U'\U0001E2EB' },
{ U'\U0001E800', U'\U0001E8C4' }, { U'\U0001E900', U'\U0001E943' }, { U'\U0001EE00', U'\U0001EE03' },
{ U'\U0001EE05', U'\U0001EE1F' }, { U'\U0001EE21', U'\U0001EE22' }, { U'\U0001EE29', U'\U0001EE32' },
{ U'\U0001EE34', U'\U0001EE37' }, { U'\U0001EE4D', U'\U0001EE4F' }, { U'\U0001EE51', U'\U0001EE52' },
{ U'\U0001EE61', U'\U0001EE62' }, { U'\U0001EE67', U'\U0001EE6A' }, { U'\U0001EE6C', U'\U0001EE72' },
{ U'\U0001EE74', U'\U0001EE77' }, { U'\U0001EE79', U'\U0001EE7C' }, { U'\U0001EE80', U'\U0001EE89' },
{ U'\U0001EE8B', U'\U0001EE9B' }, { U'\U0001EEA1', U'\U0001EEA3' }, { U'\U0001EEA5', U'\U0001EEA9' },
{ U'\U0001EEAB', U'\U0001EEBB' }, { U'\U00020000', U'\U0002A6DC' }, { U'\U0002A700', U'\U0002B733' },
{ U'\U0002B740', U'\U0002B81C' }, { U'\U0002B820', U'\U0002CEA0' }, { U'\U0002CEB0', U'\U0002EBDF' },
{ U'\U0002F800', U'\U0002FA1D' }, { U'\U00030000', U'\U00031349' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u00AA', U'\u00B5', U'\u00BA', U'\u02EC', U'\u02EE', U'\u037F',
U'\u0386', U'\u038C', U'\u0559', U'\u06D5', U'\u06FF', U'\u0710',
U'\u07B1', U'\u07FA', U'\u081A', U'\u0824', U'\u0828', U'\u093D',
U'\u0950', U'\u09B2', U'\u09BD', U'\u09CE', U'\u09FC', U'\u0A5E',
U'\u0ABD', U'\u0AD0', U'\u0AF9', U'\u0B3D', U'\u0B71', U'\u0B83',
U'\u0B9C', U'\u0BD0', U'\u0C3D', U'\u0C80', U'\u0CBD', U'\u0CDE',
U'\u0D3D', U'\u0D4E', U'\u0DBD', U'\u0E84', U'\u0EA5', U'\u0EBD',
U'\u0EC6', U'\u0F00', U'\u103F', U'\u1061', U'\u108E', U'\u10C7',
U'\u10CD', U'\u1258', U'\u12C0', U'\u17D7', U'\u17DC', U'\u18AA',
U'\u1AA7', U'\u1CFA', U'\u1F59', U'\u1F5B', U'\u1F5D', U'\u1FBE',
U'\u2071', U'\u207F', U'\u2102', U'\u2107', U'\u2115', U'\u2124',
U'\u2126', U'\u2128', U'\u214E', U'\u2D27', U'\u2D2D', U'\u2D6F',
U'\u2E2F', U'\uA8FB', U'\uA9CF', U'\uAA7A', U'\uAAB1', U'\uAAC0',
U'\uAAC2', U'\uFB1D', U'\uFB3E', U'\U00010808', U'\U0001083C', U'\U00010A00',
U'\U00010F27', U'\U00011144', U'\U00011147', U'\U00011176', U'\U000111DA', U'\U000111DC',
U'\U00011288', U'\U0001133D', U'\U00011350', U'\U000114C7', U'\U00011644', U'\U000116B8',
U'\U00011909', U'\U0001193F', U'\U00011941', U'\U000119E1', U'\U000119E3', U'\U00011A00',
U'\U00011A3A', U'\U00011A50', U'\U00011A9D', U'\U00011C40', U'\U00011D46', U'\U00011D98',
U'\U00011FB0', U'\U00016F50', U'\U00016FE3', U'\U0001D4A2', U'\U0001D4BB', U'\U0001D546',
U'\U0001E14E', U'\U0001E94B', U'\U0001EE24', U'\U0001EE27', U'\U0001EE39', U'\U0001EE3B',
U'\U0001EE42', U'\U0001EE47', U'\U0001EE49', U'\U0001EE4B', U'\U0001EE54', U'\U0001EE57',
U'\U0001EE59', U'\U0001EE5B', U'\U0001EE5D', U'\U0001EE5F', U'\U0001EE64', U'\U0001EE7E',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u00A9' }, { U'\u00AB', U'\u00B4' }, { U'\u00B6', U'\u00B9' },
{ U'\u00BB', U'\u00BF' }, { U'\u02C2', U'\u02C5' }, { U'\u02D2', U'\u02DF' },
{ U'\u02E5', U'\u02EB' }, { U'\u02EF', U'\u036F' }, { U'\u0378', U'\u0379' },
{ U'\u0380', U'\u0385' }, { U'\u0482', U'\u0489' }, { U'\u0557', U'\u0558' },
{ U'\u055A', U'\u055F' }, { U'\u0589', U'\u05CF' }, { U'\u05EB', U'\u05EE' },
{ U'\u05F3', U'\u061F' }, { U'\u064B', U'\u066D' }, { U'\u06D6', U'\u06E4' },
{ U'\u06E7', U'\u06ED' }, { U'\u06F0', U'\u06F9' }, { U'\u06FD', U'\u06FE' },
{ U'\u0700', U'\u070F' }, { U'\u0730', U'\u074C' }, { U'\u07A6', U'\u07B0' },
{ U'\u07B2', U'\u07C9' }, { U'\u07EB', U'\u07F3' }, { U'\u07F6', U'\u07F9' },
{ U'\u07FB', U'\u07FF' }, { U'\u0816', U'\u0819' }, { U'\u081B', U'\u0823' },
{ U'\u0825', U'\u0827' }, { U'\u0829', U'\u083F' }, { U'\u0859', U'\u085F' },
{ U'\u086B', U'\u089F' }, { U'\u08C8', U'\u0903' }, { U'\u093A', U'\u093C' },
{ U'\u093E', U'\u094F' }, { U'\u0951', U'\u0957' }, { U'\u0962', U'\u0970' },
{ U'\u0981', U'\u0984' }, { U'\u098D', U'\u098E' }, { U'\u0991', U'\u0992' },
{ U'\u09B3', U'\u09B5' }, { U'\u09BA', U'\u09BC' }, { U'\u09BE', U'\u09CD' },
{ U'\u09CF', U'\u09DB' }, { U'\u09E2', U'\u09EF' }, { U'\u09F2', U'\u09FB' },
{ U'\u09FD', U'\u0A04' }, { U'\u0A0B', U'\u0A0E' }, { U'\u0A11', U'\u0A12' },
{ U'\u0A3A', U'\u0A58' }, { U'\u0A5F', U'\u0A71' }, { U'\u0A75', U'\u0A84' },
{ U'\u0ABA', U'\u0ABC' }, { U'\u0ABE', U'\u0ACF' }, { U'\u0AD1', U'\u0ADF' },
{ U'\u0AE2', U'\u0AF8' }, { U'\u0AFA', U'\u0B04' }, { U'\u0B0D', U'\u0B0E' },
{ U'\u0B11', U'\u0B12' }, { U'\u0B3A', U'\u0B3C' }, { U'\u0B3E', U'\u0B5B' },
{ U'\u0B62', U'\u0B70' }, { U'\u0B72', U'\u0B82' }, { U'\u0B8B', U'\u0B8D' },
{ U'\u0B96', U'\u0B98' }, { U'\u0BA0', U'\u0BA2' }, { U'\u0BA5', U'\u0BA7' },
{ U'\u0BAB', U'\u0BAD' }, { U'\u0BBA', U'\u0BCF' }, { U'\u0BD1', U'\u0C04' },
{ U'\u0C3A', U'\u0C3C' }, { U'\u0C3E', U'\u0C57' }, { U'\u0C5B', U'\u0C5F' },
{ U'\u0C62', U'\u0C7F' }, { U'\u0C81', U'\u0C84' }, { U'\u0CBA', U'\u0CBC' },
{ U'\u0CBE', U'\u0CDD' }, { U'\u0CE2', U'\u0CF0' }, { U'\u0CF3', U'\u0D03' },
{ U'\u0D3B', U'\u0D3C' }, { U'\u0D3E', U'\u0D4D' }, { U'\u0D4F', U'\u0D53' },
{ U'\u0D57', U'\u0D5E' }, { U'\u0D62', U'\u0D79' }, { U'\u0D80', U'\u0D84' },
{ U'\u0D97', U'\u0D99' }, { U'\u0DBE', U'\u0DBF' }, { U'\u0DC7', U'\u0E00' },
{ U'\u0E34', U'\u0E3F' }, { U'\u0E47', U'\u0E80' }, { U'\u0EB4', U'\u0EBC' },
{ U'\u0EBE', U'\u0EBF' }, { U'\u0EC7', U'\u0EDB' }, { U'\u0EE0', U'\u0EFF' },
{ U'\u0F01', U'\u0F3F' }, { U'\u0F6D', U'\u0F87' }, { U'\u0F8D', U'\u0FFF' },
{ U'\u102B', U'\u103E' }, { U'\u1040', U'\u104F' }, { U'\u1056', U'\u1059' },
{ U'\u105E', U'\u1060' }, { U'\u1062', U'\u1064' }, { U'\u1067', U'\u106D' },
{ U'\u1071', U'\u1074' }, { U'\u1082', U'\u108D' }, { U'\u108F', U'\u109F' },
{ U'\u10C8', U'\u10CC' }, { U'\u10CE', U'\u10CF' }, { U'\u124E', U'\u124F' },
{ U'\u125E', U'\u125F' }, { U'\u128E', U'\u128F' }, { U'\u12B6', U'\u12B7' },
{ U'\u12C6', U'\u12C7' }, { U'\u1316', U'\u1317' }, { U'\u135B', U'\u137F' },
{ U'\u1390', U'\u139F' }, { U'\u13F6', U'\u13F7' }, { U'\u13FE', U'\u1400' },
{ U'\u166D', U'\u166E' }, { U'\u169B', U'\u169F' }, { U'\u16EB', U'\u16F0' },
{ U'\u16F9', U'\u16FF' }, { U'\u1712', U'\u171F' }, { U'\u1732', U'\u173F' },
{ U'\u1752', U'\u175F' }, { U'\u1771', U'\u177F' }, { U'\u17B4', U'\u17D6' },
{ U'\u17D8', U'\u17DB' }, { U'\u17DD', U'\u181F' }, { U'\u1879', U'\u187F' },
{ U'\u1885', U'\u1886' }, { U'\u18AB', U'\u18AF' }, { U'\u18F6', U'\u18FF' },
{ U'\u191F', U'\u194F' }, { U'\u196E', U'\u196F' }, { U'\u1975', U'\u197F' },
{ U'\u19AC', U'\u19AF' }, { U'\u19CA', U'\u19FF' }, { U'\u1A17', U'\u1A1F' },
{ U'\u1A55', U'\u1AA6' }, { U'\u1AA8', U'\u1B04' }, { U'\u1B34', U'\u1B44' },
{ U'\u1B4C', U'\u1B82' }, { U'\u1BA1', U'\u1BAD' }, { U'\u1BB0', U'\u1BB9' },
{ U'\u1BE6', U'\u1BFF' }, { U'\u1C24', U'\u1C4C' }, { U'\u1C50', U'\u1C59' },
{ U'\u1C7E', U'\u1C7F' }, { U'\u1C89', U'\u1C8F' }, { U'\u1CBB', U'\u1CBC' },
{ U'\u1CC0', U'\u1CE8' }, { U'\u1CF7', U'\u1CF9' }, { U'\u1CFB', U'\u1CFF' },
{ U'\u1DC0', U'\u1DFF' }, { U'\u1F16', U'\u1F17' }, { U'\u1F1E', U'\u1F1F' },
{ U'\u1F46', U'\u1F47' }, { U'\u1F4E', U'\u1F4F' }, { U'\u1F7E', U'\u1F7F' },
{ U'\u1FBF', U'\u1FC1' }, { U'\u1FCD', U'\u1FCF' }, { U'\u1FD4', U'\u1FD5' },
{ U'\u1FDC', U'\u1FDF' }, { U'\u1FED', U'\u1FF1' }, { U'\u1FFD', U'\u2070' },
{ U'\u2072', U'\u207E' }, { U'\u2080', U'\u208F' }, { U'\u209D', U'\u2101' },
{ U'\u2103', U'\u2106' }, { U'\u2108', U'\u2109' }, { U'\u2116', U'\u2118' },
{ U'\u211E', U'\u2123' }, { U'\u213A', U'\u213B' }, { U'\u2140', U'\u2144' },
{ U'\u214A', U'\u214D' }, { U'\u214F', U'\u2182' }, { U'\u2185', U'\u2BFF' },
{ U'\u2CE5', U'\u2CEA' }, { U'\u2CEF', U'\u2CF1' }, { U'\u2CF4', U'\u2CFF' },
{ U'\u2D28', U'\u2D2C' }, { U'\u2D2E', U'\u2D2F' }, { U'\u2D68', U'\u2D6E' },
{ U'\u2D70', U'\u2D7F' }, { U'\u2D97', U'\u2D9F' }, { U'\u2DDF', U'\u2E2E' },
{ U'\u2E30', U'\u3004' }, { U'\u3007', U'\u3030' }, { U'\u3036', U'\u303A' },
{ U'\u303D', U'\u3040' }, { U'\u3097', U'\u309C' }, { U'\u3100', U'\u3104' },
{ U'\u318F', U'\u319F' }, { U'\u31C0', U'\u31EF' }, { U'\u3200', U'\u33FF' },
{ U'\u4DBF', U'\u4DFF' }, { U'\u9FFC', U'\u9FFF' }, { U'\uA48D', U'\uA4CF' },
{ U'\uA4FE', U'\uA4FF' }, { U'\uA60D', U'\uA60F' }, { U'\uA620', U'\uA629' },
{ U'\uA62C', U'\uA63F' }, { U'\uA66F', U'\uA67E' }, { U'\uA69E', U'\uA69F' },
{ U'\uA6E6', U'\uA716' }, { U'\uA720', U'\uA721' }, { U'\uA789', U'\uA78A' },
{ U'\uA7C0', U'\uA7C1' }, { U'\uA7CB', U'\uA7F4' }, { U'\uA823', U'\uA83F' },
{ U'\uA874', U'\uA881' }, { U'\uA8B4', U'\uA8F1' }, { U'\uA8F8', U'\uA8FA' },
{ U'\uA8FF', U'\uA909' }, { U'\uA926', U'\uA92F' }, { U'\uA947', U'\uA95F' },
{ U'\uA97D', U'\uA983' }, { U'\uA9B3', U'\uA9CE' }, { U'\uA9D0', U'\uA9DF' },
{ U'\uA9F0', U'\uA9F9' }, { U'\uAA29', U'\uAA3F' }, { U'\uAA4C', U'\uAA5F' },
{ U'\uAA77', U'\uAA79' }, { U'\uAA7B', U'\uAA7D' }, { U'\uAAB2', U'\uAAB4' },
{ U'\uAAB7', U'\uAAB8' }, { U'\uAABE', U'\uAABF' }, { U'\uAAC3', U'\uAADA' },
{ U'\uAADE', U'\uAADF' }, { U'\uAAEB', U'\uAAF1' }, { U'\uAAF5', U'\uAB00' },
{ U'\uAB07', U'\uAB08' }, { U'\uAB0F', U'\uAB10' }, { U'\uAB17', U'\uAB1F' },
{ U'\uAB6A', U'\uAB6F' }, { U'\uABE3', U'\uABFF' }, { U'\uD7A3', U'\uD7AF' },
{ U'\uD7C7', U'\uD7CA' }, { U'\uD7FC', U'\uF8FF' }, { U'\uFA6E', U'\uFA6F' },
{ U'\uFADA', U'\uFAFF' }, { U'\uFB07', U'\uFB12' }, { U'\uFB18', U'\uFB1C' },
{ U'\uFBB2', U'\uFBD2' }, { U'\uFD3E', U'\uFD4F' }, { U'\uFD90', U'\uFD91' },
{ U'\uFDC8', U'\uFDEF' }, { U'\uFDFC', U'\uFE6F' }, { U'\uFEFD', U'\uFF20' },
{ U'\uFF3B', U'\uFF40' }, { U'\uFF5B', U'\uFF65' }, { U'\uFFBF', U'\uFFC1' },
{ U'\uFFC8', U'\uFFC9' }, { U'\uFFD0', U'\uFFD1' }, { U'\uFFD8', U'\uFFD9' },
{ U'\uFFDD', U'\uFFFF' }, { U'\U0001004E', U'\U0001004F' }, { U'\U0001005E', U'\U0001007F' },
{ U'\U000100FB', U'\U0001027F' }, { U'\U0001029D', U'\U0001029F' }, { U'\U000102D1', U'\U000102FF' },
{ U'\U00010320', U'\U0001032C' }, { U'\U0001034A', U'\U0001034F' }, { U'\U00010376', U'\U0001037F' },
{ U'\U0001039E', U'\U0001039F' }, { U'\U000103C4', U'\U000103C7' }, { U'\U000103D0', U'\U000103FF' },
{ U'\U0001049E', U'\U000104AF' }, { U'\U000104D4', U'\U000104D7' }, { U'\U000104FC', U'\U000104FF' },
{ U'\U00010528', U'\U0001052F' }, { U'\U00010564', U'\U000105FF' }, { U'\U00010737', U'\U0001073F' },
{ U'\U00010756', U'\U0001075F' }, { U'\U00010768', U'\U000107FF' }, { U'\U00010806', U'\U00010807' },
{ U'\U00010839', U'\U0001083B' }, { U'\U0001083D', U'\U0001083E' }, { U'\U00010856', U'\U0001085F' },
{ U'\U00010877', U'\U0001087F' }, { U'\U0001089F', U'\U000108DF' }, { U'\U000108F6', U'\U000108FF' },
{ U'\U00010916', U'\U0001091F' }, { U'\U0001093A', U'\U0001097F' }, { U'\U000109B8', U'\U000109BD' },
{ U'\U000109C0', U'\U000109FF' }, { U'\U00010A01', U'\U00010A0F' }, { U'\U00010A36', U'\U00010A5F' },
{ U'\U00010A7D', U'\U00010A7F' }, { U'\U00010A9D', U'\U00010ABF' }, { U'\U00010AE5', U'\U00010AFF' },
{ U'\U00010B36', U'\U00010B3F' }, { U'\U00010B56', U'\U00010B5F' }, { U'\U00010B73', U'\U00010B7F' },
{ U'\U00010B92', U'\U00010BFF' }, { U'\U00010C49', U'\U00010C7F' }, { U'\U00010CB3', U'\U00010CBF' },
{ U'\U00010CF3', U'\U00010CFF' }, { U'\U00010D24', U'\U00010E7F' }, { U'\U00010EAA', U'\U00010EAF' },
{ U'\U00010EB2', U'\U00010EFF' }, { U'\U00010F1D', U'\U00010F26' }, { U'\U00010F28', U'\U00010F2F' },
{ U'\U00010F46', U'\U00010FAF' }, { U'\U00010FC5', U'\U00010FDF' }, { U'\U00010FF7', U'\U00011002' },
{ U'\U00011038', U'\U00011082' }, { U'\U000110B0', U'\U000110CF' }, { U'\U000110E9', U'\U00011102' },
{ U'\U00011127', U'\U00011143' }, { U'\U00011145', U'\U00011146' }, { U'\U00011148', U'\U0001114F' },
{ U'\U00011173', U'\U00011175' }, { U'\U00011177', U'\U00011182' }, { U'\U000111B3', U'\U000111C0' },
{ U'\U000111C5', U'\U000111D9' }, { U'\U000111DD', U'\U000111FF' }, { U'\U0001122C', U'\U0001127F' },
{ U'\U000112A9', U'\U000112AF' }, { U'\U000112DF', U'\U00011304' }, { U'\U0001130D', U'\U0001130E' },
{ U'\U00011311', U'\U00011312' }, { U'\U0001133A', U'\U0001133C' }, { U'\U0001133E', U'\U0001134F' },
{ U'\U00011351', U'\U0001135C' }, { U'\U00011362', U'\U000113FF' }, { U'\U00011435', U'\U00011446' },
{ U'\U0001144B', U'\U0001145E' }, { U'\U00011462', U'\U0001147F' }, { U'\U000114B0', U'\U000114C3' },
{ U'\U000114C8', U'\U0001157F' }, { U'\U000115AF', U'\U000115D7' }, { U'\U000115DC', U'\U000115FF' },
{ U'\U00011630', U'\U00011643' }, { U'\U00011645', U'\U0001167F' }, { U'\U000116AB', U'\U000116B7' },
{ U'\U000116B9', U'\U000116FF' }, { U'\U0001171B', U'\U000117FF' }, { U'\U0001182C', U'\U0001189F' },
{ U'\U000118E0', U'\U000118FE' }, { U'\U00011907', U'\U00011908' }, { U'\U0001190A', U'\U0001190B' },
{ U'\U00011930', U'\U0001193E' }, { U'\U00011942', U'\U0001199F' }, { U'\U000119A8', U'\U000119A9' },
{ U'\U000119D1', U'\U000119E0' }, { U'\U000119E4', U'\U000119FF' }, { U'\U00011A01', U'\U00011A0A' },
{ U'\U00011A33', U'\U00011A39' }, { U'\U00011A3B', U'\U00011A4F' }, { U'\U00011A51', U'\U00011A5B' },
{ U'\U00011A8A', U'\U00011A9C' }, { U'\U00011A9E', U'\U00011ABF' }, { U'\U00011AF9', U'\U00011BFF' },
{ U'\U00011C2F', U'\U00011C3F' }, { U'\U00011C41', U'\U00011C71' }, { U'\U00011C90', U'\U00011CFF' },
{ U'\U00011D31', U'\U00011D45' }, { U'\U00011D47', U'\U00011D5F' }, { U'\U00011D8A', U'\U00011D97' },
{ U'\U00011D99', U'\U00011EDF' }, { U'\U00011EF3', U'\U00011FAF' }, { U'\U00011FB1', U'\U00011FFF' },
{ U'\U0001239A', U'\U0001247F' }, { U'\U00012544', U'\U00012FFF' }, { U'\U0001342F', U'\U000143FF' },
{ U'\U00014647', U'\U000167FF' }, { U'\U00016A39', U'\U00016A3F' }, { U'\U00016A5F', U'\U00016ACF' },
{ U'\U00016AEE', U'\U00016AFF' }, { U'\U00016B30', U'\U00016B3F' }, { U'\U00016B44', U'\U00016B62' },
{ U'\U00016B78', U'\U00016B7C' }, { U'\U00016B90', U'\U00016E3F' }, { U'\U00016E80', U'\U00016EFF' },
{ U'\U00016F4B', U'\U00016F4F' }, { U'\U00016F51', U'\U00016F92' }, { U'\U00016FA0', U'\U00016FDF' },
{ U'\U00016FE4', U'\U00016FFF' }, { U'\U000187F7', U'\U000187FF' }, { U'\U00018CD6', U'\U00018CFF' },
{ U'\U00018D08', U'\U0001AFFF' }, { U'\U0001B11F', U'\U0001B14F' }, { U'\U0001B153', U'\U0001B163' },
{ U'\U0001B168', U'\U0001B16F' }, { U'\U0001B2FC', U'\U0001BBFF' }, { U'\U0001BC6B', U'\U0001BC6F' },
{ U'\U0001BC7D', U'\U0001BC7F' }, { U'\U0001BC89', U'\U0001BC8F' }, { U'\U0001BC9A', U'\U0001D3FF' },
{ U'\U0001D4A0', U'\U0001D4A1' }, { U'\U0001D4A3', U'\U0001D4A4' }, { U'\U0001D4A7', U'\U0001D4A8' },
{ U'\U0001D50B', U'\U0001D50C' }, { U'\U0001D547', U'\U0001D549' }, { U'\U0001D6A6', U'\U0001D6A7' },
{ U'\U0001D7CC', U'\U0001E0FF' }, { U'\U0001E12D', U'\U0001E136' }, { U'\U0001E13E', U'\U0001E14D' },
{ U'\U0001E14F', U'\U0001E2BF' }, { U'\U0001E2EC', U'\U0001E7FF' }, { U'\U0001E8C5', U'\U0001E8FF' },
{ U'\U0001E944', U'\U0001E94A' }, { U'\U0001E94C', U'\U0001EDFF' }, { U'\U0001EE25', U'\U0001EE26' },
{ U'\U0001EE3C', U'\U0001EE41' }, { U'\U0001EE43', U'\U0001EE46' }, { U'\U0001EE55', U'\U0001EE56' },
{ U'\U0001EE65', U'\U0001EE66' }, { U'\U0001EE9C', U'\U0001EEA0' }, { U'\U0001EEBC', U'\U0001FFFF' },
{ U'\U0002A6DD', U'\U0002A6FF' }, { U'\U0002B734', U'\U0002B73F' }, { U'\U0002B81D', U'\U0002B81F' },
{ U'\U0002CEA1', U'\U0002CEAF' }, { U'\U0002EBE0', U'\U0002F7FF' }, { U'\U0002FA1E', U'\U0002FFFF' },
{ U'\U0003134A', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
// individual values which should return false
static constexpr char32_t exclusive_values[] =
{
U'\u00D7', U'\u00F7', U'\u02ED', U'\u0375', U'\u037E', U'\u0387',
U'\u038B', U'\u038D', U'\u03A2', U'\u03F6', U'\u0530', U'\u0670',
U'\u06D4', U'\u0711', U'\u08B5', U'\u09A9', U'\u09B1', U'\u09DE',
U'\u0A29', U'\u0A31', U'\u0A34', U'\u0A37', U'\u0A5D', U'\u0A8E',
U'\u0A92', U'\u0AA9', U'\u0AB1', U'\u0AB4', U'\u0B29', U'\u0B31',
U'\u0B34', U'\u0B5E', U'\u0B84', U'\u0B91', U'\u0B9B', U'\u0B9D',
U'\u0C0D', U'\u0C11', U'\u0C29', U'\u0C8D', U'\u0C91', U'\u0CA9',
U'\u0CB4', U'\u0CDF', U'\u0D0D', U'\u0D11', U'\u0DB2', U'\u0DBC',
U'\u0E31', U'\u0E83', U'\u0E85', U'\u0E8B', U'\u0EA4', U'\u0EA6',
U'\u0EB1', U'\u0EC5', U'\u0F48', U'\u10C6', U'\u10FB', U'\u1249',
U'\u1257', U'\u1259', U'\u1289', U'\u12B1', U'\u12BF', U'\u12C1',
U'\u12D7', U'\u1311', U'\u1680', U'\u170D', U'\u176D', U'\u18A9',
U'\u1CED', U'\u1CF4', U'\u1F58', U'\u1F5A', U'\u1F5C', U'\u1F5E',
U'\u1FB5', U'\u1FBD', U'\u1FC5', U'\u1FF5', U'\u2114', U'\u2125',
U'\u2127', U'\u2129', U'\u212E', U'\u2C2F', U'\u2C5F', U'\u2D26',
U'\u2DA7', U'\u2DAF', U'\u2DB7', U'\u2DBF', U'\u2DC7', U'\u2DCF',
U'\u2DD7', U'\u30A0', U'\u30FB', U'\u3130', U'\uA802', U'\uA806',
U'\uA80B', U'\uA8FC', U'\uA9E5', U'\uA9FF', U'\uAA43', U'\uAAB0',
U'\uAAC1', U'\uAB27', U'\uAB2F', U'\uAB5B', U'\uFB1E', U'\uFB29',
U'\uFB37', U'\uFB3D', U'\uFB3F', U'\uFB42', U'\uFB45', U'\uFE75',
U'\U0001000C', U'\U00010027', U'\U0001003B', U'\U0001003E', U'\U00010341', U'\U00010809',
U'\U00010836', U'\U000108F3', U'\U00010A14', U'\U00010A18', U'\U00010AC8', U'\U000111DB',
U'\U00011212', U'\U00011287', U'\U00011289', U'\U0001128E', U'\U0001129E', U'\U00011329',
U'\U00011331', U'\U00011334', U'\U000114C6', U'\U00011914', U'\U00011917', U'\U00011940',
U'\U000119E2', U'\U00011C09', U'\U00011D07', U'\U00011D0A', U'\U00011D66', U'\U00011D69',
U'\U00016FE2', U'\U0001D455', U'\U0001D49D', U'\U0001D4AD', U'\U0001D4BA', U'\U0001D4BC',
U'\U0001D4C4', U'\U0001D506', U'\U0001D515', U'\U0001D51D', U'\U0001D53A', U'\U0001D53F',
U'\U0001D545', U'\U0001D551', U'\U0001D6C1', U'\U0001D6DB', U'\U0001D6FB', U'\U0001D715',
U'\U0001D735', U'\U0001D74F', U'\U0001D76F', U'\U0001D789', U'\U0001D7A9', U'\U0001D7C3',
U'\U0001EE04', U'\U0001EE20', U'\U0001EE23', U'\U0001EE28', U'\U0001EE33', U'\U0001EE38',
U'\U0001EE3A', U'\U0001EE48', U'\U0001EE4A', U'\U0001EE4C', U'\U0001EE50', U'\U0001EE53',
U'\U0001EE58', U'\U0001EE5A', U'\U0001EE5C', U'\U0001EE5E', U'\U0001EE60', U'\U0001EE63',
U'\U0001EE6B', U'\U0001EE73', U'\U0001EE78', U'\U0001EE7D', U'\U0001EE7F', U'\U0001EE8A',
U'\U0001EEA4', U'\U0001EEAA',
};
for (auto v : exclusive_values)
REQUIRE(!fn(v));
}
TEST_CASE("unicode - is_unicode_number")
{
static constexpr auto fn = is_unicode_number;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u0660', U'\u0669' }, { U'\u06F0', U'\u06F9' }, { U'\u07C0', U'\u07C9' },
{ U'\u0966', U'\u096F' }, { U'\u09E6', U'\u09EF' }, { U'\u0A66', U'\u0A6F' },
{ U'\u0AE6', U'\u0AEF' }, { U'\u0B66', U'\u0B6F' }, { U'\u0BE6', U'\u0BEF' },
{ U'\u0C66', U'\u0C6F' }, { U'\u0CE6', U'\u0CEF' }, { U'\u0D66', U'\u0D6F' },
{ U'\u0DE6', U'\u0DEF' }, { U'\u0E50', U'\u0E59' }, { U'\u0ED0', U'\u0ED9' },
{ U'\u0F20', U'\u0F29' }, { U'\u1040', U'\u1049' }, { U'\u1090', U'\u1099' },
{ U'\u16EE', U'\u16F0' }, { U'\u17E0', U'\u17E9' }, { U'\u1810', U'\u1819' },
{ U'\u1946', U'\u194F' }, { U'\u19D0', U'\u19D9' }, { U'\u1A80', U'\u1A89' },
{ U'\u1A90', U'\u1A99' }, { U'\u1B50', U'\u1B59' }, { U'\u1BB0', U'\u1BB9' },
{ U'\u1C40', U'\u1C49' }, { U'\u1C50', U'\u1C59' }, { U'\u2160', U'\u2182' },
{ U'\u2185', U'\u2188' }, { U'\u3021', U'\u3029' }, { U'\u3038', U'\u303A' },
{ U'\uA620', U'\uA629' }, { U'\uA6E6', U'\uA6EF' }, { U'\uA8D0', U'\uA8D9' },
{ U'\uA900', U'\uA909' }, { U'\uA9D0', U'\uA9D9' }, { U'\uA9F0', U'\uA9F9' },
{ U'\uAA50', U'\uAA59' }, { U'\uABF0', U'\uABF9' }, { U'\uFF10', U'\uFF19' },
{ U'\U00010140', U'\U00010174' }, { U'\U000103D1', U'\U000103D5' }, { U'\U000104A0', U'\U000104A9' },
{ U'\U00010D30', U'\U00010D39' }, { U'\U00011066', U'\U0001106F' }, { U'\U000110F0', U'\U000110F9' },
{ U'\U00011136', U'\U0001113F' }, { U'\U000111D0', U'\U000111D9' }, { U'\U000112F0', U'\U000112F9' },
{ U'\U00011450', U'\U00011459' }, { U'\U000114D0', U'\U000114D9' }, { U'\U00011650', U'\U00011659' },
{ U'\U000116C0', U'\U000116C9' }, { U'\U00011730', U'\U00011739' }, { U'\U000118E0', U'\U000118E9' },
{ U'\U00011950', U'\U00011959' }, { U'\U00011C50', U'\U00011C59' }, { U'\U00011D50', U'\U00011D59' },
{ U'\U00011DA0', U'\U00011DA9' }, { U'\U00012400', U'\U0001246E' }, { U'\U00016A60', U'\U00016A69' },
{ U'\U00016B50', U'\U00016B59' }, { U'\U0001D7CE', U'\U0001D7FF' }, { U'\U0001E140', U'\U0001E149' },
{ U'\U0001E2F0', U'\U0001E2F9' }, { U'\U0001E950', U'\U0001E959' }, { U'\U0001FBF0', U'\U0001FBF9' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u3007', U'\U00010341', U'\U0001034A',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u065F' }, { U'\u066A', U'\u06EF' }, { U'\u06FA', U'\u07BF' },
{ U'\u07CA', U'\u0965' }, { U'\u0970', U'\u09E5' }, { U'\u09F0', U'\u0A65' },
{ U'\u0A70', U'\u0AE5' }, { U'\u0AF0', U'\u0B65' }, { U'\u0B70', U'\u0BE5' },
{ U'\u0BF0', U'\u0C65' }, { U'\u0C70', U'\u0CE5' }, { U'\u0CF0', U'\u0D65' },
{ U'\u0D70', U'\u0DE5' }, { U'\u0DF0', U'\u0E4F' }, { U'\u0E5A', U'\u0ECF' },
{ U'\u0EDA', U'\u0F1F' }, { U'\u0F2A', U'\u103F' }, { U'\u104A', U'\u108F' },
{ U'\u109A', U'\u16ED' }, { U'\u16F1', U'\u17DF' }, { U'\u17EA', U'\u180F' },
{ U'\u181A', U'\u1945' }, { U'\u1950', U'\u19CF' }, { U'\u19DA', U'\u1A7F' },
{ U'\u1A8A', U'\u1A8F' }, { U'\u1A9A', U'\u1B4F' }, { U'\u1B5A', U'\u1BAF' },
{ U'\u1BBA', U'\u1C3F' }, { U'\u1C4A', U'\u1C4F' }, { U'\u1C5A', U'\u215F' },
{ U'\u2183', U'\u2184' }, { U'\u2189', U'\u3006' }, { U'\u3008', U'\u3020' },
{ U'\u302A', U'\u3037' }, { U'\u303B', U'\uA61F' }, { U'\uA62A', U'\uA6E5' },
{ U'\uA6F0', U'\uA8CF' }, { U'\uA8DA', U'\uA8FF' }, { U'\uA90A', U'\uA9CF' },
{ U'\uA9DA', U'\uA9EF' }, { U'\uA9FA', U'\uAA4F' }, { U'\uAA5A', U'\uABEF' },
{ U'\uABFA', U'\uFF0F' }, { U'\uFF1A', U'\U0001013F' }, { U'\U00010175', U'\U00010340' },
{ U'\U00010342', U'\U00010349' }, { U'\U0001034B', U'\U000103D0' }, { U'\U000103D6', U'\U0001049F' },
{ U'\U000104AA', U'\U00010D2F' }, { U'\U00010D3A', U'\U00011065' }, { U'\U00011070', U'\U000110EF' },
{ U'\U000110FA', U'\U00011135' }, { U'\U00011140', U'\U000111CF' }, { U'\U000111DA', U'\U000112EF' },
{ U'\U000112FA', U'\U0001144F' }, { U'\U0001145A', U'\U000114CF' }, { U'\U000114DA', U'\U0001164F' },
{ U'\U0001165A', U'\U000116BF' }, { U'\U000116CA', U'\U0001172F' }, { U'\U0001173A', U'\U000118DF' },
{ U'\U000118EA', U'\U0001194F' }, { U'\U0001195A', U'\U00011C4F' }, { U'\U00011C5A', U'\U00011D4F' },
{ U'\U00011D5A', U'\U00011D9F' }, { U'\U00011DAA', U'\U000123FF' }, { U'\U0001246F', U'\U00016A5F' },
{ U'\U00016A6A', U'\U00016B4F' }, { U'\U00016B5A', U'\U0001D7CD' }, { U'\U0001D800', U'\U0001E13F' },
{ U'\U0001E14A', U'\U0001E2EF' }, { U'\U0001E2FA', U'\U0001E94F' }, { U'\U0001E95A', U'\U0001FBEF' },
{ U'\U0001FBFA', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
}
TEST_CASE("unicode - is_unicode_combining_mark")
{
static constexpr auto fn = is_unicode_combining_mark;
// contiguous ranges of values which should return true
static constexpr codepoint_range inclusive_ranges[] =
{
{ U'\u0300', U'\u036F' }, { U'\u0483', U'\u0487' }, { U'\u0591', U'\u05BD' },
{ U'\u05C1', U'\u05C2' }, { U'\u05C4', U'\u05C5' }, { U'\u0610', U'\u061A' },
{ U'\u064B', U'\u065F' }, { U'\u06D6', U'\u06DC' }, { U'\u06DF', U'\u06E4' },
{ U'\u06E7', U'\u06E8' }, { U'\u06EA', U'\u06ED' }, { U'\u0730', U'\u074A' },
{ U'\u07A6', U'\u07B0' }, { U'\u07EB', U'\u07F3' }, { U'\u0816', U'\u0819' },
{ U'\u081B', U'\u0823' }, { U'\u0825', U'\u0827' }, { U'\u0829', U'\u082D' },
{ U'\u0859', U'\u085B' }, { U'\u08D3', U'\u08E1' }, { U'\u08E3', U'\u0903' },
{ U'\u093A', U'\u093C' }, { U'\u093E', U'\u094F' }, { U'\u0951', U'\u0957' },
{ U'\u0962', U'\u0963' }, { U'\u0981', U'\u0983' }, { U'\u09BE', U'\u09C4' },
{ U'\u09C7', U'\u09C8' }, { U'\u09CB', U'\u09CD' }, { U'\u09E2', U'\u09E3' },
{ U'\u0A01', U'\u0A03' }, { U'\u0A3E', U'\u0A42' }, { U'\u0A47', U'\u0A48' },
{ U'\u0A4B', U'\u0A4D' }, { U'\u0A70', U'\u0A71' }, { U'\u0A81', U'\u0A83' },
{ U'\u0ABE', U'\u0AC5' }, { U'\u0AC7', U'\u0AC9' }, { U'\u0ACB', U'\u0ACD' },
{ U'\u0AE2', U'\u0AE3' }, { U'\u0AFA', U'\u0AFF' }, { U'\u0B01', U'\u0B03' },
{ U'\u0B3E', U'\u0B44' }, { U'\u0B47', U'\u0B48' }, { U'\u0B4B', U'\u0B4D' },
{ U'\u0B55', U'\u0B57' }, { U'\u0B62', U'\u0B63' }, { U'\u0BBE', U'\u0BC2' },
{ U'\u0BC6', U'\u0BC8' }, { U'\u0BCA', U'\u0BCD' }, { U'\u0C00', U'\u0C04' },
{ U'\u0C3E', U'\u0C44' }, { U'\u0C46', U'\u0C48' }, { U'\u0C4A', U'\u0C4D' },
{ U'\u0C55', U'\u0C56' }, { U'\u0C62', U'\u0C63' }, { U'\u0C81', U'\u0C83' },
{ U'\u0CBE', U'\u0CC4' }, { U'\u0CC6', U'\u0CC8' }, { U'\u0CCA', U'\u0CCD' },
{ U'\u0CD5', U'\u0CD6' }, { U'\u0CE2', U'\u0CE3' }, { U'\u0D00', U'\u0D03' },
{ U'\u0D3B', U'\u0D3C' }, { U'\u0D3E', U'\u0D44' }, { U'\u0D46', U'\u0D48' },
{ U'\u0D4A', U'\u0D4D' }, { U'\u0D62', U'\u0D63' }, { U'\u0D81', U'\u0D83' },
{ U'\u0DCF', U'\u0DD4' }, { U'\u0DD8', U'\u0DDF' }, { U'\u0DF2', U'\u0DF3' },
{ U'\u0E34', U'\u0E3A' }, { U'\u0E47', U'\u0E4E' }, { U'\u0EB4', U'\u0EBC' },
{ U'\u0EC8', U'\u0ECD' }, { U'\u0F18', U'\u0F19' }, { U'\u0F3E', U'\u0F3F' },
{ U'\u0F71', U'\u0F84' }, { U'\u0F86', U'\u0F87' }, { U'\u0F8D', U'\u0F97' },
{ U'\u0F99', U'\u0FBC' }, { U'\u102B', U'\u103E' }, { U'\u1056', U'\u1059' },
{ U'\u105E', U'\u1060' }, { U'\u1062', U'\u1064' }, { U'\u1067', U'\u106D' },
{ U'\u1071', U'\u1074' }, { U'\u1082', U'\u108D' }, { U'\u109A', U'\u109D' },
{ U'\u135D', U'\u135F' }, { U'\u1712', U'\u1714' }, { U'\u1732', U'\u1734' },
{ U'\u1752', U'\u1753' }, { U'\u1772', U'\u1773' }, { U'\u17B4', U'\u17D3' },
{ U'\u180B', U'\u180D' }, { U'\u1885', U'\u1886' }, { U'\u1920', U'\u192B' },
{ U'\u1930', U'\u193B' }, { U'\u1A17', U'\u1A1B' }, { U'\u1A55', U'\u1A5E' },
{ U'\u1A60', U'\u1A7C' }, { U'\u1AB0', U'\u1ABD' }, { U'\u1ABF', U'\u1AC0' },
{ U'\u1B00', U'\u1B04' }, { U'\u1B34', U'\u1B44' }, { U'\u1B6B', U'\u1B73' },
{ U'\u1B80', U'\u1B82' }, { U'\u1BA1', U'\u1BAD' }, { U'\u1BE6', U'\u1BF3' },
{ U'\u1C24', U'\u1C37' }, { U'\u1CD0', U'\u1CD2' }, { U'\u1CD4', U'\u1CE8' },
{ U'\u1CF7', U'\u1CF9' }, { U'\u1DC0', U'\u1DF9' }, { U'\u1DFB', U'\u1DFF' },
{ U'\u20D0', U'\u20DC' }, { U'\u20E5', U'\u20F0' }, { U'\u2CEF', U'\u2CF1' },
{ U'\u2DE0', U'\u2DFF' }, { U'\u302A', U'\u302F' }, { U'\u3099', U'\u309A' },
{ U'\uA674', U'\uA67D' }, { U'\uA69E', U'\uA69F' }, { U'\uA6F0', U'\uA6F1' },
{ U'\uA823', U'\uA827' }, { U'\uA880', U'\uA881' }, { U'\uA8B4', U'\uA8C5' },
{ U'\uA8E0', U'\uA8F1' }, { U'\uA926', U'\uA92D' }, { U'\uA947', U'\uA953' },
{ U'\uA980', U'\uA983' }, { U'\uA9B3', U'\uA9C0' }, { U'\uAA29', U'\uAA36' },
{ U'\uAA4C', U'\uAA4D' }, { U'\uAA7B', U'\uAA7D' }, { U'\uAAB2', U'\uAAB4' },
{ U'\uAAB7', U'\uAAB8' }, { U'\uAABE', U'\uAABF' }, { U'\uAAEB', U'\uAAEF' },
{ U'\uAAF5', U'\uAAF6' }, { U'\uABE3', U'\uABEA' }, { U'\uABEC', U'\uABED' },
{ U'\uFE00', U'\uFE0F' }, { U'\uFE20', U'\uFE2F' }, { U'\U00010376', U'\U0001037A' },
{ U'\U00010A01', U'\U00010A03' }, { U'\U00010A05', U'\U00010A06' }, { U'\U00010A0C', U'\U00010A0F' },
{ U'\U00010A38', U'\U00010A3A' }, { U'\U00010AE5', U'\U00010AE6' }, { U'\U00010D24', U'\U00010D27' },
{ U'\U00010EAB', U'\U00010EAC' }, { U'\U00010F46', U'\U00010F50' }, { U'\U00011000', U'\U00011002' },
{ U'\U00011038', U'\U00011046' }, { U'\U0001107F', U'\U00011082' }, { U'\U000110B0', U'\U000110BA' },
{ U'\U00011100', U'\U00011102' }, { U'\U00011127', U'\U00011134' }, { U'\U00011145', U'\U00011146' },
{ U'\U00011180', U'\U00011182' }, { U'\U000111B3', U'\U000111C0' }, { U'\U000111C9', U'\U000111CC' },
{ U'\U000111CE', U'\U000111CF' }, { U'\U0001122C', U'\U00011237' }, { U'\U000112DF', U'\U000112EA' },
{ U'\U00011300', U'\U00011303' }, { U'\U0001133B', U'\U0001133C' }, { U'\U0001133E', U'\U00011344' },
{ U'\U00011347', U'\U00011348' }, { U'\U0001134B', U'\U0001134D' }, { U'\U00011362', U'\U00011363' },
{ U'\U00011366', U'\U0001136C' }, { U'\U00011370', U'\U00011374' }, { U'\U00011435', U'\U00011446' },
{ U'\U000114B0', U'\U000114C3' }, { U'\U000115AF', U'\U000115B5' }, { U'\U000115B8', U'\U000115C0' },
{ U'\U000115DC', U'\U000115DD' }, { U'\U00011630', U'\U00011640' }, { U'\U000116AB', U'\U000116B7' },
{ U'\U0001171D', U'\U0001172B' }, { U'\U0001182C', U'\U0001183A' }, { U'\U00011930', U'\U00011935' },
{ U'\U00011937', U'\U00011938' }, { U'\U0001193B', U'\U0001193E' }, { U'\U00011942', U'\U00011943' },
{ U'\U000119D1', U'\U000119D7' }, { U'\U000119DA', U'\U000119E0' }, { U'\U00011A01', U'\U00011A0A' },
{ U'\U00011A33', U'\U00011A39' }, { U'\U00011A3B', U'\U00011A3E' }, { U'\U00011A51', U'\U00011A5B' },
{ U'\U00011A8A', U'\U00011A99' }, { U'\U00011C2F', U'\U00011C36' }, { U'\U00011C38', U'\U00011C3F' },
{ U'\U00011C92', U'\U00011CA7' }, { U'\U00011CA9', U'\U00011CB6' }, { U'\U00011D31', U'\U00011D36' },
{ U'\U00011D3C', U'\U00011D3D' }, { U'\U00011D3F', U'\U00011D45' }, { U'\U00011D8A', U'\U00011D8E' },
{ U'\U00011D90', U'\U00011D91' }, { U'\U00011D93', U'\U00011D97' }, { U'\U00011EF3', U'\U00011EF6' },
{ U'\U00016AF0', U'\U00016AF4' }, { U'\U00016B30', U'\U00016B36' }, { U'\U00016F51', U'\U00016F87' },
{ U'\U00016F8F', U'\U00016F92' }, { U'\U00016FF0', U'\U00016FF1' }, { U'\U0001BC9D', U'\U0001BC9E' },
{ U'\U0001D165', U'\U0001D169' }, { U'\U0001D16D', U'\U0001D172' }, { U'\U0001D17B', U'\U0001D182' },
{ U'\U0001D185', U'\U0001D18B' }, { U'\U0001D1AA', U'\U0001D1AD' }, { U'\U0001D242', U'\U0001D244' },
{ U'\U0001DA00', U'\U0001DA36' }, { U'\U0001DA3B', U'\U0001DA6C' }, { U'\U0001DA9B', U'\U0001DA9F' },
{ U'\U0001DAA1', U'\U0001DAAF' }, { U'\U0001E000', U'\U0001E006' }, { U'\U0001E008', U'\U0001E018' },
{ U'\U0001E01B', U'\U0001E021' }, { U'\U0001E023', U'\U0001E024' }, { U'\U0001E026', U'\U0001E02A' },
{ U'\U0001E130', U'\U0001E136' }, { U'\U0001E2EC', U'\U0001E2EF' }, { U'\U0001E8D0', U'\U0001E8D6' },
{ U'\U0001E944', U'\U0001E94A' }, { U'\U000E0100', U'\U000E01EF' },
};
for (const auto& r : inclusive_ranges)
REQUIRE(in(fn, r));
// individual values which should return true
static constexpr char32_t inclusive_values[] =
{
U'\u05BF', U'\u05C7', U'\u0670', U'\u0711', U'\u07FD', U'\u09BC',
U'\u09D7', U'\u09FE', U'\u0A3C', U'\u0A51', U'\u0A75', U'\u0ABC',
U'\u0B3C', U'\u0B82', U'\u0BD7', U'\u0CBC', U'\u0D57', U'\u0DCA',
U'\u0DD6', U'\u0E31', U'\u0EB1', U'\u0F35', U'\u0F37', U'\u0F39',
U'\u0FC6', U'\u108F', U'\u17DD', U'\u18A9', U'\u1A7F', U'\u1CED',
U'\u1CF4', U'\u20E1', U'\u2D7F', U'\uA66F', U'\uA802', U'\uA806',
U'\uA80B', U'\uA82C', U'\uA8FF', U'\uA9E5', U'\uAA43', U'\uAAB0',
U'\uAAC1', U'\uFB1E', U'\U000101FD', U'\U000102E0', U'\U00010A3F', U'\U00011173',
U'\U0001123E', U'\U00011357', U'\U0001145E', U'\U00011940', U'\U000119E4', U'\U00011A47',
U'\U00011D3A', U'\U00011D47', U'\U00016F4F', U'\U00016FE4', U'\U0001DA75', U'\U0001DA84',
};
for (auto v : inclusive_values)
REQUIRE(fn(v));
// contiguous ranges of values which should return false
static constexpr codepoint_range exclusive_ranges[] =
{
{ U'\u0000', U'\u02FF' }, { U'\u0370', U'\u0482' }, { U'\u0488', U'\u0590' },
{ U'\u05C8', U'\u060F' }, { U'\u061B', U'\u064A' }, { U'\u0660', U'\u066F' },
{ U'\u0671', U'\u06D5' }, { U'\u06DD', U'\u06DE' }, { U'\u06E5', U'\u06E6' },
{ U'\u06EE', U'\u0710' }, { U'\u0712', U'\u072F' }, { U'\u074B', U'\u07A5' },
{ U'\u07B1', U'\u07EA' }, { U'\u07F4', U'\u07FC' }, { U'\u07FE', U'\u0815' },
{ U'\u082E', U'\u0858' }, { U'\u085C', U'\u08D2' }, { U'\u0904', U'\u0939' },
{ U'\u0958', U'\u0961' }, { U'\u0964', U'\u0980' }, { U'\u0984', U'\u09BB' },
{ U'\u09C5', U'\u09C6' }, { U'\u09C9', U'\u09CA' }, { U'\u09CE', U'\u09D6' },
{ U'\u09D8', U'\u09E1' }, { U'\u09E4', U'\u09FD' }, { U'\u09FF', U'\u0A00' },
{ U'\u0A04', U'\u0A3B' }, { U'\u0A43', U'\u0A46' }, { U'\u0A49', U'\u0A4A' },
{ U'\u0A4E', U'\u0A50' }, { U'\u0A52', U'\u0A6F' }, { U'\u0A72', U'\u0A74' },
{ U'\u0A76', U'\u0A80' }, { U'\u0A84', U'\u0ABB' }, { U'\u0ACE', U'\u0AE1' },
{ U'\u0AE4', U'\u0AF9' }, { U'\u0B04', U'\u0B3B' }, { U'\u0B45', U'\u0B46' },
{ U'\u0B49', U'\u0B4A' }, { U'\u0B4E', U'\u0B54' }, { U'\u0B58', U'\u0B61' },
{ U'\u0B64', U'\u0B81' }, { U'\u0B83', U'\u0BBD' }, { U'\u0BC3', U'\u0BC5' },
{ U'\u0BCE', U'\u0BD6' }, { U'\u0BD8', U'\u0BFF' }, { U'\u0C05', U'\u0C3D' },
{ U'\u0C4E', U'\u0C54' }, { U'\u0C57', U'\u0C61' }, { U'\u0C64', U'\u0C80' },
{ U'\u0C84', U'\u0CBB' }, { U'\u0CCE', U'\u0CD4' }, { U'\u0CD7', U'\u0CE1' },
{ U'\u0CE4', U'\u0CFF' }, { U'\u0D04', U'\u0D3A' }, { U'\u0D4E', U'\u0D56' },
{ U'\u0D58', U'\u0D61' }, { U'\u0D64', U'\u0D80' }, { U'\u0D84', U'\u0DC9' },
{ U'\u0DCB', U'\u0DCE' }, { U'\u0DE0', U'\u0DF1' }, { U'\u0DF4', U'\u0E30' },
{ U'\u0E32', U'\u0E33' }, { U'\u0E3B', U'\u0E46' }, { U'\u0E4F', U'\u0EB0' },
{ U'\u0EB2', U'\u0EB3' }, { U'\u0EBD', U'\u0EC7' }, { U'\u0ECE', U'\u0F17' },
{ U'\u0F1A', U'\u0F34' }, { U'\u0F3A', U'\u0F3D' }, { U'\u0F40', U'\u0F70' },
{ U'\u0F88', U'\u0F8C' }, { U'\u0FBD', U'\u0FC5' }, { U'\u0FC7', U'\u102A' },
{ U'\u103F', U'\u1055' }, { U'\u105A', U'\u105D' }, { U'\u1065', U'\u1066' },
{ U'\u106E', U'\u1070' }, { U'\u1075', U'\u1081' }, { U'\u1090', U'\u1099' },
{ U'\u109E', U'\u135C' }, { U'\u1360', U'\u1711' }, { U'\u1715', U'\u1731' },
{ U'\u1735', U'\u1751' }, { U'\u1754', U'\u1771' }, { U'\u1774', U'\u17B3' },
{ U'\u17D4', U'\u17DC' }, { U'\u17DE', U'\u180A' }, { U'\u180E', U'\u1884' },
{ U'\u1887', U'\u18A8' }, { U'\u18AA', U'\u191F' }, { U'\u192C', U'\u192F' },
{ U'\u193C', U'\u1A16' }, { U'\u1A1C', U'\u1A54' }, { U'\u1A7D', U'\u1A7E' },
{ U'\u1A80', U'\u1AAF' }, { U'\u1AC1', U'\u1AFF' }, { U'\u1B05', U'\u1B33' },
{ U'\u1B45', U'\u1B6A' }, { U'\u1B74', U'\u1B7F' }, { U'\u1B83', U'\u1BA0' },
{ U'\u1BAE', U'\u1BE5' }, { U'\u1BF4', U'\u1C23' }, { U'\u1C38', U'\u1CCF' },
{ U'\u1CE9', U'\u1CEC' }, { U'\u1CEE', U'\u1CF3' }, { U'\u1CF5', U'\u1CF6' },
{ U'\u1CFA', U'\u1DBF' }, { U'\u1E00', U'\u20CF' }, { U'\u20DD', U'\u20E0' },
{ U'\u20E2', U'\u20E4' }, { U'\u20F1', U'\u2CEE' }, { U'\u2CF2', U'\u2D7E' },
{ U'\u2D80', U'\u2DDF' }, { U'\u2E00', U'\u3029' }, { U'\u3030', U'\u3098' },
{ U'\u309B', U'\uA66E' }, { U'\uA670', U'\uA673' }, { U'\uA67E', U'\uA69D' },
{ U'\uA6A0', U'\uA6EF' }, { U'\uA6F2', U'\uA801' }, { U'\uA803', U'\uA805' },
{ U'\uA807', U'\uA80A' }, { U'\uA80C', U'\uA822' }, { U'\uA828', U'\uA82B' },
{ U'\uA82D', U'\uA87F' }, { U'\uA882', U'\uA8B3' }, { U'\uA8C6', U'\uA8DF' },
{ U'\uA8F2', U'\uA8FE' }, { U'\uA900', U'\uA925' }, { U'\uA92E', U'\uA946' },
{ U'\uA954', U'\uA97F' }, { U'\uA984', U'\uA9B2' }, { U'\uA9C1', U'\uA9E4' },
{ U'\uA9E6', U'\uAA28' }, { U'\uAA37', U'\uAA42' }, { U'\uAA44', U'\uAA4B' },
{ U'\uAA4E', U'\uAA7A' }, { U'\uAA7E', U'\uAAAF' }, { U'\uAAB5', U'\uAAB6' },
{ U'\uAAB9', U'\uAABD' }, { U'\uAAC2', U'\uAAEA' }, { U'\uAAF0', U'\uAAF4' },
{ U'\uAAF7', U'\uABE2' }, { U'\uABEE', U'\uFB1D' }, { U'\uFB1F', U'\uFDFF' },
{ U'\uFE10', U'\uFE1F' }, { U'\uFE30', U'\U000101FC' }, { U'\U000101FE', U'\U000102DF' },
{ U'\U000102E1', U'\U00010375' }, { U'\U0001037B', U'\U00010A00' }, { U'\U00010A07', U'\U00010A0B' },
{ U'\U00010A10', U'\U00010A37' }, { U'\U00010A3B', U'\U00010A3E' }, { U'\U00010A40', U'\U00010AE4' },
{ U'\U00010AE7', U'\U00010D23' }, { U'\U00010D28', U'\U00010EAA' }, { U'\U00010EAD', U'\U00010F45' },
{ U'\U00010F51', U'\U00010FFF' }, { U'\U00011003', U'\U00011037' }, { U'\U00011047', U'\U0001107E' },
{ U'\U00011083', U'\U000110AF' }, { U'\U000110BB', U'\U000110FF' }, { U'\U00011103', U'\U00011126' },
{ U'\U00011135', U'\U00011144' }, { U'\U00011147', U'\U00011172' }, { U'\U00011174', U'\U0001117F' },
{ U'\U00011183', U'\U000111B2' }, { U'\U000111C1', U'\U000111C8' }, { U'\U000111D0', U'\U0001122B' },
{ U'\U00011238', U'\U0001123D' }, { U'\U0001123F', U'\U000112DE' }, { U'\U000112EB', U'\U000112FF' },
{ U'\U00011304', U'\U0001133A' }, { U'\U00011345', U'\U00011346' }, { U'\U00011349', U'\U0001134A' },
{ U'\U0001134E', U'\U00011356' }, { U'\U00011358', U'\U00011361' }, { U'\U00011364', U'\U00011365' },
{ U'\U0001136D', U'\U0001136F' }, { U'\U00011375', U'\U00011434' }, { U'\U00011447', U'\U0001145D' },
{ U'\U0001145F', U'\U000114AF' }, { U'\U000114C4', U'\U000115AE' }, { U'\U000115B6', U'\U000115B7' },
{ U'\U000115C1', U'\U000115DB' }, { U'\U000115DE', U'\U0001162F' }, { U'\U00011641', U'\U000116AA' },
{ U'\U000116B8', U'\U0001171C' }, { U'\U0001172C', U'\U0001182B' }, { U'\U0001183B', U'\U0001192F' },
{ U'\U00011939', U'\U0001193A' }, { U'\U00011944', U'\U000119D0' }, { U'\U000119D8', U'\U000119D9' },
{ U'\U000119E1', U'\U000119E3' }, { U'\U000119E5', U'\U00011A00' }, { U'\U00011A0B', U'\U00011A32' },
{ U'\U00011A3F', U'\U00011A46' }, { U'\U00011A48', U'\U00011A50' }, { U'\U00011A5C', U'\U00011A89' },
{ U'\U00011A9A', U'\U00011C2E' }, { U'\U00011C40', U'\U00011C91' }, { U'\U00011CB7', U'\U00011D30' },
{ U'\U00011D37', U'\U00011D39' }, { U'\U00011D48', U'\U00011D89' }, { U'\U00011D98', U'\U00011EF2' },
{ U'\U00011EF7', U'\U00016AEF' }, { U'\U00016AF5', U'\U00016B2F' }, { U'\U00016B37', U'\U00016F4E' },
{ U'\U00016F88', U'\U00016F8E' }, { U'\U00016F93', U'\U00016FE3' }, { U'\U00016FE5', U'\U00016FEF' },
{ U'\U00016FF2', U'\U0001BC9C' }, { U'\U0001BC9F', U'\U0001D164' }, { U'\U0001D16A', U'\U0001D16C' },
{ U'\U0001D173', U'\U0001D17A' }, { U'\U0001D183', U'\U0001D184' }, { U'\U0001D18C', U'\U0001D1A9' },
{ U'\U0001D1AE', U'\U0001D241' }, { U'\U0001D245', U'\U0001D9FF' }, { U'\U0001DA37', U'\U0001DA3A' },
{ U'\U0001DA6D', U'\U0001DA74' }, { U'\U0001DA76', U'\U0001DA83' }, { U'\U0001DA85', U'\U0001DA9A' },
{ U'\U0001DAB0', U'\U0001DFFF' }, { U'\U0001E019', U'\U0001E01A' }, { U'\U0001E02B', U'\U0001E12F' },
{ U'\U0001E137', U'\U0001E2EB' }, { U'\U0001E2F0', U'\U0001E8CF' }, { U'\U0001E8D7', U'\U0001E943' },
{ U'\U0001E94B', U'\U000E00FF' }, { U'\U000E01F0', U'\U0010FFFF' },
};
for (const auto& r : exclusive_ranges)
REQUIRE(not_in(fn, r));
// individual values which should return false
static constexpr char32_t exclusive_values[] =
{
U'\u05BE', U'\u05C0', U'\u05C3', U'\u05C6', U'\u06E9', U'\u081A',
U'\u0824', U'\u0828', U'\u08E2', U'\u093D', U'\u0950', U'\u09BD',
U'\u0A3D', U'\u0ABD', U'\u0AC6', U'\u0ACA', U'\u0B00', U'\u0B3D',
U'\u0BC9', U'\u0C45', U'\u0C49', U'\u0CBD', U'\u0CC5', U'\u0CC9',
U'\u0D3D', U'\u0D45', U'\u0D49', U'\u0DD5', U'\u0DD7', U'\u0F36',
U'\u0F38', U'\u0F85', U'\u0F98', U'\u1061', U'\u108E', U'\u1A5F',
U'\u1ABE', U'\u1CD3', U'\u1DFA', U'\uAAB1', U'\uAAC0', U'\uABEB',
U'\U00010A04', U'\U000111CD', U'\U0001133D', U'\U00011936', U'\U0001193F', U'\U00011941',
U'\U00011A3A', U'\U00011C37', U'\U00011CA8', U'\U00011D3B', U'\U00011D3E', U'\U00011D46',
U'\U00011D8F', U'\U00011D92', U'\U00016F50', U'\U0001DAA0', U'\U0001E007', U'\U0001E022',
U'\U0001E025',
};
for (auto v : exclusive_values)
REQUIRE(!fn(v));
}
#endif // TOML_LANG_UNRELEASED