Example #1
0
void TestQObjectHelper::testQVariant2QObject()
{
  bool ok;
  QString name = QLatin1String("Flavio Castelli");
  int phoneNumber = 123456;
  Person::Gender gender = Person::Male;
  QDate dob (1982, 7, 12);
  QVariantList nicknames;
  nicknames << QLatin1String("nickname1") << QLatin1String("nickname2");

  Person expected_person;
  expected_person.setName(name);
  expected_person.setPhoneNumber(phoneNumber);
  expected_person.setGender(gender);
  expected_person.setDob(dob);
  expected_person.setCustomField(nicknames);

  QVariantMap variant = QObjectHelper::qobject2qvariant(&expected_person);

  Serializer serializer;
  QByteArray json = serializer.serialize(variant);

  Parser parser;
  QVariant parsedVariant = parser.parse(json,&ok);
  QVERIFY(ok);
  QVERIFY(parsedVariant.canConvert(QVariant::Map));

  Person person;
  QObjectHelper::qvariant2qobject(parsedVariant.toMap(), &person);

  QCOMPARE(person.name(), name);
  QCOMPARE(person.phoneNumber(),phoneNumber);
  QCOMPARE(person.gender(), gender);
  QCOMPARE(person.dob(), dob);
  QCOMPARE(person.customField(), QVariant(nicknames));
}