1 #include <gtest/gtest.h>
2 #include <torch/csrc/jit/frontend/source_range.h>
3
4 using namespace ::testing;
5 using namespace ::torch::jit;
6
TEST(SourceRangeTest,test_find)7 TEST(SourceRangeTest, test_find) {
8 std::vector<std::shared_ptr<std::string>> strings;
9 strings.push_back(std::make_shared<std::string>("hello world"));
10 strings.push_back(std::make_shared<std::string>("nihaoma"));
11
12 std::vector<c10::string_view> pieces{*strings[0], *strings[1]};
13
14 StringCordView view(pieces, strings);
15
16 auto x = view.find("rldni", 0);
17 EXPECT_EQ(x, 8);
18 }
19
TEST(SourceRangeTest,test_substr)20 TEST(SourceRangeTest, test_substr) {
21 std::vector<std::shared_ptr<std::string>> strings;
22 strings.push_back(std::make_shared<std::string>("hello world"));
23 strings.push_back(std::make_shared<std::string>("nihaoma"));
24
25 std::vector<c10::string_view> pieces{*strings[0], *strings[1]};
26
27 StringCordView view(pieces, strings);
28
29 auto x = view.substr(4, 10).str();
30 EXPECT_EQ(x, view.str().substr(4, 10));
31 EXPECT_EQ(view.substr(0, view.size()).str(), view.str());
32 }
33
TEST(SourceRangeTest,test_iter)34 TEST(SourceRangeTest, test_iter) {
35 std::vector<std::shared_ptr<std::string>> strings;
36 strings.push_back(std::make_shared<std::string>("hello world"));
37 strings.push_back(std::make_shared<std::string>("nihaoma"));
38
39 std::vector<c10::string_view> pieces{*strings[0], *strings[1]};
40
41 StringCordView view(pieces, strings);
42
43 auto iter = view.iter_for_pos(5);
44 EXPECT_EQ(*iter, ' ');
45 EXPECT_EQ(iter.rest_line(), " world");
46 EXPECT_EQ(*iter.next_iter(), 'w');
47 EXPECT_EQ(iter.pos(), 5);
48
49 iter = view.iter_for_pos(13);
50 EXPECT_EQ(iter.pos(), 13);
51 }
52