diff --git a/hal/src/main/native/include/HAL/handles/IndexedClassedHandleResource.h b/hal/src/main/native/include/HAL/handles/IndexedClassedHandleResource.h index 248427b902..c13fb2a94b 100644 --- a/hal/src/main/native/include/HAL/handles/IndexedClassedHandleResource.h +++ b/hal/src/main/native/include/HAL/handles/IndexedClassedHandleResource.h @@ -9,6 +9,7 @@ #include +#include #include #include @@ -40,7 +41,7 @@ class IndexedClassedHandleResource : public HandleBase { friend class IndexedClassedHandleResourceTest; public: - IndexedClassedHandleResource(); + IndexedClassedHandleResource() = default; IndexedClassedHandleResource(const IndexedClassedHandleResource&) = delete; IndexedClassedHandleResource& operator=(const IndexedClassedHandleResource&) = delete; @@ -49,20 +50,13 @@ class IndexedClassedHandleResource : public HandleBase { int32_t* status); std::shared_ptr Get(THandle handle); void Free(THandle handle); + void ResetHandles(); private: - std::array[], size> m_structures; - std::array m_handleMutexes; + std::array, size> m_structures; + std::array m_handleMutexes; }; -template -IndexedClassedHandleResource::IndexedClassedHandleResource() { - m_structures = std::make_unique[]>(size); - m_handleMutexes = std::make_unique(size); -} - template THandle diff --git a/hal/src/test/native/cpp/handles/HandleTests.cpp b/hal/src/test/native/cpp/handles/HandleTests.cpp new file mode 100644 index 0000000000..76d4ca184d --- /dev/null +++ b/hal/src/test/native/cpp/handles/HandleTests.cpp @@ -0,0 +1,28 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2018 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include "HAL/HAL.h" +#include "HAL/handles/IndexedClassedHandleResource.h" +#include "gtest/gtest.h" + +#define HAL_TestHandle HAL_Handle + +namespace { +class MyTestClass {}; +} // namespace + +namespace hal { +TEST(HandleTests, ClassedHandleTest) { + hal::IndexedClassedHandleResource + testClass; + int32_t status = 0; + testClass.Allocate(0, std::make_unique(), &status); + EXPECT_EQ(0, status); +} + +} // namespace hal