aboutsummaryrefslogtreecommitdiffstats
path: root/util/string/ascii_ut.cpp
diff options
context:
space:
mode:
authorDevtools Arcadia <arcadia-devtools@yandex-team.ru>2022-02-07 18:08:42 +0300
committerDevtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net>2022-02-07 18:08:42 +0300
commit1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch)
treee26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/string/ascii_ut.cpp
downloadydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/string/ascii_ut.cpp')
-rw-r--r--util/string/ascii_ut.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/util/string/ascii_ut.cpp b/util/string/ascii_ut.cpp
new file mode 100644
index 00000000000..89069fee50a
--- /dev/null
+++ b/util/string/ascii_ut.cpp
@@ -0,0 +1,98 @@
+#include "ascii.h"
+#include <ctype.h>
+
+#include <library/cpp/testing/unittest/registar.h>
+
+Y_UNIT_TEST_SUITE(TAsciiTest) {
+ Y_UNIT_TEST(TestAscii) {
+ UNIT_ASSERT(IsAsciiDigit('3'));
+ UNIT_ASSERT(!IsAsciiDigit('x'));
+
+ UNIT_ASSERT(IsAsciiAlpha('r'));
+ UNIT_ASSERT(IsAsciiAlpha('R'));
+ UNIT_ASSERT(!IsAsciiAlpha('3'));
+
+ UNIT_ASSERT_EQUAL(AsciiToLower('3'), '3');
+ UNIT_ASSERT_EQUAL(AsciiToLower('A'), 'a');
+ UNIT_ASSERT_EQUAL(AsciiToLower('a'), 'a');
+
+ UNIT_ASSERT_EQUAL(AsciiToUpper('3'), '3');
+ UNIT_ASSERT_EQUAL(AsciiToUpper('A'), 'A');
+ UNIT_ASSERT_EQUAL(AsciiToUpper('a'), 'A');
+
+ UNIT_ASSERT(IsAscii('a'));
+ UNIT_ASSERT(!IsAscii(-100));
+ UNIT_ASSERT(!IsAscii(+200));
+ UNIT_ASSERT(!IsAscii(int('a') + 256));
+
+ for (int i = 0; i < 128; ++i) {
+ UNIT_ASSERT_VALUES_EQUAL((bool)isxdigit(i), IsAsciiHex(i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isspace(i), IsAsciiSpace((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isspace(i), IsAsciiSpace((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isalnum(i), IsAsciiAlnum((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isalpha(i), IsAsciiAlpha((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isupper(i), IsAsciiUpper((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)islower(i), IsAsciiLower((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)isdigit(i), IsAsciiDigit((char)i));
+ UNIT_ASSERT_VALUES_EQUAL((bool)ispunct(i), IsAsciiPunct((char)i));
+ }
+ }
+
+ Y_UNIT_TEST(Test1) {
+ for (int i = 128; i < 1000; ++i) {
+ UNIT_ASSERT(!IsAsciiHex(i));
+ UNIT_ASSERT(!IsAsciiSpace(i));
+ UNIT_ASSERT(!IsAsciiAlnum(i));
+ UNIT_ASSERT(!IsAsciiAlpha(i));
+ UNIT_ASSERT(!IsAsciiUpper(i));
+ UNIT_ASSERT(!IsAsciiLower(i));
+ UNIT_ASSERT(!IsAsciiDigit(i));
+ UNIT_ASSERT(!IsAsciiPunct(i));
+ }
+
+ for (int i = -1000; i < 0; ++i) {
+ UNIT_ASSERT(!IsAsciiHex(i));
+ UNIT_ASSERT(!IsAsciiSpace(i));
+ UNIT_ASSERT(!IsAsciiAlnum(i));
+ UNIT_ASSERT(!IsAsciiAlpha(i));
+ UNIT_ASSERT(!IsAsciiUpper(i));
+ UNIT_ASSERT(!IsAsciiLower(i));
+ UNIT_ASSERT(!IsAsciiDigit(i));
+ UNIT_ASSERT(!IsAsciiPunct(i));
+ }
+ }
+
+ Y_UNIT_TEST(CompareTest) {
+ UNIT_ASSERT(AsciiEqualsIgnoreCase("qqq", "qQq"));
+ UNIT_ASSERT(AsciiEqualsIgnoreCase("qqq", TStringBuf("qQq")));
+ TString qq = "qq";
+ TString qQ = "qQ";
+ UNIT_ASSERT(AsciiEqualsIgnoreCase(qq, qQ));
+
+ TString x = "qqqA";
+ TString y = "qQqB";
+ TString z = "qQnB";
+ TString zz = "qQqq";
+ TString zzz = "qQqqq";
+ TStringBuf xs = TStringBuf(x.data(), 3);
+ TStringBuf ys = TStringBuf(y.data(), 3);
+ TStringBuf zs = TStringBuf(z.data(), 3);
+ UNIT_ASSERT(AsciiCompareIgnoreCase(xs, ys) == 0);
+ UNIT_ASSERT(AsciiCompareIgnoreCase(xs, zs) > 0);
+ UNIT_ASSERT(AsciiCompareIgnoreCase(xs, zz) < 0);
+ UNIT_ASSERT(AsciiCompareIgnoreCase(zzz, zz) > 0);
+
+ UNIT_ASSERT(AsciiCompareIgnoreCase("qqQ", "qq") > 0);
+ UNIT_ASSERT(AsciiCompareIgnoreCase("qq", "qq") == 0);
+
+ UNIT_ASSERT_EQUAL(AsciiHasPrefix("qweasd", "qwe"), true);
+ UNIT_ASSERT_EQUAL(AsciiHasPrefix("qweasd", "qWe"), false);
+ UNIT_ASSERT_EQUAL(AsciiHasPrefix("qweasd", "eWq"), false);
+
+ UNIT_ASSERT_EQUAL(AsciiHasPrefixIgnoreCase("qweasd", "qWe"), true);
+ UNIT_ASSERT_EQUAL(AsciiHasPrefixIgnoreCase("qweasd", "eWq"), false);
+
+ UNIT_ASSERT_EQUAL(AsciiHasSuffixIgnoreCase("qweasd", "asD"), true);
+ UNIT_ASSERT_EQUAL(AsciiHasSuffixIgnoreCase("qweasd", "ast"), false);
+ }
+}