• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <Foundation/Foundation.h>
6
7#include "flutter/fml/platform/darwin/string_range_sanitization.h"
8#include "gtest/gtest.h"
9
10TEST(StringRangeSanitizationTest, CanHandleUnicode) {
11  auto result = fml::RangeForCharacterAtIndex(@"��", 1);
12  EXPECT_EQ(result.location, 0UL);
13  EXPECT_EQ(result.length, 2UL);
14}
15
16TEST(StringRangeSanitizationTest, HandlesInvalidRanges) {
17  auto ns_not_found = static_cast<unsigned long>(NSNotFound);
18  EXPECT_EQ(fml::RangeForCharacterAtIndex(@"��", 3).location, ns_not_found);
19  EXPECT_EQ(fml::RangeForCharacterAtIndex(@"��", -1).location, ns_not_found);
20  EXPECT_EQ(fml::RangeForCharacterAtIndex(nil, 0).location, ns_not_found);
21  EXPECT_EQ(fml::RangeForCharactersInRange(@"��", NSMakeRange(1, 2)).location, ns_not_found);
22  EXPECT_EQ(fml::RangeForCharactersInRange(@"��", NSMakeRange(3, 0)).location, ns_not_found);
23  EXPECT_EQ(fml::RangeForCharactersInRange(nil, NSMakeRange(0, 0)).location, ns_not_found);
24}
25
26TEST(StringRangeSanitizationTest, CanHandleUnicodeRange) {
27  auto result = fml::RangeForCharactersInRange(@"��", NSMakeRange(1, 0));
28  EXPECT_EQ(result.location, 0UL);
29  EXPECT_EQ(result.length, 0UL);
30}
31