Files
tomlplusplus/tests/unicode_generated.cpp
Mark Gillard 5e683e9a73 fixed is_unicode_XXXXXX functions being wrong in some cases
also:
- added tests for unicode functions
- changed `TOML_LIKELY` semantics to work with gcc-style intrinsics
- greatly improved unicode-related codegen
- parser refactoring
2020-04-18 23:42:33 +03:00

2041 lines
88 KiB
C++

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