summaryrefslogtreecommitdiff
path: root/cras/src/tests/utf8_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'cras/src/tests/utf8_unittest.cc')
-rw-r--r--cras/src/tests/utf8_unittest.cc159
1 files changed, 0 insertions, 159 deletions
diff --git a/cras/src/tests/utf8_unittest.cc b/cras/src/tests/utf8_unittest.cc
deleted file mode 100644
index 4a13fcfa..00000000
--- a/cras/src/tests/utf8_unittest.cc
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Some UTF character seqeuences in this file were taken from
-// https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
-
-#include <gtest/gtest.h>
-#include <stdio.h>
-
-extern "C" {
-#include "cras_utf8.h"
-}
-
-namespace {
-
-TEST(UTF8, ValidStress) {
- size_t pos;
-
- EXPECT_EQ(1, valid_utf8_string("The greek word 'kosme': "
- "\xce\xba\xe1\xbd\xb9\xcf\x83\xce"
- "\xbc\xce\xb5",
- &pos));
- EXPECT_EQ(35, pos);
-
- EXPECT_EQ(1, valid_utf8_string("Playback", &pos));
- EXPECT_EQ(8, pos);
-
- EXPECT_EQ(1, valid_utf8_string("The Euro sign: \xe2\x82\xac", &pos));
- EXPECT_EQ(18, pos);
-
- /* First possible sequence of a certain length. */
- EXPECT_EQ(1, valid_utf8_string("\x01", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(1, valid_utf8_string("\xc2\x80", &pos));
- EXPECT_EQ(2, pos);
- EXPECT_EQ(1, valid_utf8_string("\xe0\xa0\x80", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xe1\x80\x80", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xf0\x90\x80\x80", &pos));
- EXPECT_EQ(4, pos);
- EXPECT_EQ(1, valid_utf8_string("\xf1\x80\x80\x80", &pos));
- EXPECT_EQ(4, pos);
-
- /* Last possible sequence of a certain length. */
- EXPECT_EQ(1, valid_utf8_string("\x7f", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(1, valid_utf8_string("\xdf\xbf", &pos));
- EXPECT_EQ(2, pos);
- EXPECT_EQ(1, valid_utf8_string("\xef\xbf\xbf", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xf4\x8f\xbf\xbf", &pos));
- EXPECT_EQ(4, pos);
-
- /* Other boundary conditions. */
- EXPECT_EQ(1, valid_utf8_string("\xed\x9f\xbf", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xee\x80\x80", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xef\xbf\xbd", &pos));
- EXPECT_EQ(3, pos);
- EXPECT_EQ(1, valid_utf8_string("\xf0\xbf\xbf\xbf", &pos));
- EXPECT_EQ(4, pos);
-
- /* BOM sequence. */
- EXPECT_EQ(1, valid_utf8_string("\xef\xbb\xbf", &pos));
- EXPECT_EQ(3, pos);
-
- /* Valid UTF-8 that shouldn't appear in text; chose to allow
- * these characters anyway. */
- EXPECT_EQ(1, valid_utf8_string("U+FFFE: \xef\xbf\xbe", &pos));
- EXPECT_EQ(11, pos);
- EXPECT_EQ(1, valid_utf8_string("U+FDD0: \xef\xb7\x90", &pos));
- EXPECT_EQ(11, pos);
- EXPECT_EQ(1, valid_utf8_string("\xf0\x9f\xbf\xbe", &pos));
- EXPECT_EQ(4, pos);
-}
-
-TEST(UTF8, InvalidStress) {
- size_t pos;
-
- /* Malformed continuation bytes. */
- EXPECT_EQ(0, valid_utf8_string("\x80", &pos));
- EXPECT_EQ(0, pos);
- EXPECT_EQ(0, valid_utf8_string("\xbf", &pos));
- EXPECT_EQ(0, pos);
- EXPECT_EQ(0, valid_utf8_string("\x80\xbf", &pos));
- EXPECT_EQ(0, pos);
- EXPECT_EQ(0, valid_utf8_string("\xc2\x80\xbf", &pos));
- EXPECT_EQ(2, pos);
-
- /* Lonely start characters. */
- EXPECT_EQ(0, valid_utf8_string("\xc2 \xc3 \xc4 ", &pos));
- EXPECT_EQ(1, pos);
-
- /* Out of range cases. */
- EXPECT_EQ(0, valid_utf8_string("\xf4\x90\xbf\xbf", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string(" \xf5\x80", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string(" \xe0\x80\x80", &pos));
- EXPECT_EQ(2, pos);
- EXPECT_EQ(0, valid_utf8_string("\xf4\x80\x80\xcf", &pos));
- EXPECT_EQ(3, pos);
-
- /* Stop in mid-sequence. */
- EXPECT_EQ(0, valid_utf8_string("\xf4\x80", &pos));
- EXPECT_EQ(2, pos);
-
- /* Bad characters. */
- EXPECT_EQ(0, valid_utf8_string("\xff", &pos));
- EXPECT_EQ(0, pos);
- EXPECT_EQ(0, valid_utf8_string("\xfe", &pos));
- EXPECT_EQ(0, pos);
-
- /* Overlong representations of ASCII characters. */
- EXPECT_EQ(0, valid_utf8_string("This represents the / character with too"
- "many bytes: \xe0\x80\xaf",
- &pos));
- EXPECT_EQ(53, pos);
- EXPECT_EQ(0, valid_utf8_string("This represents the / character with too"
- "many bytes: \xf0\x80\x80\xaf",
- &pos));
- EXPECT_EQ(53, pos);
-
- /* Should not be interpreted as the ASCII NUL character. */
- EXPECT_EQ(0, valid_utf8_string("This represents the NUL character with too"
- "many bytes: \xe0\x80\x80",
- &pos));
- EXPECT_EQ(55, pos);
- EXPECT_EQ(0, valid_utf8_string("This represents the NUL character with too"
- "many bytes: \xf0\x80\x80\x80",
- &pos));
- EXPECT_EQ(55, pos);
-
- /* Single UTF-16 surrogates. */
- EXPECT_EQ(0, valid_utf8_string("\xed\xa0\x80", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xad\xbf", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xae\x80", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xaf\xbf", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xb0\x80", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xbe\x80", &pos));
- EXPECT_EQ(1, pos);
- EXPECT_EQ(0, valid_utf8_string("\xed\xbf\xbf", &pos));
- EXPECT_EQ(1, pos);
-}
-
-} // namespace
-
-int main(int argc, char** argv) {
- ::testing::InitGoogleTest(&argc, argv);
- return RUN_ALL_TESTS();
-}