mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Extracts a TextRange class with a base and extent, and start(), end(), collapsed(), and length() getters. The possibility of reversed base and extent in selections and composing ranges makes reasoning about them complex and increases the chances of errors in the code. This change migrates most uses of base and extent in the text model to start()/end() or position(). The position() method is intended purely as an aid to readability to indicate that a collapsed selection is expected at the call site; it also enforces a debug-time assertion that this is the case.
54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
// Copyright 2013 The Flutter 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 "flutter/shell/platform/common/cpp/text_range.h"
|
|
|
|
#include "gtest/gtest.h"
|
|
|
|
namespace flutter {
|
|
|
|
TEST(TextRange, TextRangeFromPositionZero) {
|
|
TextRange range(0);
|
|
EXPECT_EQ(range.base(), size_t(0));
|
|
EXPECT_EQ(range.extent(), size_t(0));
|
|
EXPECT_EQ(range.start(), size_t(0));
|
|
EXPECT_EQ(range.end(), size_t(0));
|
|
EXPECT_EQ(range.length(), size_t(0));
|
|
EXPECT_EQ(range.position(), size_t(0));
|
|
EXPECT_TRUE(range.collapsed());
|
|
}
|
|
|
|
TEST(TextRange, TextRangeFromPositionNonZero) {
|
|
TextRange range(3);
|
|
EXPECT_EQ(range.base(), size_t(3));
|
|
EXPECT_EQ(range.extent(), size_t(3));
|
|
EXPECT_EQ(range.start(), size_t(3));
|
|
EXPECT_EQ(range.end(), size_t(3));
|
|
EXPECT_EQ(range.length(), size_t(0));
|
|
EXPECT_EQ(range.position(), size_t(3));
|
|
EXPECT_TRUE(range.collapsed());
|
|
}
|
|
|
|
TEST(TextRange, TextRangeFromRange) {
|
|
TextRange range(3, 7);
|
|
EXPECT_EQ(range.base(), size_t(3));
|
|
EXPECT_EQ(range.extent(), size_t(7));
|
|
EXPECT_EQ(range.start(), size_t(3));
|
|
EXPECT_EQ(range.end(), size_t(7));
|
|
EXPECT_EQ(range.length(), size_t(4));
|
|
EXPECT_FALSE(range.collapsed());
|
|
}
|
|
|
|
TEST(TextRange, TextRangeFromReversedRange) {
|
|
TextRange range(7, 3);
|
|
EXPECT_EQ(range.base(), size_t(7));
|
|
EXPECT_EQ(range.extent(), size_t(3));
|
|
EXPECT_EQ(range.start(), size_t(3));
|
|
EXPECT_EQ(range.end(), size_t(7));
|
|
EXPECT_EQ(range.length(), size_t(4));
|
|
EXPECT_FALSE(range.collapsed());
|
|
}
|
|
|
|
} // namespace flutter
|