From: Marcin Siodelski Date: Tue, 21 Jul 2015 15:50:25 +0000 (+0200) Subject: [3959] Fixed output from OptionIntArray::toText for uint8 values. X-Git-Tag: trac4006_base~7^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fd41f5e62f1017180d0ae73e6d6cc5d304cec66;p=thirdparty%2Fkea.git [3959] Fixed output from OptionIntArray::toText for uint8 values. --- diff --git a/src/lib/dhcp/option_int_array.h b/src/lib/dhcp/option_int_array.h index 8b03aa9636..e810bf14c3 100644 --- a/src/lib/dhcp/option_int_array.h +++ b/src/lib/dhcp/option_int_array.h @@ -262,7 +262,20 @@ public: std::string data_type = OptionDataTypeUtil::getDataTypeName(OptionDataTypeTraits::type); for (typename std::vector::const_iterator value = values_.begin(); value != values_.end(); ++value) { - output << " " << *value << "(" << data_type << ")"; + output << " "; + + // For 1 byte long data types we need to cast to the integer + // because they are usually implemented as "char" types, in + // which case the character rather than number would be printed. + if (OptionDataTypeTraits::len == 1) { + output << static_cast(*value); + + } else { + output << *value; + } + + // Append data type. + output << "(" << data_type << ")"; } return (output.str()); diff --git a/src/lib/dhcp/tests/option_int_array_unittest.cc b/src/lib/dhcp/tests/option_int_array_unittest.cc index df18a3b47e..b60a9e896b 100644 --- a/src/lib/dhcp/tests/option_int_array_unittest.cc +++ b/src/lib/dhcp/tests/option_int_array_unittest.cc @@ -476,4 +476,18 @@ TEST_F(OptionIntArrayTest, toText) { option.toText()); } +// This test checks that the option holding multiple uint8 values +// is correctly converted to the textual format. +TEST_F(OptionIntArrayTest, toTextUint8) { + OptionUint8Array option(Option::V4, 128); + option.addValue(1); + option.addValue(7); + option.addValue(15); + + EXPECT_EQ("type=128, len=003: 1(uint8) 7(uint8) 15(uint8)", + option.toText()); +} + + + } // anonymous namespace