// 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()); } TEST(TextRange, SetBase) { TextRange range(3, 7); range.set_base(4); EXPECT_EQ(range.base(), size_t(4)); EXPECT_EQ(range.extent(), size_t(7)); } TEST(TextRange, SetBaseReversed) { TextRange range(7, 3); range.set_base(5); EXPECT_EQ(range.base(), size_t(5)); EXPECT_EQ(range.extent(), size_t(3)); } TEST(TextRange, SetExtent) { TextRange range(3, 7); range.set_extent(6); EXPECT_EQ(range.base(), size_t(3)); EXPECT_EQ(range.extent(), size_t(6)); } TEST(TextRange, SetExtentReversed) { TextRange range(7, 3); range.set_extent(4); EXPECT_EQ(range.base(), size_t(7)); EXPECT_EQ(range.extent(), size_t(4)); } TEST(TextRange, SetStart) { TextRange range(3, 7); range.set_start(5); EXPECT_EQ(range.base(), size_t(5)); EXPECT_EQ(range.extent(), size_t(7)); } TEST(TextRange, SetStartReversed) { TextRange range(7, 3); range.set_start(5); EXPECT_EQ(range.base(), size_t(7)); EXPECT_EQ(range.extent(), size_t(5)); } TEST(TextRange, SetEnd) { TextRange range(3, 7); range.set_end(6); EXPECT_EQ(range.base(), size_t(3)); EXPECT_EQ(range.extent(), size_t(6)); } TEST(TextRange, SetEndReversed) { TextRange range(7, 3); range.set_end(5); EXPECT_EQ(range.base(), size_t(5)); EXPECT_EQ(range.extent(), size_t(3)); } TEST(TextRange, ContainsPreStartPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(1)); } TEST(TextRange, ContainsStartPosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(2)); } TEST(TextRange, ContainsMiddlePosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(3)); EXPECT_TRUE(range.Contains(4)); } TEST(TextRange, ContainsEndPosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(6)); } TEST(TextRange, ContainsPostEndPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(7)); } TEST(TextRange, ContainsPreStartPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(1)); } TEST(TextRange, ContainsStartPositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(2)); } TEST(TextRange, ContainsMiddlePositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(3)); EXPECT_TRUE(range.Contains(4)); } TEST(TextRange, ContainsEndPositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(6)); } TEST(TextRange, ContainsPostEndPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(7)); } TEST(TextRange, ContainsRangePreStartPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(TextRange(0, 1))); } TEST(TextRange, ContainsRangeSpanningStartPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(TextRange(1, 3))); } TEST(TextRange, ContainsRangeStartPosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(TextRange(2))); } TEST(TextRange, ContainsRangeMiddlePosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(TextRange(3, 4))); EXPECT_TRUE(range.Contains(TextRange(4, 5))); } TEST(TextRange, ContainsRangeEndPosition) { TextRange range(2, 6); EXPECT_TRUE(range.Contains(TextRange(6))); } TEST(TextRange, ContainsRangeSpanningEndPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(TextRange(5, 7))); } TEST(TextRange, ContainsRangePostEndPosition) { TextRange range(2, 6); EXPECT_FALSE(range.Contains(TextRange(6, 7))); } TEST(TextRange, ContainsRangePreStartPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(TextRange(0, 1))); } TEST(TextRange, ContainsRangeSpanningStartPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(TextRange(1, 3))); } TEST(TextRange, ContainsRangeStartPositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(TextRange(2))); } TEST(TextRange, ContainsRangeMiddlePositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(TextRange(3, 4))); EXPECT_TRUE(range.Contains(TextRange(4, 5))); } TEST(TextRange, ContainsRangeSpanningEndPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(TextRange(5, 7))); } TEST(TextRange, ContainsRangeEndPositionReversed) { TextRange range(6, 2); EXPECT_TRUE(range.Contains(TextRange(5))); } TEST(TextRange, ContainsRangePostEndPositionReversed) { TextRange range(6, 2); EXPECT_FALSE(range.Contains(TextRange(6, 7))); } TEST(TextRange, ReversedForwardRange) { TextRange range(2, 6); EXPECT_FALSE(range.reversed()); } TEST(TextRange, ReversedCollapsedRange) { TextRange range(2, 2); EXPECT_FALSE(range.reversed()); } TEST(TextRange, ReversedReversedRange) { TextRange range(6, 2); EXPECT_TRUE(range.reversed()); } } // namespace flutter