1*810390e3Srobert //===-- adt_test.cpp ------------------------------------------------------===//
2*810390e3Srobert //
3*810390e3Srobert // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*810390e3Srobert // See https://llvm.org/LICENSE.txt for license information.
5*810390e3Srobert // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*810390e3Srobert //
7*810390e3Srobert //===----------------------------------------------------------------------===//
8*810390e3Srobert //
9*810390e3Srobert // This file is a part of the ORC runtime.
10*810390e3Srobert //
11*810390e3Srobert //===----------------------------------------------------------------------===//
12*810390e3Srobert
13*810390e3Srobert #include "adt.h"
14*810390e3Srobert #include "gtest/gtest.h"
15*810390e3Srobert
16*810390e3Srobert #include <sstream>
17*810390e3Srobert #include <string>
18*810390e3Srobert
19*810390e3Srobert using namespace __orc_rt;
20*810390e3Srobert
TEST(ADTTest,SpanDefaultConstruction)21*810390e3Srobert TEST(ADTTest, SpanDefaultConstruction) {
22*810390e3Srobert span<int> S;
23*810390e3Srobert EXPECT_TRUE(S.empty()) << "Default constructed span not empty";
24*810390e3Srobert EXPECT_EQ(S.size(), 0U) << "Default constructed span size not zero";
25*810390e3Srobert EXPECT_EQ(S.begin(), S.end()) << "Default constructed span begin != end";
26*810390e3Srobert }
27*810390e3Srobert
TEST(ADTTest,SpanConstructFromFixedArray)28*810390e3Srobert TEST(ADTTest, SpanConstructFromFixedArray) {
29*810390e3Srobert int A[] = {1, 2, 3, 4, 5};
30*810390e3Srobert span<int> S(A);
31*810390e3Srobert EXPECT_FALSE(S.empty()) << "Span should be non-empty";
32*810390e3Srobert EXPECT_EQ(S.size(), 5U) << "Span has unexpected size";
33*810390e3Srobert EXPECT_EQ(std::distance(S.begin(), S.end()), 5U)
34*810390e3Srobert << "Unexpected iterator range size";
35*810390e3Srobert EXPECT_EQ(S.data(), &A[0]) << "Span data has unexpected value";
36*810390e3Srobert for (unsigned I = 0; I != S.size(); ++I)
37*810390e3Srobert EXPECT_EQ(S[I], A[I]) << "Unexpected span element value";
38*810390e3Srobert }
39*810390e3Srobert
TEST(ADTTest,SpanConstructFromIteratorAndSize)40*810390e3Srobert TEST(ADTTest, SpanConstructFromIteratorAndSize) {
41*810390e3Srobert int A[] = {1, 2, 3, 4, 5};
42*810390e3Srobert span<int> S(&A[0], 5);
43*810390e3Srobert EXPECT_FALSE(S.empty()) << "Span should be non-empty";
44*810390e3Srobert EXPECT_EQ(S.size(), 5U) << "Span has unexpected size";
45*810390e3Srobert EXPECT_EQ(std::distance(S.begin(), S.end()), 5U)
46*810390e3Srobert << "Unexpected iterator range size";
47*810390e3Srobert EXPECT_EQ(S.data(), &A[0]) << "Span data has unexpected value";
48*810390e3Srobert for (unsigned I = 0; I != S.size(); ++I)
49*810390e3Srobert EXPECT_EQ(S[I], A[I]) << "Unexpected span element value";
50*810390e3Srobert }
51