|  | // Copyright 2019 The Fuchsia 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 <unittest/unittest.h> | 
|  |  | 
|  | #include "fidl/source_location.h" | 
|  | #include "test_library.h" | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | bool AddLine() { | 
|  | BEGIN_TEST; | 
|  |  | 
|  | fidl::VirtualSourceFile file("imaginary-test-file"); | 
|  |  | 
|  | fidl::SourceLocation one = file.AddLine("one"); | 
|  | fidl::SourceLocation two = file.AddLine("two"); | 
|  | fidl::SourceLocation three = file.AddLine("three"); | 
|  |  | 
|  | EXPECT_STR_EQ(std::string(one.data()).c_str(), "one"); | 
|  | EXPECT_STR_EQ(std::string(two.data()).c_str(), "two"); | 
|  | EXPECT_STR_EQ(std::string(three.data()).c_str(), "three"); | 
|  |  | 
|  | END_TEST; | 
|  | } | 
|  |  | 
|  | bool LineContaining() { | 
|  | BEGIN_TEST; | 
|  |  | 
|  | fidl::VirtualSourceFile file("imaginary-test-file"); | 
|  |  | 
|  | file.AddLine("one"); | 
|  | fidl::SourceLocation two = file.AddLine("two"); | 
|  | file.AddLine("three"); | 
|  |  | 
|  | fidl::SourceFile::Position pos{}; | 
|  | file.LineContaining(two.data(), &pos); | 
|  | EXPECT_EQ(pos.line, 2); | 
|  | EXPECT_EQ(pos.column, 1); | 
|  |  | 
|  | END_TEST; | 
|  | } | 
|  |  | 
|  | } // namespace | 
|  |  | 
|  | BEGIN_TEST_CASE(virtual_source_tests) | 
|  |  | 
|  | RUN_TEST(AddLine) | 
|  | RUN_TEST(LineContaining) | 
|  |  | 
|  | END_TEST_CASE(virtual_source_tests) |