DriverSettingsMessageAdapter: fixed converter signature.
* The ConvertFromDriverSettings() method missed the current value index. * Completed unit tests, and enabled them all.
This commit is contained in:
@@ -21,7 +21,7 @@ public:
|
|||||||
|
|
||||||
virtual status_t ConvertFromDriverSettings(
|
virtual status_t ConvertFromDriverSettings(
|
||||||
const driver_parameter& parameter,
|
const driver_parameter& parameter,
|
||||||
const char* name, uint32 type,
|
const char* name, int32 index, uint32 type,
|
||||||
BMessage& target) = 0;
|
BMessage& target) = 0;
|
||||||
virtual status_t ConvertToDriverSettings(const BMessage& source,
|
virtual status_t ConvertToDriverSettings(const BMessage& source,
|
||||||
const char* name, int32 index,
|
const char* name, int32 index,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class InterfaceAddressFamilyConverter : public DriverSettingsConverter {
|
|||||||
public:
|
public:
|
||||||
virtual status_t ConvertFromDriverSettings(
|
virtual status_t ConvertFromDriverSettings(
|
||||||
const driver_parameter& parameter,
|
const driver_parameter& parameter,
|
||||||
const char* name, uint32 type,
|
const char* name, int32 index, uint32 type,
|
||||||
BMessage& target);
|
BMessage& target);
|
||||||
virtual status_t ConvertToDriverSettings(const BMessage& source,
|
virtual status_t ConvertToDriverSettings(const BMessage& source,
|
||||||
const char* name, int32 index,
|
const char* name, int32 index,
|
||||||
@@ -266,8 +266,8 @@ type_for_protocol(int protocol)
|
|||||||
|
|
||||||
status_t
|
status_t
|
||||||
InterfaceAddressFamilyConverter::ConvertFromDriverSettings(
|
InterfaceAddressFamilyConverter::ConvertFromDriverSettings(
|
||||||
const driver_parameter& parameter, const char* name, uint32 type,
|
const driver_parameter& parameter, const char* name, int32 index,
|
||||||
BMessage& target)
|
uint32 type, BMessage& target)
|
||||||
{
|
{
|
||||||
return B_NOT_SUPPORTED;
|
return B_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ DriverSettingsMessageAdapter::_AddParameter(const driver_parameter& parameter,
|
|||||||
if (settingsTemplate.converter != NULL) {
|
if (settingsTemplate.converter != NULL) {
|
||||||
status_t status
|
status_t status
|
||||||
= settingsTemplate.converter->ConvertFromDriverSettings(
|
= settingsTemplate.converter->ConvertFromDriverSettings(
|
||||||
parameter, settingsTemplate.name, settingsTemplate.type,
|
parameter, settingsTemplate.name, i, settingsTemplate.type,
|
||||||
message);
|
message);
|
||||||
if (status == B_OK)
|
if (status == B_OK)
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ public:
|
|||||||
status_t ToMessage(const settings_template* settingsTemplate,
|
status_t ToMessage(const settings_template* settingsTemplate,
|
||||||
BMessage& message)
|
BMessage& message)
|
||||||
{
|
{
|
||||||
message.MakeEmpty();
|
|
||||||
|
|
||||||
DriverSettingsMessageAdapter adapter;
|
DriverSettingsMessageAdapter adapter;
|
||||||
return adapter.ConvertFromDriverSettings(
|
return adapter.ConvertFromDriverSettings(
|
||||||
*get_driver_settings(fSettings), settingsTemplate, message);
|
*get_driver_settings(fSettings), settingsTemplate, message);
|
||||||
@@ -107,6 +105,7 @@ DriverSettingsMessageAdapterTest::TestPrimitivesToMessage()
|
|||||||
CPPUNIT_ASSERT_EQUAL(10, message.CountNames(B_BOOL_TYPE));
|
CPPUNIT_ASSERT_EQUAL(10, message.CountNames(B_BOOL_TYPE));
|
||||||
CPPUNIT_ASSERT_EQUAL(2, message.CountNames(B_INT32_TYPE));
|
CPPUNIT_ASSERT_EQUAL(2, message.CountNames(B_INT32_TYPE));
|
||||||
CPPUNIT_ASSERT_EQUAL(2, message.CountNames(B_STRING_TYPE));
|
CPPUNIT_ASSERT_EQUAL(2, message.CountNames(B_STRING_TYPE));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(14, message.CountNames(B_ANY_TYPE));
|
||||||
|
|
||||||
// bool values
|
// bool values
|
||||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("bool1", true, message.GetBool("bool1"));
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("bool1", true, message.GetBool("bool1"));
|
||||||
@@ -141,12 +140,33 @@ DriverSettingsMessageAdapterTest::TestPrimitivesToMessage()
|
|||||||
void
|
void
|
||||||
DriverSettingsMessageAdapterTest::TestMessage()
|
DriverSettingsMessageAdapterTest::TestMessage()
|
||||||
{
|
{
|
||||||
}
|
const settings_template kSubTemplate[] = {
|
||||||
|
{B_BOOL_TYPE, "bool", NULL},
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
const settings_template kTemplate[] = {
|
||||||
|
{B_MESSAGE_TYPE, "message", kSubTemplate},
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
Settings settingsA("message {\n"
|
||||||
|
" bool\n"
|
||||||
|
"}\n");
|
||||||
|
BMessage message;
|
||||||
|
CPPUNIT_ASSERT_EQUAL(B_OK, settingsA.ToMessage(kTemplate, message));
|
||||||
|
BMessage subMessage;
|
||||||
|
CPPUNIT_ASSERT_EQUAL(B_OK, message.FindMessage("message", &subMessage));
|
||||||
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("bool", true, subMessage.GetBool("bool"));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1, message.CountNames(B_ANY_TYPE));
|
||||||
|
|
||||||
|
Settings settingsB("message {\n"
|
||||||
|
"}\n");
|
||||||
|
CPPUNIT_ASSERT_EQUAL(B_OK, settingsB.ToMessage(kTemplate, message));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(B_OK, message.FindMessage("message", &subMessage));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1, message.CountNames(B_ANY_TYPE));
|
||||||
|
|
||||||
void
|
Settings settingsC("\n");
|
||||||
DriverSettingsMessageAdapterTest::TestEmptyMessage()
|
CPPUNIT_ASSERT_EQUAL(B_OK, settingsC.ToMessage(kTemplate, message));
|
||||||
{
|
CPPUNIT_ASSERT(message.IsEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -209,18 +229,67 @@ DriverSettingsMessageAdapterTest::TestParent()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
DriverSettingsMessageAdapterTest::TestConverter()
|
||||||
|
{
|
||||||
|
class InterfaceAddressFamilyConverter : public DriverSettingsConverter {
|
||||||
|
public:
|
||||||
|
status_t ConvertFromDriverSettings(const driver_parameter& parameter,
|
||||||
|
const char* name, int32 index, uint32 type, BMessage& target)
|
||||||
|
{
|
||||||
|
const char* value = parameter.values[index];
|
||||||
|
if (value[0] == '0' && value[1] == 'x')
|
||||||
|
return target.AddInt32(name, (int32)strtol(value, NULL, 0));
|
||||||
|
return B_NOT_SUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
status_t ConvertToDriverSettings(const BMessage& source,
|
||||||
|
const char* name, int32 index, uint32 type, BString& value)
|
||||||
|
{
|
||||||
|
int32 intValue;
|
||||||
|
if (index == 0 && source.FindInt32(name, 0, &intValue) == B_OK) {
|
||||||
|
BString string;
|
||||||
|
string.SetToFormat("0x%" B_PRIu32, intValue);
|
||||||
|
value << string;
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
return B_NOT_SUPPORTED;
|
||||||
|
}
|
||||||
|
} converter;
|
||||||
|
|
||||||
|
const settings_template kTemplate[] = {
|
||||||
|
{B_INT32_TYPE, "test", NULL, false, &converter},
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
Settings settings("test 0x2a 43");
|
||||||
|
BMessage message;
|
||||||
|
CPPUNIT_ASSERT_EQUAL(B_OK, settings.ToMessage(kTemplate, message));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(42, message.GetInt32("test", 0, 0));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(43, message.GetInt32("test", 1, 0));
|
||||||
|
CPPUNIT_ASSERT_EQUAL(1, message.CountNames(B_ANY_TYPE));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*static*/ void
|
/*static*/ void
|
||||||
DriverSettingsMessageAdapterTest::AddTests(BTestSuite& parent)
|
DriverSettingsMessageAdapterTest::AddTests(BTestSuite& parent)
|
||||||
{
|
{
|
||||||
CppUnit::TestSuite& suite = *new CppUnit::TestSuite(
|
CppUnit::TestSuite& suite = *new CppUnit::TestSuite(
|
||||||
"DriverSettingsMessageAdapterTest");
|
"DriverSettingsMessageAdapterTest");
|
||||||
|
|
||||||
// suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
||||||
// "DriverSettingsMessageAdapterTest::TestPrimitivesToMessage",
|
"DriverSettingsMessageAdapterTest::TestPrimitivesToMessage",
|
||||||
// &DriverSettingsMessageAdapterTest::TestPrimitivesToMessage));
|
&DriverSettingsMessageAdapterTest::TestPrimitivesToMessage));
|
||||||
|
suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
||||||
|
"DriverSettingsMessageAdapterTest::TestMessage",
|
||||||
|
&DriverSettingsMessageAdapterTest::TestMessage));
|
||||||
suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
||||||
"DriverSettingsMessageAdapterTest::TestParent",
|
"DriverSettingsMessageAdapterTest::TestParent",
|
||||||
&DriverSettingsMessageAdapterTest::TestParent));
|
&DriverSettingsMessageAdapterTest::TestParent));
|
||||||
|
suite.addTest(new CppUnit::TestCaller<DriverSettingsMessageAdapterTest>(
|
||||||
|
"DriverSettingsMessageAdapterTest::TestConverter",
|
||||||
|
&DriverSettingsMessageAdapterTest::TestConverter));
|
||||||
|
|
||||||
parent.addTest("DriverSettingsMessageAdapterTest", &suite);
|
parent.addTest("DriverSettingsMessageAdapterTest", &suite);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ public:
|
|||||||
|
|
||||||
void TestPrimitivesToMessage();
|
void TestPrimitivesToMessage();
|
||||||
void TestMessage();
|
void TestMessage();
|
||||||
void TestEmptyMessage();
|
|
||||||
void TestParent();
|
void TestParent();
|
||||||
|
void TestConverter();
|
||||||
|
|
||||||
static void AddTests(BTestSuite& suite);
|
static void AddTests(BTestSuite& suite);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user