1 /* 2 * Copyright (C) 2016 Intel Corporation. All Rights Reserved. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the 6 * "Software"), to deal in the Software without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sub license, and/or sell copies of the Software, and to 9 * permit persons to whom the Software is furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the 13 * next paragraph) shall be included in all copies or substantial portions 14 * of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 19 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR 20 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 21 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 22 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 23 */ 24 25 #ifndef TESTVAAPI_test_h 26 #define TESTVAAPI_test_h 27 28 #include <gtest/gtest.h> 29 #include <algorithm> 30 #include <iostream> 31 #include <string> 32 #include <va/va.h> 33 34 #define EXPECT_STATUS(status) \ 35 EXPECT_EQ(VaapiStatus(VA_STATUS_SUCCESS), VaapiStatus(status)) 36 37 #define ASSERT_STATUS(status) \ 38 ASSERT_EQ(VaapiStatus(VA_STATUS_SUCCESS), VaapiStatus(status)) 39 40 #define EXPECT_STATUS_EQ(expect, status) \ 41 EXPECT_EQ(VaapiStatus(expect), VaapiStatus(status)) 42 43 #define ASSERT_STATUS_EQ(expect, status) \ 44 ASSERT_EQ(VaapiStatus(expect), VaapiStatus(status)) 45 46 #define EXPECT_ID(id) \ 47 EXPECT_NE(VA_INVALID_ID, (id)) 48 49 #define ASSERT_ID(id) \ 50 ASSERT_NE(VA_INVALID_ID, (id)) 51 52 #define EXPECT_INVALID_ID(id) \ 53 EXPECT_EQ(VA_INVALID_ID, (id)) 54 55 #define ASSERT_INVALID_ID(id) \ 56 ASSERT_EQ(VA_INVALID_ID, (id)) 57 58 #define EXPECT_PTR(ptr) \ 59 EXPECT_FALSE(NULL == (ptr)) 60 61 #define ASSERT_PTR(ptr) \ 62 ASSERT_FALSE(NULL == (ptr)) 63 64 #define EXPECT_PTR_NULL(ptr) \ 65 EXPECT_TRUE(NULL == (ptr)) 66 67 #define ASSERT_PTR_NULL(ptr) \ 68 ASSERT_TRUE(NULL == (ptr)) 69 70 class VaapiStatus 71 { 72 public: VaapiStatus(VAStatus status)73 explicit VaapiStatus(VAStatus status) 74 : m_status(status) 75 { } 76 77 bool operator ==(const VaapiStatus& other) const 78 { 79 return m_status == other.m_status; 80 } 81 82 friend std::ostream& operator <<(std::ostream& os, const VaapiStatus& t) 83 { 84 std::string status; 85 switch (t.m_status) { 86 case VA_STATUS_SUCCESS: 87 status = "VA_STATUS_SUCCESS"; 88 break; 89 case VA_STATUS_ERROR_OPERATION_FAILED: 90 status = "VA_STATUS_ERROR_OPERATION_FAILED"; 91 break; 92 case VA_STATUS_ERROR_ALLOCATION_FAILED: 93 status = "VA_STATUS_ERROR_ALLOCATION_FAILED"; 94 break; 95 case VA_STATUS_ERROR_INVALID_DISPLAY: 96 status = "VA_STATUS_ERROR_INVALID_DISPLAY"; 97 break; 98 case VA_STATUS_ERROR_INVALID_CONFIG: 99 status = "VA_STATUS_ERROR_INVALID_CONFIG"; 100 break; 101 case VA_STATUS_ERROR_INVALID_CONTEXT: 102 status = "VA_STATUS_ERROR_INVALID_CONTEXT"; 103 break; 104 case VA_STATUS_ERROR_INVALID_SURFACE: 105 status = "VA_STATUS_ERROR_INVALID_SURFACE"; 106 break; 107 case VA_STATUS_ERROR_INVALID_BUFFER: 108 status = "VA_STATUS_ERROR_INVALID_BUFFER"; 109 break; 110 case VA_STATUS_ERROR_INVALID_IMAGE: 111 status = "VA_STATUS_ERROR_INVALID_IMAGE"; 112 break; 113 case VA_STATUS_ERROR_INVALID_SUBPICTURE: 114 status = "VA_STATUS_ERROR_INVALID_SUBPICTURE"; 115 break; 116 case VA_STATUS_ERROR_ATTR_NOT_SUPPORTED: 117 status = "VA_STATUS_ERROR_ATTR_NOT_SUPPORTED"; 118 break; 119 case VA_STATUS_ERROR_MAX_NUM_EXCEEDED: 120 status = "VA_STATUS_ERROR_MAX_NUM_EXCEEDED"; 121 break; 122 case VA_STATUS_ERROR_UNSUPPORTED_PROFILE: 123 status = "VA_STATUS_ERROR_UNSUPPORTED_PROFILE"; 124 break; 125 case VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT: 126 status = "VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT"; 127 break; 128 case VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT: 129 status = "VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT"; 130 break; 131 case VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE: 132 status = "VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE"; 133 break; 134 case VA_STATUS_ERROR_SURFACE_BUSY: 135 status = "VA_STATUS_ERROR_SURFACE_BUSY"; 136 break; 137 case VA_STATUS_ERROR_FLAG_NOT_SUPPORTED: 138 status = "VA_STATUS_ERROR_FLAG_NOT_SUPPORTED"; 139 break; 140 case VA_STATUS_ERROR_INVALID_PARAMETER: 141 status = "VA_STATUS_ERROR_INVALID_PARAMETER"; 142 break; 143 case VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED: 144 status = "VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED"; 145 break; 146 case VA_STATUS_ERROR_UNIMPLEMENTED: 147 status = "VA_STATUS_ERROR_UNIMPLEMENTED"; 148 break; 149 case VA_STATUS_ERROR_SURFACE_IN_DISPLAYING: 150 status = "VA_STATUS_ERROR_SURFACE_IN_DISPLAYING"; 151 break; 152 case VA_STATUS_ERROR_INVALID_IMAGE_FORMAT: 153 status = "VA_STATUS_ERROR_INVALID_IMAGE_FORMAT"; 154 break; 155 case VA_STATUS_ERROR_DECODING_ERROR: 156 status = "VA_STATUS_ERROR_DECODING_ERROR"; 157 break; 158 case VA_STATUS_ERROR_ENCODING_ERROR: 159 status = "VA_STATUS_ERROR_ENCODING_ERROR"; 160 break; 161 case VA_STATUS_ERROR_INVALID_VALUE: 162 status = "VA_STATUS_ERROR_INVALID_VALUE"; 163 break; 164 case VA_STATUS_ERROR_UNSUPPORTED_FILTER: 165 status = "VA_STATUS_ERROR_UNSUPPORTED_FILTER"; 166 break; 167 case VA_STATUS_ERROR_INVALID_FILTER_CHAIN: 168 status = "VA_STATUS_ERROR_INVALID_FILTER_CHAIN"; 169 break; 170 case VA_STATUS_ERROR_HW_BUSY: 171 status = "VA_STATUS_ERROR_HW_BUSY"; 172 break; 173 case VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE: 174 status = "VA_STATUS_ERROR_UNSUPPORTED_MEMORY_TYPE"; 175 break; 176 case VAStatus(VA_STATUS_ERROR_UNKNOWN): 177 status = "VA_STATUS_ERROR_UNKNOWN"; 178 break; 179 default: 180 status = "Unknown VAStatus"; 181 } 182 os << status; 183 return os; 184 } 185 186 VAStatus m_status; 187 }; 188 189 #endif // TEST_H 190