Set up basic tests with gtest

This commit is contained in:
2024-02-17 23:07:26 +01:00
parent f541e2f7f8
commit ee1a8cc6e6
5 changed files with 62 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
#include <cstdio> #include <cstdio>
#include <cstdlib> #include <cstdlib>
#include "cuda_helper.h" #include "cuda_helper.h"
#include <cuda_runtime.h>
#include <cublas_v2.h> #include <cublas_v2.h>
cudaDeviceProp initializeCUDA(cublasHandle_t& cublasHandle) { cudaDeviceProp initializeCUDA(cublasHandle_t& cublasHandle) {

14
test/CMakeLists.txt Normal file
View File

@@ -0,0 +1,14 @@
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(test_dense layers/test_dense.cpp)
add_library(test_utils
test_utils/test_cublas_fixture.cpp
)
target_include_directories(test_utils PUBLIC test_utils)
target_link_libraries(test_dense gtest gtest_main CUDANet test_utils)
add_test(NAME TestDense COMMAND test_dense)

View File

@@ -0,0 +1,24 @@
#include "gtest/gtest.h"
#include "dense.h"
#include "test_cublas_fixture.h"
class DenseLayerTest : public CublasTestFixture {
protected:
};
TEST_F(DenseLayerTest, Forward) {
Layers::Dense denseLayer(3, 2, cublasHandle);
// Create input and output arrays
float input[3] = {1.0f, 2.0f, 3.0f};
float output[2] = {0.0f, 0.0f};
// Perform forward pass
denseLayer.forward(input, output);
// Check if the output is a zero vector
EXPECT_FLOAT_EQ(output[0], 0.0f);
EXPECT_FLOAT_EQ(output[1], 0.0f);
}

View File

@@ -0,0 +1,13 @@
#include "gtest/gtest.h"
#include "cublas_v2.h"
#include "test_cublas_fixture.h"
cublasHandle_t CublasTestFixture::cublasHandle;
void CublasTestFixture::SetUpTestSuite() {
cublasCreate(&cublasHandle);
}
void CublasTestFixture::TearDownTestSuite() {
cublasDestroy(cublasHandle);
}

View File

@@ -0,0 +1,10 @@
#include "gtest/gtest.h"
#include "cublas_v2.h"
class CublasTestFixture : public ::testing::Test {
protected:
static cublasHandle_t cublasHandle;
static void SetUpTestSuite();
static void TearDownTestSuite();
};