//===- unittests/Frontend/ParsedSourceLocationTest.cpp - ------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

#include "clang/Frontend/CommandLineSourceLoc.h"
#include "gtest/gtest.h"
#include <optional>

using namespace llvm;
using namespace clang;

namespace {

TEST(ParsedSourceRange, ParseTest) {
  auto Check = [](StringRef Value, StringRef Filename, unsigned BeginLine,
                  unsigned BeginColumn, unsigned EndLine, unsigned EndColumn) {
    std::optional<ParsedSourceRange> PSR = ParsedSourceRange::fromString(Value);
    ASSERT_TRUE(PSR);
    EXPECT_EQ(PSR->FileName, Filename);
    EXPECT_EQ(PSR->Begin.first, BeginLine);
    EXPECT_EQ(PSR->Begin.second, BeginColumn);
    EXPECT_EQ(PSR->End.first, EndLine);
    EXPECT_EQ(PSR->End.second, EndColumn);
  };

  Check("/Users/test/a-b.cpp:1:2", "/Users/test/a-b.cpp", 1, 2, 1, 2);
  Check("/Users/test/a-b.cpp:1:2-3:4", "/Users/test/a-b.cpp", 1, 2, 3, 4);

  Check("C:/Users/bob/a-b.cpp:1:2", "C:/Users/bob/a-b.cpp", 1, 2, 1, 2);
  Check("C:/Users/bob/a-b.cpp:1:2-3:4", "C:/Users/bob/a-b.cpp", 1, 2, 3, 4);
}

} // anonymous namespace
