diff options
Diffstat (limited to 'library/test/unit/mipi_syst_string_test.cpp')
-rw-r--r-- | library/test/unit/mipi_syst_string_test.cpp | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/library/test/unit/mipi_syst_string_test.cpp b/library/test/unit/mipi_syst_string_test.cpp new file mode 100644 index 0000000..c2fdbcf --- /dev/null +++ b/library/test/unit/mipi_syst_string_test.cpp @@ -0,0 +1,325 @@ +/* +Copyright (c) 2018, MIPI Alliance, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/* + * Contributors: + * Norbert Schulz (Intel Corporation) - Initial API and implementation + */ + +#include "mipi_syst_gtest.h" + +#if defined(MIPI_SYST_PCFG_ENABLE_PLATFORM_STATE_DATA) &&\ + defined(MIPI_SYST_PCFG_ENABLE_DEFAULT_SCATTER_WRITE) &&\ + defined(MIPI_SYST_PCFG_ENABLE_STRING_API) + + +class MipiSysTFixtureDebugString : public MipiSysTFixtureOutput +{ +public: + void SetUp() { + MipiSysTFixtureOutput::SetUp(); + } + + void TearDown(){ + MipiSysTFixtureOutput::TearDown(); + } + + const char * mipi_syst_write_debug_string(struct mipi_syst_handle* svh, + struct mipi_syst_msglocation* loc, + enum mipi_syst_subtype_string type, + enum mipi_syst_severity severity, + mipi_syst_u16 len, + const char * str) + { + sstr.str(""); + + ::mipi_syst_write_debug_string(svh, loc, type, severity, len, str); + result = sstr.str(); + + return result.c_str(); + } + + static std::string result; +}; + +std::string MipiSysTFixtureDebugString::result; + +TEST_F(MipiSysTFixtureDebugString, syst_string_null) +{ + EXPECT_STREQ( + xform(""), + MIPI_SYST_DEBUG(NULL, MIPI_SYST_SEVERITY_WARNING, "", 1) + ); + + EXPECT_STREQ( + xform("<D32TS>05012232[typ=2:5 mu=1:2 sev=3 len]<D16>0007<D32>6c756e28<D16>296c<D8>00<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, NULL, 1) + ); +} + +TEST_F(MipiSysTFixtureDebugString, syst_func_enter_output) +{ + EXPECT_STREQ( + xform("<D32TS>02012232[typ=2:2 mu=1:2 sev=3 len]<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER(ph, MIPI_SYST_SEVERITY_WARNING) + ); +} + +TEST_F(MipiSysTFixtureDebugString, syst_func_exit_output) +{ + EXPECT_STREQ( + xform("<D32TS>03012232[typ=2:3 mu=1:2 sev=3 len]<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT(ph, MIPI_SYST_SEVERITY_WARNING) + ); +} + + +TEST_F(MipiSysTFixtureDebugString, syst_debugstring_output) +{ + EXPECT_STREQ( + xform("<D32TS>01012232[typ=2:1 mu=1:2 sev=3 len]<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); + +#if defined(MIPI_SYST_PCFG_ENABLE_CHECKSUM) + MIPI_SYST_ENABLE_HANDLE_CHECKSUM(ph,1); +#if defined(MIPI_SYST_PCFG_LENGTH_FIELD) + EXPECT_STREQ( + xform("<D32TS>01012632[typ=2:1 mu=1:2 sev=3 len chk]<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<D32>eab806d3<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); +#else + EXPECT_STREQ( + xform("<D32TS>01012432[typ=2:1 mu=1:2 sev=3 chk]<D64>6f77206f6c6c6548<D32>21646c72<D32>ff19ff90<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!", 12) + ); +#endif + MIPI_SYST_ENABLE_HANDLE_CHECKSUM(ph,0); +#endif + + +#if defined(MIPI_SYST_PCFG_ENABLE_ORIGIN_GUID) + // {8887160A-C965-463b-9F43-1EFE9FDFE3F9} + const struct mipi_syst_guid aguid = MIPI_SYST_GEN_GUID(0x8887160A, 0xC965, 0x463b, 0x9F43, 0x1EFE9FDFE3F9); + + MIPI_SYST_SET_HANDLE_GUID_UNIT(ph, aguid, 7); + EXPECT_STREQ( + xform("<D32TS>01807252[typ=2:1 mu=0:7 sev=5 len]<D64>3b4665c90a168788<D64>f9e3df9ffe1e439f<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_USER1, "Hello world!" , 12) + ); +#endif +} + +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD) +TEST_F(MipiSysTFixtureDebugString, syst_debugstring_loc) +{ + EXPECT_STREQ( + xform("<D32TS>01012332[typ=2:1 mu=1:2 sev=3 loc len]<D8>00<D32>5678abcd<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG_LOC16(ph, MIPI_SYST_SEVERITY_WARNING, 0xabcd, "Hello world!" , 12) + ); + + EXPECT_STREQ( + xform("<D32TS>01012332[typ=2:1 mu=1:2 sev=3 loc len]<D8>01<D64>123456780000abcd<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG_LOC32(ph, MIPI_SYST_SEVERITY_WARNING,0xabcd, "Hello world!" , 12) + ); +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS) +#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR) + EXPECT_STREQ( + xform("<D32TS>01012332[typ=2:1 mu=1:2 sev=3 loc len]<D8>03<D64>12345678aabbccdd<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG_LOCADDR(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); +#else + EXPECT_STREQ( + xform("<D32TS>01012332[typ=2:1 mu=1:2 sev=3 loc len]<D8>02<D32>12345678<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG_LOCADDR(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); +#endif +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS +} +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD + +TEST_F(MipiSysTFixtureDebugString, syst_debugstring_nolength) +{ + MIPI_SYST_ENABLE_HANDLE_LENGTH(ph,0); + EXPECT_STREQ( + xform("<D32TS>01012032[typ=2:1 mu=1:2 sev=3]<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); + + MIPI_SYST_ENABLE_HANDLE_LENGTH(ph,1); + + EXPECT_STREQ( + xform("<D32TS>01012232[typ=2:1 mu=1:2 sev=3 len]<D16>000c<D64>6f77206f6c6c6548<D32>21646c72<FLAG>"), + MIPI_SYST_DEBUG(ph, MIPI_SYST_SEVERITY_WARNING, "Hello world!" , 12) + ); +} + +TEST_F(MipiSysTFixtureDebugString, syst_func_enter) +{ + EXPECT_STREQ( + xform("<D32TS>02012242[typ=2:2 mu=1:2 sev=4 len]<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER(ph, MIPI_SYST_SEVERITY_INFO) + ); + +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD) + EXPECT_STREQ( + xform("<D32TS>02012342[typ=2:2 mu=1:2 sev=4 loc len]<D8>00<D32>5678abcd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER_LOC16(ph, MIPI_SYST_SEVERITY_INFO,0xabcd) + ); + + EXPECT_STREQ( + xform("<D32TS>02012342[typ=2:2 mu=1:2 sev=4 loc len]<D8>01<D64>123456780000abcd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER_LOC32(ph, MIPI_SYST_SEVERITY_INFO,0xabcd) + ); +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS) +#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR) + EXPECT_STREQ( + xform("<D32TS>02012342[typ=2:2 mu=1:2 sev=4 loc len]<D8>03<D64>12345678aabbccdd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO) + ); +#else + EXPECT_STREQ( + xform("<D32TS>02012342[typ=2:2 mu=1:2 sev=4 loc len]<D8>02<D32>12345678<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_ENTER_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO) + ); +#endif //MIPI_SYST_PCFG_ENABLE_64BIT_ADDR +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD +} + +TEST_F(MipiSysTFixtureDebugString, syst_func_exit) +{ + EXPECT_STREQ( + xform("<D32TS>03012242[typ=2:3 mu=1:2 sev=4 len]<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT(ph, MIPI_SYST_SEVERITY_INFO) + ); + +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD) + EXPECT_STREQ( + xform("<D32TS>03012342[typ=2:3 mu=1:2 sev=4 loc len]<D8>00<D32>5678abcd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT_LOC16(ph, MIPI_SYST_SEVERITY_INFO,0xabcd) + ); + + EXPECT_STREQ( + xform("<D32TS>03012342[typ=2:3 mu=1:2 sev=4 loc len]<D8>01<D64>123456780000abcd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT_LOC32(ph, MIPI_SYST_SEVERITY_INFO,0xabcd) + ); +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS) +#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR) + EXPECT_STREQ( + xform("<D32TS>03012342[typ=2:3 mu=1:2 sev=4 loc len]<D8>03<D64>12345678aabbccdd<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO) + ); +#else + EXPECT_STREQ( + xform("<D32TS>03012342[typ=2:3 mu=1:2 sev=4 loc len]<D8>02<D32>12345678<D16>000b<D64>3736353433323130<D16>3938<D8>00<FLAG>"), + MIPI_SYST_FUNC_EXIT_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO) + ); +#endif //MIPI_SYST_PCFG_ENABLE_64BIT_ADDR +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD +} + +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD) +TEST_F(MipiSysTFixtureDebugString, syst_debug_assert) +{ + MIPI_SYST_ASSERT(ph, MIPI_SYST_SEVERITY_ERROR, 0); + + EXPECT_STREQ( + xform("<D32TS>07012222[typ=2:7 mu=1:2 sev=2 len]<D16>0018<D64>7473657474696e75<D64>33323178303a632e<D64>0030203837363534<FLAG>"), + result.c_str() + ); + + result = ""; + MIPI_SYST_ASSERT(ph, MIPI_SYST_SEVERITY_ERROR, 1); + + EXPECT_STREQ( + "", + result.c_str() + ); + +#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS) + MIPI_SYST_ASSERT_LOCADDR(ph, MIPI_SYST_SEVERITY_ERROR, 0); +#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR) + EXPECT_STREQ( + xform("<D32TS>07012322[typ=2:7 mu=1:2 sev=2 loc len]<D8>03<D64>12345678aabbccdd<D16>0018<D64>7473657474696e75<D64>33323178303a632e<D64>0030203837363534<FLAG>"), + result.c_str() + ); +#else + EXPECT_STREQ( + xform("<D32TS>07012322[typ=2:7 mu=1:2 sev=2 loc len]<D8>02<D32>12345678<D16>0018<D64>7473657474696e75<D64>33323178303a632e<D64>0030203837363534<FLAG>"), + result.c_str() + ); +#endif + result = ""; + MIPI_SYST_ASSERT_LOCADDR(ph, MIPI_SYST_SEVERITY_ERROR, 1); + + EXPECT_STREQ( + "", + result.c_str() + ); +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_ADDRESS + + MIPI_SYST_ASSERT_LOC16(ph, MIPI_SYST_SEVERITY_ERROR, 0xabcd, 0); + + EXPECT_STREQ( + xform("<D32TS>07012322[typ=2:7 mu=1:2 sev=2 loc len]<D8>00<D32>5678abcd<D16>0018<D64>7473657474696e75<D64>33323178303a632e<D64>0030203837363534<FLAG>"), + result.c_str() + ); + + result = ""; + MIPI_SYST_ASSERT_LOC16(ph, MIPI_SYST_SEVERITY_ERROR,0xabcd, 1); + + EXPECT_STREQ( + "", + result.c_str() + ); + + MIPI_SYST_ASSERT_LOC32(ph, MIPI_SYST_SEVERITY_ERROR, 0xabcd, 0); + + EXPECT_STREQ( + xform("<D32TS>07012322[typ=2:7 mu=1:2 sev=2 loc len]<D8>01<D64>123456780000abcd<D16>0018<D64>7473657474696e75<D64>33323178303a632e<D64>0030203837363534<FLAG>"), + result.c_str() + ); + + result = ""; + MIPI_SYST_ASSERT_LOC32(ph, MIPI_SYST_SEVERITY_ERROR, 0xabcd, 1); + + EXPECT_STREQ( + "", + result.c_str() + ); +} +#endif //MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD + +#endif //MIPI_SYST_PCFG_ENABLE_PLATFORM_STATE_DATA && MIPI_SYST_PCFG_ENABLE_DEFAULT_SCATTER_WRITE && MIPI_SYST_PCFG_ENABLE_STRING_API
\ No newline at end of file |