Merge pull request #8 from microsoft/brhick/googletest

Integrate Google Test into project
This commit is contained in:
Bryan Hicks 2020-01-14 12:03:55 -08:00 коммит произвёл GitHub
Родитель c876e424a3 297fbc4f9a
Коммит cd69856870
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 102 добавлений и 1 удалений

Просмотреть файл

@ -1,4 +1,4 @@
# Copyright (c) Microsoft Corporation.
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
cmake_minimum_required (VERSION 3.11)
@ -14,6 +14,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
option(BUILD_EXAMPLE "Build example executable (on by default)" ON)
option(BUILD_TESTS "Build test executable (on by default)" ON)
add_library(AccessorFramework
${PROJECT_SOURCE_DIR}/src/Accessor.cpp
@ -118,3 +119,9 @@ export(EXPORT AccessorFrameworkTargets
)
export(PACKAGE AccessorFramework)
if (BUILD_TESTS)
add_definitions(-DUSE_GTEST)
enable_testing()
add_subdirectory(test)
endif (BUILD_TESTS)

27
test/CMakeLists.txt Normal file
Просмотреть файл

@ -0,0 +1,27 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
cmake_minimum_required (VERSION 3.11)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG release-1.10.0
)
FetchContent_MakeAvailable(googletest)
FetchContent_GetProperties(googletest)
if(NOT googletest_POPULATED)
FetchContent_Populate(googletest)
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
endif()
add_executable(AccessorFrameworkTests src/CommonAccessorTests.cpp)
target_link_libraries(AccessorFrameworkTests
gtest
gmock_main
AccessorFramework::AccessorFramework
)
add_test(NAME AccessorFrameworkTests COMMAND AccessorFrameworkTests)

Просмотреть файл

@ -0,0 +1,67 @@
#include <gtest/gtest.h>
#include <AccessorFramework/Accessor.h>
namespace CommonAccessorTests
{
// A name cannot be empty, cannot contain periods, and cannot contain whitespace
TEST(Accessor_NameIsValidTests, ValidName)
{
// Arrange
const std::string targetName = "TargetName";
// Act
bool nameIsValid = Accessor::NameIsValid(targetName);
// Assert
ASSERT_TRUE(nameIsValid);
}
TEST(Accessor_NameIsValidTests, EmptyName)
{
// Arrange
const std::string targetName = "";
// Act
bool nameIsValid = Accessor::NameIsValid(targetName);
// Assert
ASSERT_FALSE(nameIsValid);
}
TEST(Accessor_NameIsValidTests, NameWithPeriods)
{
// Arrange
const std::string targetName = "Target.Name";
// Act
bool nameIsValid = Accessor::NameIsValid(targetName);
// Assert
ASSERT_FALSE(nameIsValid);
}
TEST(Accessor_NameIsValidTests, NameWithWhitespace)
{
// Arrange
const std::string targetName = "Target Name";
// Act
bool nameIsValid = Accessor::NameIsValid(targetName);
// Assert
ASSERT_FALSE(nameIsValid);
}
TEST(Accessor_GetNameTests, ValidName)
{
// Arrange
const std::string expectedTargetName = "TargetName";
AtomicAccessor target(expectedTargetName);
// Act
std::string actualTargetName = target.GetName();
// Assert
ASSERT_EQ(expectedTargetName, actualTargetName);
}
}