// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/accessibility/ax_text_utils.h" namespace ui { TEST(AXTextUtils, FindAccessibleTextBoundaryLine) { const base::string16 text = base::UTF8ToUTF16("Line 1.\nLine 2\n"); const size_t text_length = text.length(); std::vector line_breaks; line_breaks.push_back(7); line_breaks.push_back(14); size_t result; // Basic cases. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 5, FORWARDS_DIRECTION); EXPECT_EQ(7UL, result); result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 9, BACKWARDS_DIRECTION); EXPECT_EQ(7UL, result); result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 10, FORWARDS_DIRECTION); EXPECT_EQ(14UL, result); // Edge cases. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, text_length, BACKWARDS_DIRECTION); EXPECT_EQ(14UL, result); // When the start_offset is on a line break and we are searching backwards, // it should return the previous line break. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 14, BACKWARDS_DIRECTION); EXPECT_EQ(7UL, result); // When the start_offset is on a line break and we are searching forwards, // it should return the next line break. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 7, FORWARDS_DIRECTION); EXPECT_EQ(14UL, result); // When there is no previous line break and we are searching backwards, // it should return 0. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 4, BACKWARDS_DIRECTION); EXPECT_EQ(0UL, result); // When we are on the last line break and we are searching forwards. // it should return the text length. result = FindAccessibleTextBoundary(text, line_breaks, LINE_BOUNDARY, 14, FORWARDS_DIRECTION); EXPECT_EQ(text_length, result); } } // Namespace ui.