1
1
/*
2
- * Copyright (C) 2018 Intel Corporation
2
+ * Copyright (C) 2018-2019 Intel Corporation
3
3
*
4
4
* SPDX-License-Identifier: MIT
5
5
*
8
8
#include " runtime/utilities/arrayref.h"
9
9
#include " runtime/utilities/idlist.h"
10
10
#include " runtime/utilities/iflist.h"
11
+ #include " runtime/utilities/range.h"
11
12
#include " runtime/utilities/stackvec.h"
12
13
#include " unit_tests/utilities/containers_tests_helpers.h"
13
14
@@ -1069,6 +1070,12 @@ TEST(StackVec, Constructor) {
1069
1070
ASSERT_TRUE (contains (&bigger, &*bigger.begin ()));
1070
1071
ASSERT_TRUE (contains (&exact, &*exact.begin ()));
1071
1072
ASSERT_FALSE (contains (&smaller, &*smaller.begin ()));
1073
+
1074
+ StackVec<Type, 4 > withInitList{1 , 2 , 3 , 5 };
1075
+ EXPECT_EQ (1 , withInitList[0 ]);
1076
+ EXPECT_EQ (2 , withInitList[1 ]);
1077
+ EXPECT_EQ (3 , withInitList[2 ]);
1078
+ EXPECT_EQ (5 , withInitList[3 ]);
1072
1079
}
1073
1080
1074
1081
TEST (StackVec, ConstructorWithInitialSizeGetsResizedAutomaticallyDuringConstruction) {
@@ -1499,6 +1506,8 @@ TEST(StackVec, EqualsOperatorReturnsFalseIfStackVecsHaveDifferentSizes) {
1499
1506
1500
1507
EXPECT_FALSE (longer == shorter);
1501
1508
EXPECT_FALSE (shorter == longer);
1509
+ EXPECT_TRUE (longer != shorter);
1510
+ EXPECT_TRUE (shorter != longer);
1502
1511
}
1503
1512
1504
1513
TEST (StackVec, EqualsOperatorReturnsFalseIfDataNotEqual) {
@@ -1508,13 +1517,15 @@ TEST(StackVec, EqualsOperatorReturnsFalseIfDataNotEqual) {
1508
1517
StackVec<char , 10 > vecA{dataA, dataA + sizeof (dataA)};
1509
1518
StackVec<char , 15 > vecB{dataB, dataB + sizeof (dataB)};
1510
1519
EXPECT_FALSE (vecA == vecB);
1520
+ EXPECT_TRUE (vecA != vecB);
1511
1521
}
1512
1522
1513
1523
TEST (StackVec, EqualsOperatorReturnsTrueIfBothContainersAreEmpty) {
1514
1524
StackVec<char , 10 > vecA;
1515
1525
StackVec<char , 15 > vecB;
1516
1526
1517
1527
EXPECT_TRUE (vecA == vecB);
1528
+ EXPECT_FALSE (vecA != vecB);
1518
1529
}
1519
1530
1520
1531
TEST (StackVec, EqualsOperatorReturnsTrueIfDataIsEqual) {
@@ -1524,6 +1535,7 @@ TEST(StackVec, EqualsOperatorReturnsTrueIfDataIsEqual) {
1524
1535
StackVec<char , 10 > vecA{dataA, dataA + sizeof (dataA)};
1525
1536
StackVec<char , 15 > vecB{dataB, dataB + sizeof (dataB)};
1526
1537
EXPECT_TRUE (vecA == vecB);
1538
+ EXPECT_FALSE (vecA != vecB);
1527
1539
}
1528
1540
1529
1541
int sum (ArrayRef<int > a) {
@@ -1638,3 +1650,45 @@ TEST(ArrayRef, EqualsOperatorReturnsTrueIfDataIsEqual) {
1638
1650
ArrayRef<char > arrayB{dataB, sizeof (dataB)};
1639
1651
EXPECT_TRUE (arrayA == arrayB);
1640
1652
}
1653
+
1654
+ TEST (Range, GivenRangeThenValidStandardIteratorsAreAvailable) {
1655
+ int tab[10 ] = {2 , 3 , 5 , 7 , 11 , 13 , 17 , 19 , 23 , 29 };
1656
+ Range<int > range = tab;
1657
+ const Range<int > &constantRange = range;
1658
+ Range<int > emptyRange{nullptr , 0 };
1659
+ EXPECT_EQ (0U , emptyRange.size ());
1660
+ EXPECT_TRUE (emptyRange.empty ());
1661
+ EXPECT_EQ (10U , constantRange.size ());
1662
+ EXPECT_FALSE (constantRange.empty ());
1663
+
1664
+ auto rangeFwdIt = range.begin ();
1665
+ auto rangeFwdEnd = range.end ();
1666
+ auto rangeBackIt = range.rbegin ();
1667
+ auto rangeBackEnd = range.rend ();
1668
+
1669
+ auto constantRangeFwdIt = constantRange.begin ();
1670
+ auto constantRangeFwdEnd = constantRange.end ();
1671
+ auto constantRangeBackIt = constantRange.rbegin ();
1672
+ auto constantRangeBackEnd = constantRange.rend ();
1673
+ for (int i = 0 ; i < 10 ; ++i, ++rangeFwdIt, ++rangeBackIt, ++constantRangeFwdIt, ++constantRangeBackIt) {
1674
+ EXPECT_EQ (tab[i], *rangeFwdIt) << " it : " << i;
1675
+ EXPECT_EQ (tab[i], *constantRangeFwdIt) << " it : " << i;
1676
+ EXPECT_NE (rangeFwdEnd, rangeFwdIt) << " it : " << i;
1677
+ EXPECT_NE (constantRangeFwdEnd, constantRangeFwdIt) << " it : " << i;
1678
+
1679
+ EXPECT_EQ (tab[10 - 1 - i], *rangeBackIt) << " it : " << i;
1680
+ EXPECT_EQ (tab[10 - 1 - i], *constantRangeBackIt) << " it : " << i;
1681
+ EXPECT_NE (rangeBackEnd, rangeBackIt) << " it : " << i;
1682
+ EXPECT_NE (constantRangeBackEnd, constantRangeBackIt) << " it : " << i;
1683
+ }
1684
+
1685
+ EXPECT_EQ (rangeFwdEnd, rangeFwdIt);
1686
+ EXPECT_EQ (constantRangeFwdEnd, constantRangeFwdIt);
1687
+ EXPECT_EQ (rangeBackEnd, rangeBackIt);
1688
+ EXPECT_EQ (constantRangeBackEnd, constantRangeBackIt);
1689
+
1690
+ std::vector<int > vec (&tab[0 ], &tab[10 ]);
1691
+ Range<int > rangeFromVec = vec;
1692
+ EXPECT_EQ (&*vec.begin (), &*rangeFromVec.begin ());
1693
+ EXPECT_EQ (&*vec.rbegin (), &*rangeFromVec.rbegin ());
1694
+ }
0 commit comments