diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 5321574f4..10012b4a6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -75,9 +75,6 @@ set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/BinaryToText.Literal.cpp ${CMAKE_CURRENT_SOURCE_DIR}/CapabilitySet.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Comment.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/DiagnosticDestroy.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/DiagnosticPrint.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/DiagnosticStream.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ExtInstGLSLstd450.cpp ${CMAKE_CURRENT_SOURCE_DIR}/ExtInst.OpenCL.std.cpp ${CMAKE_CURRENT_SOURCE_DIR}/FixWord.cpp @@ -121,11 +118,17 @@ set(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/TextWordGet.cpp ${CMAKE_CURRENT_SOURCE_DIR}/UnitSPIRV.cpp ) + add_spvtools_unittest( TARGET spirv_unit_tests SRCS ${TEST_SOURCES} LIBS ${SPIRV_TOOLS}) +add_spvtools_unittest( + TARGET diagnostic + SRCS diagnostic.cpp + LIBS ${SPIRV_TOOLS}) + add_spvtools_unittest( TARGET cpp_interface SRCS cpp_interface.cpp diff --git a/test/DiagnosticPrint.cpp b/test/DiagnosticPrint.cpp deleted file mode 100644 index 40bed7b79..000000000 --- a/test/DiagnosticPrint.cpp +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright (c) 2015-2016 The Khronos Group Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "UnitSPIRV.h" - -namespace { - -TEST(DiagnosticPrint, Default) { - char message[] = "Test Diagnostic!"; - spv_diagnostic_t diagnostic = {{2, 3, 5}, message}; - // TODO: Redirect stderr - ASSERT_EQ(SPV_SUCCESS, spvDiagnosticPrint(&diagnostic)); - // TODO: Validate the output of spvDiagnosticPrint() - // TODO: Remove the redirection of stderr -} - -TEST(DiagnosticPrint, InvalidDiagnostic) { - ASSERT_EQ(SPV_ERROR_INVALID_DIAGNOSTIC, spvDiagnosticPrint(nullptr)); -} - -// TODO(dneto): We should be able to redirect the diagnostic printing. -// Once we do that, we can test diagnostic corner cases. - -} // anonymous namespace diff --git a/test/DiagnosticStream.cpp b/test/DiagnosticStream.cpp deleted file mode 100644 index 15e9e6008..000000000 --- a/test/DiagnosticStream.cpp +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2015-2016 The Khronos Group Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -#include "UnitSPIRV.h" - -namespace { - -using libspirv::DiagnosticStream; - -TEST(DiagnosticStream, ConversionToResultType) { - // Check after the DiagnosticStream object is destroyed. - spv_result_t value; - { value = DiagnosticStream({}, 0, SPV_ERROR_INVALID_TEXT); } - EXPECT_EQ(SPV_ERROR_INVALID_TEXT, value); - - // Check implicit conversion via plain assignment. - value = DiagnosticStream({}, 0, SPV_SUCCESS); - EXPECT_EQ(SPV_SUCCESS, value); - - // Check conversion via constructor. - EXPECT_EQ(SPV_FAILED_MATCH, - spv_result_t(DiagnosticStream({}, 0, SPV_FAILED_MATCH))); -} - -} // anonymous namespace diff --git a/test/DiagnosticDestroy.cpp b/test/diagnostic.cpp similarity index 51% rename from test/DiagnosticDestroy.cpp rename to test/diagnostic.cpp index b8911f255..fa35502ee 100644 --- a/test/DiagnosticDestroy.cpp +++ b/test/diagnostic.cpp @@ -16,7 +16,7 @@ namespace { -TEST(DiagnosticDestroy, DestroyNull) { spvDiagnosticDestroy(nullptr); } +using libspirv::DiagnosticStream; // Returns a newly created diagnostic value. spv_diagnostic MakeValidDiagnostic() { @@ -26,14 +26,16 @@ spv_diagnostic MakeValidDiagnostic() { return diagnostic; } -TEST(DiagnosticDestroy, DestroyValidDiagnostic) { +TEST(Diagnostic, DestroyNull) { spvDiagnosticDestroy(nullptr); } + +TEST(Diagnostic, DestroyValidDiagnostic) { spv_diagnostic diagnostic = MakeValidDiagnostic(); spvDiagnosticDestroy(diagnostic); // We aren't allowed to use the diagnostic pointer anymore. // So we can't test its behaviour. } -TEST(DiagnosticDestroy, DestroyValidDiagnosticAfterReassignment) { +TEST(Diagnostic, DestroyValidDiagnosticAfterReassignment) { spv_diagnostic diagnostic = MakeValidDiagnostic(); spv_diagnostic second_diagnostic = MakeValidDiagnostic(); EXPECT_TRUE(diagnostic != second_diagnostic); @@ -42,4 +44,35 @@ TEST(DiagnosticDestroy, DestroyValidDiagnosticAfterReassignment) { spvDiagnosticDestroy(diagnostic); } +TEST(Diagnostic, PrintDefault) { + char message[] = "Test Diagnostic!"; + spv_diagnostic_t diagnostic = {{2, 3, 5}, message}; + // TODO: Redirect stderr + ASSERT_EQ(SPV_SUCCESS, spvDiagnosticPrint(&diagnostic)); + // TODO: Validate the output of spvDiagnosticPrint() + // TODO: Remove the redirection of stderr +} + +TEST(Diagnostic, PrintInvalidDiagnostic) { + ASSERT_EQ(SPV_ERROR_INVALID_DIAGNOSTIC, spvDiagnosticPrint(nullptr)); +} + +// TODO(dneto): We should be able to redirect the diagnostic printing. +// Once we do that, we can test diagnostic corner cases. + +TEST(DiagnosticStream, ConversionToResultType) { + // Check after the DiagnosticStream object is destroyed. + spv_result_t value; + { value = DiagnosticStream({}, 0, SPV_ERROR_INVALID_TEXT); } + EXPECT_EQ(SPV_ERROR_INVALID_TEXT, value); + + // Check implicit conversion via plain assignment. + value = DiagnosticStream({}, 0, SPV_SUCCESS); + EXPECT_EQ(SPV_SUCCESS, value); + + // Check conversion via constructor. + EXPECT_EQ(SPV_FAILED_MATCH, + spv_result_t(DiagnosticStream({}, 0, SPV_FAILED_MATCH))); +} + } // anonymous namespace