aboutsummaryrefslogtreecommitdiff
path: root/library/test/unit/mipi_syst_printf_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'library/test/unit/mipi_syst_printf_test.cpp')
-rw-r--r--library/test/unit/mipi_syst_printf_test.cpp709
1 files changed, 709 insertions, 0 deletions
diff --git a/library/test/unit/mipi_syst_printf_test.cpp b/library/test/unit/mipi_syst_printf_test.cpp
new file mode 100644
index 0000000..d9c19bd
--- /dev/null
+++ b/library/test/unit/mipi_syst_printf_test.cpp
@@ -0,0 +1,709 @@
+/*
+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 <string>
+#include <stdint.h>
+#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_PRINTF_API)
+
+#define mipi_syst_write_printf_string(a,b,c, ...) \
+ (sstr.str(""),\
+ ::mipi_syst_write_printf_string(a,b,c, __VA_ARGS__ ),\
+ result = sstr.str(),\
+ result.c_str())
+
+#define mipi_syst_write_printf_catalog64(a,b,c, ...) \
+ (sstr.str(""),\
+ ::mipi_syst_write_printf_catalog64(a,b,c, __VA_ARGS__ ),\
+ result = sstr.str(),\
+ result.c_str())
+
+#define mipi_syst_write_printf_catalog32(a,b,c, ...) \
+ (sstr.str(""),\
+ ::mipi_syst_write_printf_catalog32(a,b,c, __VA_ARGS__ ),\
+ result = sstr.str(),\
+ result.c_str())
+
+class MipiSysTFixturePrintf : public MipiSysTFixtureOutput
+{
+public:
+ void SetUp() {
+ MipiSysTFixtureOutput::SetUp();
+ }
+
+ void TearDown() {
+ MipiSysTFixtureOutput::TearDown();
+ }
+
+ static std::string result;
+};
+
+std::string MipiSysTFixturePrintf::result;
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_null)
+{
+ EXPECT_STREQ(
+ xform(""),
+ MIPI_SYST_PRINTF(0, MIPI_SYST_SEVERITY_INFO, (char*) 0)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0007<D32>6c756e28<D16>296c<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, (char*) 0)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_basic)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0001<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "")
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0003<D16>2525<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%%")
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000e<D64>6f77206f6c6c6568<D32>20646c72<D16>0021<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "hello world !")
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_invalid)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0007<D32>6c756e28<D16>296c<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, 0)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0003<D16>6225<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%b", 1)
+ );
+ std::string tooLong(MIPI_SYST_PCFG_PRINTF_ARGBUF_SIZE, 'X');
+
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0020<D64>5858585858585858<D64>5858585858585858<D64>5858585858585858<D64>5858585858585858<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, tooLong.c_str(), 1)
+ );
+
+ tooLong.resize(MIPI_SYST_PCFG_PRINTF_ARGBUF_SIZE /2);
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0006<D32>25207325<D16>0073<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%s %s", tooLong.c_str(), tooLong.c_str())
+ );
+}
+TEST_F(MipiSysTFixturePrintf, syst_printf_flags)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400642b25<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%+d", 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400642d25<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%-d", 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400642025<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "% d", 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400642325<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%#d", 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400643025<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%0d", 0x11223344)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_width)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>1122334400643325<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%3d", 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>000000ab00642a25<D32>11223344<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%*d", 0xab, 0x11223344)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0012<D64>ccdd00642a2e2a25<D64>334412345678aabb<D16>1122<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%*.*d", 0xaabbccdd, 0x12345678, 0x11223344)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_floatingpoint)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea006625<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%f", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea004625<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%F", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea006525<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%e", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea004525<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%E", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea006725<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%g", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea006125<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%a", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea004125<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%A", 3.14159265359)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea004725<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%G", 3.14159265359)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>54442eea00664c25<D32>400921fb<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%Lf", (long double)3.14159265359)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_floatingpoint_precison)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>fb54442eea006625<D16>0921<D8>40<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%f", 3.14159265359)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>54442eea00663325<D32>400921fb<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%3f", 3.14159265359)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0010<D64>006630312e313125<D64>400921fb54442eea<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%11.10f", 3.14159265359)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0016<D64>000a00662a2e2a25<D64>2eea0000000b0000<D32>21fb5444<D16>4009<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%*.*f", 10, 11, 3.14159265359)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_modifier)
+{
+ unsigned int hh = 0x12;
+ unsigned short int h = 0x1234;
+ long int l = (long int)-1;
+ unsigned long long int ll = 0x1122334455667788ull;
+ uintmax_t j = 0x1122334455667788ull;
+ size_t z = (size_t)-1;
+ ptrdiff_t t = (ptrdiff_t)-1;
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0009<D64>0000120064686825<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%hhd", hh)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>0000123400646825<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%hd", h)
+ );
+#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>ffffffff00646c25<D32>ffffffff<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%ld", l)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>ffffffff00647a25<D32>ffffffff<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%zd", z)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>ffffffff00647425<D32>ffffffff<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%td", t)
+ );
+#else
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>ffffffff00646c25<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%ld", l)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>ffffffff00647a25<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%zd", z)
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>ffffffff00647425<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%td", t)
+ );
+#endif
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000d<D64>66778800646c6c25<D32>22334455<D8>11<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%lld", ll)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000c<D64>5566778800646a25<D32>11223344<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%jd", j)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_pointer)
+{
+ void * p = (void*)-1;
+
+ if (sizeof(p) == 8) {
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>000b<D64>ffffffffff007025<D16>ffff<D8>ff<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%p", p)
+ );
+ } else {
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0007<D32>ff007025<D16>ffff<D8>ff<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%p", p)
+ );
+ }
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_char)
+{
+ char c = 'C';
+ wint_t w = 'W';
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0007<D32>43006325<D16>0000<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%c", c)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0008<D64>0000005700636c25<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "%lc", w)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_printf_combinations)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012242[typ=2:b mu=1:2 sev=4 len]<D16>0031<D64>6a20732520656854<D64>766f206465706d75<D64>2520656874207265<D64>6d69742064252073<D64>00776f63002e7365<D64>000005006e6f6f6d<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF(ph, MIPI_SYST_SEVERITY_INFO, "The %s jumped over the %s %d times.", "cow", "moon", 5)
+ );
+}
+#if defined(MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD)
+TEST_F(MipiSysTFixturePrintf, syst_printf_loc)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>0b012342[typ=2:b mu=1:2 sev=4 loc len]<D8>00<D32>5678abcd<D16>0031<D64>6a20732520656854<D64>766f206465706d75<D64>2520656874207265<D64>6d69742064252073<D64>00776f63002e7365<D64>000005006e6f6f6d<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF_LOC16(ph, MIPI_SYST_SEVERITY_INFO, 0xabcd, "The %s jumped over the %s %d times.", "cow", "moon", 5)
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>0b012342[typ=2:b mu=1:2 sev=4 loc len]<D8>01<D64>12345678aabbccdd<D16>0031<D64>6a20732520656854<D64>766f206465706d75<D64>2520656874207265<D64>6d69742064252073<D64>00776f63002e7365<D64>000005006e6f6f6d<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF_LOC32(ph, MIPI_SYST_SEVERITY_INFO, 0xaabbccdd, "The %s jumped over the %s %d times.", "cow", "moon", 5)
+ );
+
+#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+ EXPECT_STREQ(
+ xform("<D32TS>0b012342[typ=2:b mu=1:2 sev=4 loc len]<D8>03<D64>12345678aabbccdd<D16>0031<D64>6a20732520656854<D64>766f206465706d75<D64>2520656874207265<D64>6d69742064252073<D64>00776f63002e7365<D64>000005006e6f6f6d<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO, "The %s jumped over the %s %d times.", "cow", "moon", 5)
+ );
+#else
+ EXPECT_STREQ(
+ xform("<D32TS>0b012342[typ=2:b mu=1:2 sev=4 loc len]<D8>02<D32>12345678<D16>0031<D64>6a20732520656854<D64>766f206465706d75<D64>2520656874207265<D64>6d69742064252073<D64>00776f63002e7365<D64>000005006e6f6f6d<D8>00<FLAG>"),
+ MIPI_SYST_PRINTF_LOCADDR(ph, MIPI_SYST_SEVERITY_INFO, "The %s jumped over the %s %d times.", "cow", "moon", 5)
+ );
+#endif
+}
+#endif // MIPI_SYST_PCFG_ENABLE_LOCATION_RECORD
+
+#if defined(MIPI_SYST_PCFG_ENABLE_CATID64_API)
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog64_printf_null)
+{
+ EXPECT_STREQ(
+ xform(""),
+ MIPI_SYST_CATPRINTF64(NULL, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788, "")
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog64_printf_invalid)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0007<D32>61746163<D16>6772<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344, -1, -1)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog64_printf_basic)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0008<D64>1122334455667788<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788, "")
+ );
+
+ // check that formt string is not added into payload
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0008<D64>1122334455667788<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull, "Hello world")
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>00000058<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%c", MIPI_SYST_PARAM_CHAR('X'))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>00000058<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%c", MIPI_SYST_PARAM_WCHAR(L'X'))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>abcd1234<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%c", MIPI_SYST_PARAM_INT(0xabcd1234))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>1234567887654321<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%lld", MIPI_SYST_PARAM_LONGLONG(0x1234567887654321ull))
+ );
+
+#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>0000000012345678<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%ld", MIPI_SYST_PARAM_LONG(0x12345678))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>1234567887654321<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%z", MIPI_SYST_PARAM_SIZE_T(0x1234567887654321ull))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>1234567887654321<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%t", MIPI_SYST_PARAM_PTRDIFF_T(0x1234567887654321ull))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>1234567887654321<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%p", MIPI_SYST_PARAM_PTR(0x1234567887654321ull))
+ );
+#else
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%ld", MIPI_SYST_PARAM_LONG(0x12345678))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%z", MIPI_SYST_PARAM_SIZE_T(0x12345678))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%t", MIPI_SYST_PARAM_PTRDIFF_T(0x12345678))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>000c<D64>1122334455667788<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%p", MIPI_SYST_PARAM_PTR(0x12345678))
+ );
+#endif //defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>4000000000000000<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%f", MIPI_SYST_PARAM_FLOAT((float)2.0))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>4000000000000000<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%f", MIPI_SYST_PARAM_DOUBLE((double)2.0))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0010<D64>1122334455667788<D64>4000000000000000<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788ull,
+ "%lf", MIPI_SYST_PARAM_LONGDOUBLE((long double)2.0))
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog64_printf_string)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0009<D64>1122334455667788<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788,
+ "%s", MIPI_SYST_PARAM_CSTR(""))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0016<D64>1122334455667788<D64>6f77206f6c6c6568<D32>20646c72<D16>0021<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788,
+ "%s", MIPI_SYST_PARAM_CSTR("hello world !"))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>0035<D64>1122334455667788<D64>3333003232003100<D64>3500343434340033<D64>3636360035353535<D64>3737373700363636<D64>3838383800373737<D32>38383838<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788,
+ "%s",
+ MIPI_SYST_PARAM_CSTR(""),
+ MIPI_SYST_PARAM_CSTR("1"),
+ MIPI_SYST_PARAM_CSTR("22"),
+ MIPI_SYST_PARAM_CSTR("333"),
+ MIPI_SYST_PARAM_CSTR("4444"),
+ MIPI_SYST_PARAM_CSTR("55555"),
+ MIPI_SYST_PARAM_CSTR("666666"),
+ MIPI_SYST_PARAM_CSTR("7777777"),
+ MIPI_SYST_PARAM_CSTR("88888888")
+ )
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>001e<D64>1122334455667788<D64>6f77206f6c6c6568<D64>3231002120646c72<D32>12340033<D16>abcd<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788,
+ "%s %s %d",
+ MIPI_SYST_PARAM_CSTR("hello world !"),
+ MIPI_SYST_PARAM_CSTR("123"),
+ MIPI_SYST_PARAM_INT(0xabcd1234)
+ )
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog64_printf_mixed)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>02012243[typ=3:2 mu=1:2 sev=4 len]<D16>001e<D64>1122334455667788<D64>6f77206f6c6c6568<D64>3231002120646c72<D32>12340033<D16>abcd<FLAG>"),
+ MIPI_SYST_CATPRINTF64(ph, MIPI_SYST_SEVERITY_INFO, 0x1122334455667788,
+ "%s %s %d",
+ MIPI_SYST_PARAM_CSTR("hello world !"),
+ MIPI_SYST_PARAM_CSTR("123"),
+ MIPI_SYST_PARAM_INT(0xabcd1234)
+ )
+ );
+}
+#endif // #if defined(MIPI_SYST_PCFG_ENABLE_CATID64_API)
+
+#if defined(MIPI_SYST_PCFG_ENABLE_CATID32_API)
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog32_printf_null)
+{
+ EXPECT_STREQ(
+ xform(""),
+ MIPI_SYST_CATPRINTF32(NULL, MIPI_SYST_SEVERITY_INFO, 0x11223344, "")
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog32_printf_invalid)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>05012242[typ=2:5 mu=1:2 sev=4 len]<D16>0007<D32>61746163<D16>6772<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344, -1, -1)
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog32_printf_basic)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0004<D32>11223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344, "")
+ );
+
+ // check that format string is not added into payload
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0004<D32>11223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull, "Hello world")
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>0000005811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%c", MIPI_SYST_PARAM_CHAR('X'))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>0000123411223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%hhd", MIPI_SYST_PARAM_SHORT(0x1234))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>0000005811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%lc", MIPI_SYST_PARAM_WCHAR(L'X'))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>abcd123411223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%d", MIPI_SYST_PARAM_INT(0xabcd1234))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>8765432111223344<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%lld", MIPI_SYST_PARAM_LONGLONG(0x1234567887654321ull))
+ );
+
+#if defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>1234567811223344<D32>00000000<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%ld", MIPI_SYST_PARAM_LONG(0x12345678))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>8765432111223344<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%z", MIPI_SYST_PARAM_SIZE_T(0x1234567887654321ull))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>8765432111223344<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%t", MIPI_SYST_PARAM_PTRDIFF_T(0x1234567887654321ull))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>8765432111223344<D32>12345678<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%p", MIPI_SYST_PARAM_PTR(0x1234567887654321ull))
+ );
+#else
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>1234567811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%ld", MIPI_SYST_PARAM_LONG(0x12345678))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>1234567811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%z", MIPI_SYST_PARAM_SIZE_T(0x12345678))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>1234567811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%t", MIPI_SYST_PARAM_PTRDIFF_T(0x12345678))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0008<D64>1234567811223344<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%p", MIPI_SYST_PARAM_PTR(0x12345678))
+ );
+#endif //defined(MIPI_SYST_PCFG_ENABLE_64BIT_ADDR)
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>0000000011223344<D32>40000000<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%f", MIPI_SYST_PARAM_FLOAT((float)2.0))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>0000000011223344<D32>40000000<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%f", MIPI_SYST_PARAM_DOUBLE((double)2.0))
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>000c<D64>0000000011223344<D32>40000000<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344ull,
+ "%lf", MIPI_SYST_PARAM_LONGDOUBLE((long double)2.0))
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog32_printf_string)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0005<D32>11223344<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344,
+ "%s", MIPI_SYST_PARAM_CSTR(""))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0012<D64>6c6c656811223344<D64>20646c726f77206f<D16>0021<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344,
+ "%s", MIPI_SYST_PARAM_CSTR("hello world !"))
+ );
+
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>0031<D64>3200310011223344<D64>3434003333330032<D64>3535353535003434<D64>0036363636363600<D64>0037373737373737<D64>3838383838383838<D8>00<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344,
+ "%s",
+ MIPI_SYST_PARAM_CSTR(""),
+ MIPI_SYST_PARAM_CSTR("1"),
+ MIPI_SYST_PARAM_CSTR("22"),
+ MIPI_SYST_PARAM_CSTR("333"),
+ MIPI_SYST_PARAM_CSTR("4444"),
+ MIPI_SYST_PARAM_CSTR("55555"),
+ MIPI_SYST_PARAM_CSTR("666666"),
+ MIPI_SYST_PARAM_CSTR("7777777"),
+ MIPI_SYST_PARAM_CSTR("88888888")
+ )
+ );
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>001a<D64>6c6c656811223344<D64>20646c726f77206f<D64>1234003332310021<D16>abcd<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344,
+ "%s %s %d",
+ MIPI_SYST_PARAM_CSTR("hello world !"),
+ MIPI_SYST_PARAM_CSTR("123"),
+ MIPI_SYST_PARAM_INT(0xabcd1234)
+ )
+ );
+}
+
+TEST_F(MipiSysTFixturePrintf, syst_catalog32_printf_mixed)
+{
+ EXPECT_STREQ(
+ xform("<D32TS>01012243[typ=3:1 mu=1:2 sev=4 len]<D16>001a<D64>6c6c656811223344<D64>20646c726f77206f<D64>1234003332310021<D16>abcd<FLAG>"),
+ MIPI_SYST_CATPRINTF32(ph, MIPI_SYST_SEVERITY_INFO, 0x11223344,
+ "%s %s %d",
+ MIPI_SYST_PARAM_CSTR("hello world !"),
+ MIPI_SYST_PARAM_CSTR("123"),
+ MIPI_SYST_PARAM_INT(0xabcd1234)
+ )
+ );
+}
+#endif // #if defined(MIPI_SYST_PCFG_ENABLE_CATID32_API)
+#endif //MIPI_SYST_PCFG_ENABLE_PLATFORM_STATE_DATA && MIPI_SYST_PCFG_ENABLE_DEFAULT_SCATTER_WRITE && MIPI_SYST_PCFG_ENABLE_PRINTF_API \ No newline at end of file