136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===- llvm/unittest/ADT/MakeUniqueTest.cpp - make_unique unit tests ------===// 236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// The LLVM Compiler Infrastructure 436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// This file is distributed under the University of Illinois Open Source 636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// License. See LICENSE.TXT for details. 736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines// 836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines//===----------------------------------------------------------------------===// 936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/ADT/STLExtras.h" 1136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "gtest/gtest.h" 1236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include <tuple> 1336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesusing namespace llvm; 1436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hinesnamespace { 1636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesTEST(MakeUniqueTest, SingleObject) { 1836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p0 = make_unique<int>(); 1936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p0); 2036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(0, *p0); 2136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p1 = make_unique<int>(5); 2336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p1); 2436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(5, *p1); 2536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p2 = make_unique<std::tuple<int, int>>(0, 1); 2736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p2); 2836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1), *p2); 2936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p3 = make_unique<std::tuple<int, int, int>>(0, 1, 2); 3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p3); 3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2), *p3); 3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p4 = make_unique<std::tuple<int, int, int, int>>(0, 1, 2, 3); 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p4); 3636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3), *p4); 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p5 = make_unique<std::tuple<int, int, int, int, int>>(0, 1, 2, 3, 4); 3936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p5); 4036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4), *p5); 4136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p6 = 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines make_unique<std::tuple<int, int, int, int, int, int>>(0, 1, 2, 3, 4, 5); 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p6); 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4, 5), *p6); 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 4736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p7 = make_unique<std::tuple<int, int, int, int, int, int, int>>( 4836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 0, 1, 2, 3, 4, 5, 6); 4936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p7); 5036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4, 5, 6), *p7); 5136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p8 = make_unique<std::tuple<int, int, int, int, int, int, int, int>>( 5336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 0, 1, 2, 3, 4, 5, 6, 7); 5436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p8); 5536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7), *p8); 5636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 5736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p9 = 5836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines make_unique<std::tuple<int, int, int, int, int, int, int, int, int>>( 5936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 0, 1, 2, 3, 4, 5, 6, 7, 8); 6036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p9); 6136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8), *p9); 6236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 6336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p10 = 6436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines make_unique<std::tuple<int, int, int, int, int, int, int, int, int, int>>( 6536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 0, 1, 2, 3, 4, 5, 6, 7, 8, 9); 6636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p10); 6736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(std::make_tuple(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), *p10); 6836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 6936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 7036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesTEST(MakeUniqueTest, Array) { 7136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines auto p1 = make_unique<int[]>(2); 7236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_TRUE((bool)p1); 7336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(0, p1[0]); 7436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines EXPECT_EQ(0, p1[1]); 7536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 7636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines} 77