small_vector_test.cpp 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599
  1. // Copyright (c) 2017 Google Inc.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. #include <utility>
  15. #include <vector>
  16. #include "gmock/gmock.h"
  17. #include "source/util/small_vector.h"
  18. namespace spvtools {
  19. namespace utils {
  20. namespace {
  21. using SmallVectorTest = ::testing::Test;
  22. TEST(SmallVectorTest, Initialize_default) {
  23. SmallVector<uint32_t, 2> vec;
  24. EXPECT_TRUE(vec.empty());
  25. EXPECT_EQ(vec.size(), 0);
  26. EXPECT_EQ(vec.begin(), vec.end());
  27. }
  28. TEST(SmallVectorTest, Initialize_list1) {
  29. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  30. EXPECT_FALSE(vec.empty());
  31. EXPECT_EQ(vec.size(), 4);
  32. uint32_t result[] = {0, 1, 2, 3};
  33. for (uint32_t i = 0; i < vec.size(); ++i) {
  34. EXPECT_EQ(vec[i], result[i]);
  35. }
  36. }
  37. TEST(SmallVectorTest, Initialize_list2) {
  38. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  39. EXPECT_FALSE(vec.empty());
  40. EXPECT_EQ(vec.size(), 4);
  41. uint32_t result[] = {0, 1, 2, 3};
  42. for (uint32_t i = 0; i < vec.size(); ++i) {
  43. EXPECT_EQ(vec[i], result[i]);
  44. }
  45. }
  46. TEST(SmallVectorTest, Initialize_copy1) {
  47. SmallVector<uint32_t, 6> vec1 = {0, 1, 2, 3};
  48. SmallVector<uint32_t, 6> vec2(vec1);
  49. EXPECT_EQ(vec2.size(), 4);
  50. uint32_t result[] = {0, 1, 2, 3};
  51. for (uint32_t i = 0; i < vec2.size(); ++i) {
  52. EXPECT_EQ(vec2[i], result[i]);
  53. }
  54. EXPECT_EQ(vec1, vec2);
  55. }
  56. TEST(SmallVectorTest, Initialize_copy2) {
  57. SmallVector<uint32_t, 2> vec1 = {0, 1, 2, 3};
  58. SmallVector<uint32_t, 2> vec2(vec1);
  59. EXPECT_EQ(vec2.size(), 4);
  60. uint32_t result[] = {0, 1, 2, 3};
  61. for (uint32_t i = 0; i < vec2.size(); ++i) {
  62. EXPECT_EQ(vec2[i], result[i]);
  63. }
  64. EXPECT_EQ(vec1, vec2);
  65. }
  66. TEST(SmallVectorTest, Initialize_copy_vec1) {
  67. std::vector<uint32_t> vec1 = {0, 1, 2, 3};
  68. SmallVector<uint32_t, 6> vec2(vec1);
  69. EXPECT_EQ(vec2.size(), 4);
  70. uint32_t result[] = {0, 1, 2, 3};
  71. for (uint32_t i = 0; i < vec2.size(); ++i) {
  72. EXPECT_EQ(vec2[i], result[i]);
  73. }
  74. EXPECT_EQ(vec1, vec2);
  75. }
  76. TEST(SmallVectorTest, Initialize_copy_vec2) {
  77. std::vector<uint32_t> vec1 = {0, 1, 2, 3};
  78. SmallVector<uint32_t, 2> vec2(vec1);
  79. EXPECT_EQ(vec2.size(), 4);
  80. uint32_t result[] = {0, 1, 2, 3};
  81. for (uint32_t i = 0; i < vec2.size(); ++i) {
  82. EXPECT_EQ(vec2[i], result[i]);
  83. }
  84. EXPECT_EQ(vec1, vec2);
  85. }
  86. TEST(SmallVectorTest, Initialize_move1) {
  87. SmallVector<uint32_t, 6> vec1 = {0, 1, 2, 3};
  88. SmallVector<uint32_t, 6> vec2(std::move(vec1));
  89. EXPECT_EQ(vec2.size(), 4);
  90. uint32_t result[] = {0, 1, 2, 3};
  91. for (uint32_t i = 0; i < vec2.size(); ++i) {
  92. EXPECT_EQ(vec2[i], result[i]);
  93. }
  94. EXPECT_TRUE(vec1.empty());
  95. }
  96. TEST(SmallVectorTest, Initialize_move2) {
  97. SmallVector<uint32_t, 2> vec1 = {0, 1, 2, 3};
  98. SmallVector<uint32_t, 2> vec2(std::move(vec1));
  99. EXPECT_EQ(vec2.size(), 4);
  100. uint32_t result[] = {0, 1, 2, 3};
  101. for (uint32_t i = 0; i < vec2.size(); ++i) {
  102. EXPECT_EQ(vec2[i], result[i]);
  103. }
  104. EXPECT_TRUE(vec1.empty());
  105. }
  106. TEST(SmallVectorTest, Initialize_move_vec1) {
  107. std::vector<uint32_t> vec1 = {0, 1, 2, 3};
  108. SmallVector<uint32_t, 6> vec2(std::move(vec1));
  109. EXPECT_EQ(vec2.size(), 4);
  110. uint32_t result[] = {0, 1, 2, 3};
  111. for (uint32_t i = 0; i < vec2.size(); ++i) {
  112. EXPECT_EQ(vec2[i], result[i]);
  113. }
  114. EXPECT_TRUE(vec1.empty());
  115. }
  116. TEST(SmallVectorTest, Initialize_move_vec2) {
  117. std::vector<uint32_t> vec1 = {0, 1, 2, 3};
  118. SmallVector<uint32_t, 2> vec2(std::move(vec1));
  119. EXPECT_EQ(vec2.size(), 4);
  120. uint32_t result[] = {0, 1, 2, 3};
  121. for (uint32_t i = 0; i < vec2.size(); ++i) {
  122. EXPECT_EQ(vec2[i], result[i]);
  123. }
  124. EXPECT_TRUE(vec1.empty());
  125. }
  126. TEST(SmallVectorTest, Initialize_iterators1) {
  127. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  128. EXPECT_EQ(vec.size(), 4);
  129. uint32_t result[] = {0, 1, 2, 3};
  130. uint32_t i = 0;
  131. for (uint32_t p : vec) {
  132. EXPECT_EQ(p, result[i]);
  133. i++;
  134. }
  135. }
  136. TEST(SmallVectorTest, Initialize_iterators2) {
  137. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  138. EXPECT_EQ(vec.size(), 4);
  139. uint32_t result[] = {0, 1, 2, 3};
  140. uint32_t i = 0;
  141. for (uint32_t p : vec) {
  142. EXPECT_EQ(p, result[i]);
  143. i++;
  144. }
  145. }
  146. TEST(SmallVectorTest, Initialize_iterators3) {
  147. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  148. EXPECT_EQ(vec.size(), 4);
  149. uint32_t result[] = {0, 1, 2, 3};
  150. uint32_t i = 0;
  151. for (SmallVector<uint32_t, 2>::iterator it = vec.begin(); it != vec.end();
  152. ++it) {
  153. EXPECT_EQ(*it, result[i]);
  154. i++;
  155. }
  156. }
  157. TEST(SmallVectorTest, Initialize_iterators4) {
  158. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  159. EXPECT_EQ(vec.size(), 4);
  160. uint32_t result[] = {0, 1, 2, 3};
  161. uint32_t i = 0;
  162. for (SmallVector<uint32_t, 6>::iterator it = vec.begin(); it != vec.end();
  163. ++it) {
  164. EXPECT_EQ(*it, result[i]);
  165. i++;
  166. }
  167. }
  168. TEST(SmallVectorTest, Initialize_iterators_write1) {
  169. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  170. EXPECT_EQ(vec.size(), 4);
  171. for (SmallVector<uint32_t, 6>::iterator it = vec.begin(); it != vec.end();
  172. ++it) {
  173. *it *= 2;
  174. }
  175. uint32_t result[] = {0, 2, 4, 6};
  176. uint32_t i = 0;
  177. for (SmallVector<uint32_t, 6>::iterator it = vec.begin(); it != vec.end();
  178. ++it) {
  179. EXPECT_EQ(*it, result[i]);
  180. i++;
  181. }
  182. }
  183. TEST(SmallVectorTest, Initialize_iterators_write2) {
  184. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  185. EXPECT_EQ(vec.size(), 4);
  186. for (SmallVector<uint32_t, 2>::iterator it = vec.begin(); it != vec.end();
  187. ++it) {
  188. *it *= 2;
  189. }
  190. uint32_t result[] = {0, 2, 4, 6};
  191. uint32_t i = 0;
  192. for (SmallVector<uint32_t, 2>::iterator it = vec.begin(); it != vec.end();
  193. ++it) {
  194. EXPECT_EQ(*it, result[i]);
  195. i++;
  196. }
  197. }
  198. TEST(SmallVectorTest, Initialize_front) {
  199. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  200. EXPECT_EQ(vec.front(), 0);
  201. for (SmallVector<uint32_t, 2>::iterator it = vec.begin(); it != vec.end();
  202. ++it) {
  203. *it += 2;
  204. }
  205. EXPECT_EQ(vec.front(), 2);
  206. }
  207. TEST(SmallVectorTest, Erase_element_front1) {
  208. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  209. EXPECT_EQ(vec.front(), 0);
  210. EXPECT_EQ(vec.size(), 4);
  211. vec.erase(vec.begin());
  212. EXPECT_EQ(vec.front(), 1);
  213. EXPECT_EQ(vec.size(), 3);
  214. }
  215. TEST(SmallVectorTest, Erase_element_front2) {
  216. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  217. EXPECT_EQ(vec.front(), 0);
  218. EXPECT_EQ(vec.size(), 4);
  219. vec.erase(vec.begin());
  220. EXPECT_EQ(vec.front(), 1);
  221. EXPECT_EQ(vec.size(), 3);
  222. }
  223. TEST(SmallVectorTest, Erase_element_back1) {
  224. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  225. SmallVector<uint32_t, 2> result = {0, 1, 2};
  226. EXPECT_EQ(vec[3], 3);
  227. EXPECT_EQ(vec.size(), 4);
  228. vec.erase(vec.begin() + 3);
  229. EXPECT_EQ(vec.size(), 3);
  230. EXPECT_EQ(vec, result);
  231. }
  232. TEST(SmallVectorTest, Erase_element_back2) {
  233. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  234. SmallVector<uint32_t, 6> result = {0, 1, 2};
  235. EXPECT_EQ(vec[3], 3);
  236. EXPECT_EQ(vec.size(), 4);
  237. vec.erase(vec.begin() + 3);
  238. EXPECT_EQ(vec.size(), 3);
  239. EXPECT_EQ(vec, result);
  240. }
  241. TEST(SmallVectorTest, Erase_element_middle1) {
  242. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  243. SmallVector<uint32_t, 2> result = {0, 1, 3};
  244. EXPECT_EQ(vec.size(), 4);
  245. vec.erase(vec.begin() + 2);
  246. EXPECT_EQ(vec.size(), 3);
  247. EXPECT_EQ(vec, result);
  248. }
  249. TEST(SmallVectorTest, Erase_element_middle2) {
  250. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  251. SmallVector<uint32_t, 6> result = {0, 1, 3};
  252. EXPECT_EQ(vec.size(), 4);
  253. vec.erase(vec.begin() + 2);
  254. EXPECT_EQ(vec.size(), 3);
  255. EXPECT_EQ(vec, result);
  256. }
  257. TEST(SmallVectorTest, Erase_range_1) {
  258. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  259. SmallVector<uint32_t, 6> result = {};
  260. EXPECT_EQ(vec.size(), 4);
  261. vec.erase(vec.begin(), vec.end());
  262. EXPECT_EQ(vec.size(), 0);
  263. EXPECT_EQ(vec, result);
  264. }
  265. TEST(SmallVectorTest, Erase_range_2) {
  266. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  267. SmallVector<uint32_t, 2> result = {};
  268. EXPECT_EQ(vec.size(), 4);
  269. vec.erase(vec.begin(), vec.end());
  270. EXPECT_EQ(vec.size(), 0);
  271. EXPECT_EQ(vec, result);
  272. }
  273. TEST(SmallVectorTest, Erase_range_3) {
  274. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  275. SmallVector<uint32_t, 6> result = {2, 3};
  276. EXPECT_EQ(vec.size(), 4);
  277. vec.erase(vec.begin(), vec.begin() + 2);
  278. EXPECT_EQ(vec.size(), 2);
  279. EXPECT_EQ(vec, result);
  280. }
  281. TEST(SmallVectorTest, Erase_range_4) {
  282. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  283. SmallVector<uint32_t, 2> result = {2, 3};
  284. EXPECT_EQ(vec.size(), 4);
  285. vec.erase(vec.begin(), vec.begin() + 2);
  286. EXPECT_EQ(vec.size(), 2);
  287. EXPECT_EQ(vec, result);
  288. }
  289. TEST(SmallVectorTest, Erase_range_5) {
  290. SmallVector<uint32_t, 6> vec = {0, 1, 2, 3};
  291. SmallVector<uint32_t, 6> result = {0, 3};
  292. EXPECT_EQ(vec.size(), 4);
  293. vec.erase(vec.begin() + 1, vec.begin() + 3);
  294. EXPECT_EQ(vec.size(), 2);
  295. EXPECT_EQ(vec, result);
  296. }
  297. TEST(SmallVectorTest, Erase_range_6) {
  298. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  299. SmallVector<uint32_t, 2> result = {0, 3};
  300. EXPECT_EQ(vec.size(), 4);
  301. vec.erase(vec.begin() + 1, vec.begin() + 3);
  302. EXPECT_EQ(vec.size(), 2);
  303. EXPECT_EQ(vec, result);
  304. }
  305. TEST(SmallVectorTest, Push_back) {
  306. SmallVector<uint32_t, 2> vec;
  307. SmallVector<uint32_t, 2> result = {0, 1, 2, 3};
  308. EXPECT_EQ(vec.size(), 0);
  309. vec.push_back(0);
  310. EXPECT_EQ(vec.size(), 1);
  311. vec.push_back(1);
  312. EXPECT_EQ(vec.size(), 2);
  313. vec.push_back(2);
  314. EXPECT_EQ(vec.size(), 3);
  315. vec.push_back(3);
  316. EXPECT_EQ(vec.size(), 4);
  317. EXPECT_EQ(vec, result);
  318. }
  319. TEST(SmallVectorTest, Emplace_back) {
  320. SmallVector<uint32_t, 2> vec;
  321. SmallVector<uint32_t, 2> result = {0, 1, 2, 3};
  322. EXPECT_EQ(vec.size(), 0);
  323. vec.emplace_back(0);
  324. EXPECT_EQ(vec.size(), 1);
  325. vec.emplace_back(1);
  326. EXPECT_EQ(vec.size(), 2);
  327. vec.emplace_back(2);
  328. EXPECT_EQ(vec.size(), 3);
  329. vec.emplace_back(3);
  330. EXPECT_EQ(vec.size(), 4);
  331. EXPECT_EQ(vec, result);
  332. }
  333. TEST(SmallVectorTest, Clear) {
  334. SmallVector<uint32_t, 2> vec = {0, 1, 2, 3};
  335. SmallVector<uint32_t, 2> result = {};
  336. EXPECT_EQ(vec.size(), 4);
  337. vec.clear();
  338. EXPECT_EQ(vec.size(), 0);
  339. EXPECT_EQ(vec, result);
  340. }
  341. TEST(SmallVectorTest, Insert1) {
  342. SmallVector<uint32_t, 2> vec = {};
  343. SmallVector<uint32_t, 2> insert_values = {10, 11};
  344. SmallVector<uint32_t, 2> result = {10, 11};
  345. EXPECT_EQ(vec.size(), 0);
  346. auto ret =
  347. vec.insert(vec.begin(), insert_values.begin(), insert_values.end());
  348. EXPECT_EQ(vec.size(), 2);
  349. EXPECT_EQ(vec, result);
  350. EXPECT_EQ(*ret, 10);
  351. }
  352. TEST(SmallVectorTest, Insert2) {
  353. SmallVector<uint32_t, 2> vec = {};
  354. SmallVector<uint32_t, 2> insert_values = {10, 11, 12};
  355. SmallVector<uint32_t, 2> result = {10, 11, 12};
  356. EXPECT_EQ(vec.size(), 0);
  357. auto ret =
  358. vec.insert(vec.begin(), insert_values.begin(), insert_values.end());
  359. EXPECT_EQ(vec.size(), 3);
  360. EXPECT_EQ(vec, result);
  361. EXPECT_EQ(*ret, 10);
  362. }
  363. TEST(SmallVectorTest, Insert3) {
  364. SmallVector<uint32_t, 2> vec = {0};
  365. SmallVector<uint32_t, 2> insert_values = {10, 11, 12};
  366. SmallVector<uint32_t, 2> result = {10, 11, 12, 0};
  367. EXPECT_EQ(vec.size(), 1);
  368. auto ret =
  369. vec.insert(vec.begin(), insert_values.begin(), insert_values.end());
  370. EXPECT_EQ(vec.size(), 4);
  371. EXPECT_EQ(vec, result);
  372. EXPECT_EQ(*ret, 10);
  373. }
  374. TEST(SmallVectorTest, Insert4) {
  375. SmallVector<uint32_t, 6> vec = {0};
  376. SmallVector<uint32_t, 6> insert_values = {10, 11, 12};
  377. SmallVector<uint32_t, 6> result = {10, 11, 12, 0};
  378. EXPECT_EQ(vec.size(), 1);
  379. auto ret =
  380. vec.insert(vec.begin(), insert_values.begin(), insert_values.end());
  381. EXPECT_EQ(vec.size(), 4);
  382. EXPECT_EQ(vec, result);
  383. EXPECT_EQ(*ret, 10);
  384. }
  385. TEST(SmallVectorTest, Insert5) {
  386. SmallVector<uint32_t, 2> vec = {0, 1, 2};
  387. SmallVector<uint32_t, 2> insert_values = {10, 11, 12};
  388. SmallVector<uint32_t, 2> result = {0, 1, 2, 10, 11, 12};
  389. EXPECT_EQ(vec.size(), 3);
  390. auto ret = vec.insert(vec.end(), insert_values.begin(), insert_values.end());
  391. EXPECT_EQ(vec.size(), 6);
  392. EXPECT_EQ(vec, result);
  393. EXPECT_EQ(*ret, 10);
  394. }
  395. TEST(SmallVectorTest, Insert6) {
  396. SmallVector<uint32_t, 6> vec = {0, 1, 2};
  397. SmallVector<uint32_t, 6> insert_values = {10, 11, 12};
  398. SmallVector<uint32_t, 6> result = {0, 1, 2, 10, 11, 12};
  399. EXPECT_EQ(vec.size(), 3);
  400. auto ret = vec.insert(vec.end(), insert_values.begin(), insert_values.end());
  401. EXPECT_EQ(vec.size(), 6);
  402. EXPECT_EQ(vec, result);
  403. EXPECT_EQ(*ret, 10);
  404. }
  405. TEST(SmallVectorTest, Insert7) {
  406. SmallVector<uint32_t, 2> vec = {0, 1, 2};
  407. SmallVector<uint32_t, 2> insert_values = {10, 11, 12};
  408. SmallVector<uint32_t, 2> result = {0, 10, 11, 12, 1, 2};
  409. EXPECT_EQ(vec.size(), 3);
  410. auto ret =
  411. vec.insert(vec.begin() + 1, insert_values.begin(), insert_values.end());
  412. EXPECT_EQ(vec.size(), 6);
  413. EXPECT_EQ(vec, result);
  414. EXPECT_EQ(*ret, 10);
  415. }
  416. TEST(SmallVectorTest, Insert8) {
  417. SmallVector<uint32_t, 6> vec = {0, 1, 2};
  418. SmallVector<uint32_t, 6> insert_values = {10, 11, 12};
  419. SmallVector<uint32_t, 6> result = {0, 10, 11, 12, 1, 2};
  420. EXPECT_EQ(vec.size(), 3);
  421. auto ret =
  422. vec.insert(vec.begin() + 1, insert_values.begin(), insert_values.end());
  423. EXPECT_EQ(vec.size(), 6);
  424. EXPECT_EQ(vec, result);
  425. EXPECT_EQ(*ret, 10);
  426. }
  427. TEST(SmallVectorTest, Resize1) {
  428. SmallVector<uint32_t, 2> vec = {0, 1, 2};
  429. SmallVector<uint32_t, 2> result = {0, 1, 2, 10, 10, 10};
  430. EXPECT_EQ(vec.size(), 3);
  431. vec.resize(6, 10);
  432. EXPECT_EQ(vec.size(), 6);
  433. EXPECT_EQ(vec, result);
  434. }
  435. TEST(SmallVectorTest, Resize2) {
  436. SmallVector<uint32_t, 8> vec = {0, 1, 2};
  437. SmallVector<uint32_t, 8> result = {0, 1, 2, 10, 10, 10};
  438. EXPECT_EQ(vec.size(), 3);
  439. vec.resize(6, 10);
  440. EXPECT_EQ(vec.size(), 6);
  441. EXPECT_EQ(vec, result);
  442. }
  443. TEST(SmallVectorTest, Resize3) {
  444. SmallVector<uint32_t, 4> vec = {0, 1, 2};
  445. SmallVector<uint32_t, 4> result = {0, 1, 2, 10, 10, 10};
  446. EXPECT_EQ(vec.size(), 3);
  447. vec.resize(6, 10);
  448. EXPECT_EQ(vec.size(), 6);
  449. EXPECT_EQ(vec, result);
  450. }
  451. TEST(SmallVectorTest, Resize4) {
  452. SmallVector<uint32_t, 4> vec = {0, 1, 2, 10, 10, 10};
  453. SmallVector<uint32_t, 4> result = {0, 1, 2};
  454. EXPECT_EQ(vec.size(), 6);
  455. vec.resize(3, 10);
  456. EXPECT_EQ(vec.size(), 3);
  457. EXPECT_EQ(vec, result);
  458. }
  459. TEST(SmallVectorTest, Resize5) {
  460. SmallVector<uint32_t, 2> vec = {0, 1, 2, 10, 10, 10};
  461. SmallVector<uint32_t, 2> result = {0, 1, 2};
  462. EXPECT_EQ(vec.size(), 6);
  463. vec.resize(3, 10);
  464. EXPECT_EQ(vec.size(), 3);
  465. EXPECT_EQ(vec, result);
  466. }
  467. TEST(SmallVectorTest, Resize6) {
  468. SmallVector<uint32_t, 8> vec = {0, 1, 2, 10, 10, 10};
  469. SmallVector<uint32_t, 8> result = {0, 1, 2};
  470. EXPECT_EQ(vec.size(), 6);
  471. vec.resize(3, 10);
  472. EXPECT_EQ(vec.size(), 3);
  473. EXPECT_EQ(vec, result);
  474. }
  475. } // namespace
  476. } // namespace utils
  477. } // namespace spvtools