TestPunycode.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /*
  2. * Copyright (c) 2023, Simon Wanner <simon@skyrising.xyz>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibTest/TestCase.h>
  7. #include <LibUnicode/Punycode.h>
  8. namespace Unicode::Punycode {
  9. #define ENUMERATE_TEST_CASES \
  10. CASE(""sv, ""sv) \
  11. CASE("Well hello friends!"sv, "Well hello friends!-"sv) \
  12. CASE("Well-hello-friends"sv, "Well-hello-friends-"sv) \
  13. CASE("Wгellд-бhellбвo"sv, "Well-hello-friends"sv) \
  14. CASE("Hallöchen Freunde!"sv, "Hallchen Freunde!-2zb"sv) \
  15. CASE("Nåväl hej vänner"sv, "Nvl hej vnner-cfbhg"sv) \
  16. CASE("Ну привіт друзі"sv, " -kjc9flsd9cjetgj5xg"sv) \
  17. CASE("ليهمابتكلموشعربي؟"sv, "egbpdaj6bu4bxfgehfvwxn"sv) \
  18. CASE("他们为什么不说中文"sv, "ihqwcrb4cv8a8dqg056pqjye"sv) \
  19. CASE("他們爲什麽不說中文"sv, "ihqwctvzc91f659drss3x8bo0yb"sv) \
  20. CASE("Pročprostěnemluvíčesky"sv, "Proprostnemluvesky-uyb24dma41a"sv) \
  21. CASE("למההםפשוטלאמדבריםעברית"sv, "4dbcagdahymbxekheh6e0a7fei0b"sv) \
  22. CASE("यहलोगहिन्दीक्योंनहींबोलसकतेहैं"sv, "i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd"sv) \
  23. CASE("なぜみんな日本語を話してくれないのか"sv, "n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa"sv) \
  24. CASE("세계의모든사람들이한국어를이해한다면얼마나좋을까"sv, "989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c"sv) \
  25. CASE("почемужеонинеговорятпорусски"sv, "b1abfaaepdrnnbgefbadotcwatmq2g4l"sv) \
  26. CASE("PorquénopuedensimplementehablarenEspañol"sv, "PorqunopuedensimplementehablarenEspaol-fmd56a"sv) \
  27. CASE("TạisaohọkhôngthểchỉnóitiếngViệt"sv, "TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g"sv) \
  28. CASE("3年B組金八先生"sv, "3B-ww4c5e180e575a65lsy2b"sv) \
  29. CASE("安室奈美恵-with-SUPER-MONKEYS"sv, "-with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n"sv) \
  30. CASE("Hello-Another-Way-それぞれの場所"sv, "Hello-Another-Way--fc4qua05auwb3674vfr0b"sv) \
  31. CASE("ひとつ屋根の下2"sv, "2-u9tlzr9756bt3uc0v"sv) \
  32. CASE("MajiでKoiする5秒前"sv, "MajiKoi5-783gue6qz075azm5e"sv) \
  33. CASE("パフィーdeルンバ"sv, "de-jg4avhby1noc0d"sv) \
  34. CASE("そのスピードで"sv, "d9juau41awczczp"sv) \
  35. CASE("-> $1.00 <-"sv, "-> $1.00 <--"sv)
  36. TEST_CASE(decode)
  37. {
  38. #define CASE(a, b) EXPECT_EQ(TRY_OR_FAIL(decode(b)), a);
  39. ENUMERATE_TEST_CASES
  40. #undef CASE
  41. EXPECT(decode("Well hello friends!"sv).is_error());
  42. EXPECT(decode("Nåväl hej vänner"sv).is_error());
  43. }
  44. TEST_CASE(encode)
  45. {
  46. #define CASE(a, b) EXPECT_EQ(TRY_OR_FAIL(encode(a)), b);
  47. ENUMERATE_TEST_CASES
  48. #undef CASE
  49. }
  50. }