11/*
2- * Copyright (C) 2018 Intel Corporation
2+ * Copyright (C) 2018-2019 Intel Corporation
33 *
44 * SPDX-License-Identifier: MIT
55 *
88#include " runtime/utilities/arrayref.h"
99#include " runtime/utilities/idlist.h"
1010#include " runtime/utilities/iflist.h"
11+ #include " runtime/utilities/range.h"
1112#include " runtime/utilities/stackvec.h"
1213#include " unit_tests/utilities/containers_tests_helpers.h"
1314
@@ -1069,6 +1070,12 @@ TEST(StackVec, Constructor) {
10691070 ASSERT_TRUE (contains (&bigger, &*bigger.begin ()));
10701071 ASSERT_TRUE (contains (&exact, &*exact.begin ()));
10711072 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 ]);
10721079}
10731080
10741081TEST (StackVec, ConstructorWithInitialSizeGetsResizedAutomaticallyDuringConstruction) {
@@ -1499,6 +1506,8 @@ TEST(StackVec, EqualsOperatorReturnsFalseIfStackVecsHaveDifferentSizes) {
14991506
15001507 EXPECT_FALSE (longer == shorter);
15011508 EXPECT_FALSE (shorter == longer);
1509+ EXPECT_TRUE (longer != shorter);
1510+ EXPECT_TRUE (shorter != longer);
15021511}
15031512
15041513TEST (StackVec, EqualsOperatorReturnsFalseIfDataNotEqual) {
@@ -1508,13 +1517,15 @@ TEST(StackVec, EqualsOperatorReturnsFalseIfDataNotEqual) {
15081517 StackVec<char , 10 > vecA{dataA, dataA + sizeof (dataA)};
15091518 StackVec<char , 15 > vecB{dataB, dataB + sizeof (dataB)};
15101519 EXPECT_FALSE (vecA == vecB);
1520+ EXPECT_TRUE (vecA != vecB);
15111521}
15121522
15131523TEST (StackVec, EqualsOperatorReturnsTrueIfBothContainersAreEmpty) {
15141524 StackVec<char , 10 > vecA;
15151525 StackVec<char , 15 > vecB;
15161526
15171527 EXPECT_TRUE (vecA == vecB);
1528+ EXPECT_FALSE (vecA != vecB);
15181529}
15191530
15201531TEST (StackVec, EqualsOperatorReturnsTrueIfDataIsEqual) {
@@ -1524,6 +1535,7 @@ TEST(StackVec, EqualsOperatorReturnsTrueIfDataIsEqual) {
15241535 StackVec<char , 10 > vecA{dataA, dataA + sizeof (dataA)};
15251536 StackVec<char , 15 > vecB{dataB, dataB + sizeof (dataB)};
15261537 EXPECT_TRUE (vecA == vecB);
1538+ EXPECT_FALSE (vecA != vecB);
15271539}
15281540
15291541int sum (ArrayRef<int > a) {
@@ -1638,3 +1650,45 @@ TEST(ArrayRef, EqualsOperatorReturnsTrueIfDataIsEqual) {
16381650 ArrayRef<char > arrayB{dataB, sizeof (dataB)};
16391651 EXPECT_TRUE (arrayA == arrayB);
16401652}
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