void test_converter_for(Converter<V> *conv) { V v, w, x; /* Convert from/to Integer */ v = conv->fromInteger(123); QVERIFY(conv->type(v) == Converter<V>::INTEGER); QVERIFY(conv->integer(v) == 123); /* Convert from/to Float */ v = conv->fromFloating(42.23); QVERIFY(conv->type(v) == Converter<V>::FLOATING); QVERIFY(conv->floating(v) == 42.23); /* Convert from/to Bool */ v = conv->fromBoolean(true); QVERIFY(conv->type(v) == Converter<V>::BOOLEAN); QVERIFY(conv->boolean(v)); v = conv->fromBoolean(false); QVERIFY(conv->type(v) == Converter<V>::BOOLEAN); QVERIFY(!conv->boolean(v)); /* Convert from/to String */ v = conv->fromString("Hello World"); QVERIFY(conv->type(v) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(v), "Hello World") == 0); /* Convert from/to List */ ListBuilder<V> *builder = conv->newList(); v = conv->fromInteger(444); builder->append(v); v = conv->fromString("Hello"); builder->append(v); v = builder->value(); delete builder; ListIterator<V> *iterator = conv->list(v); QVERIFY(iterator->next(&w)); QVERIFY(conv->type(w) == Converter<V>::INTEGER); QVERIFY(conv->integer(w) == 444); QVERIFY(iterator->next(&w)); QVERIFY(conv->type(w) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(w), "Hello") == 0); delete iterator; /* Convert from/to Dict */ DictBuilder<V> *builder2 = conv->newDict(); v = conv->fromBoolean(true); builder2->set(conv->fromString("a"), v); v = builder2->value(); delete builder2; DictIterator<V> *iterator2 = conv->dict(v); QVERIFY(iterator2->next(&w, &x)); QVERIFY(conv->type(w) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(w), "a") == 0); QVERIFY(conv->type(x) == Converter<V>::BOOLEAN); QVERIFY(conv->boolean(x) == true); delete iterator2; delete conv; }
void test_converter_for(Converter<V> *conv) { V v, w, x; /* Convert from/to Integer */ v = conv->fromInteger(123); QVERIFY(conv->type(v) == Converter<V>::INTEGER); QVERIFY(conv->integer(v) == 123); /* Convert from/to Float */ v = conv->fromFloating(42.23); QVERIFY(conv->type(v) == Converter<V>::FLOATING); QVERIFY(conv->floating(v) == 42.23); /* Convert from/to Bool */ v = conv->fromBoolean(true); QVERIFY(conv->type(v) == Converter<V>::BOOLEAN); QVERIFY(conv->boolean(v)); v = conv->fromBoolean(false); QVERIFY(conv->type(v) == Converter<V>::BOOLEAN); QVERIFY(!conv->boolean(v)); /* Convert from/to String */ v = conv->fromString("Hello World"); QVERIFY(conv->type(v) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(v), "Hello World") == 0); /* Convert from/to List */ ListBuilder<V> *builder = conv->newList(); v = conv->fromInteger(444); builder->append(v); v = conv->fromString("Hello"); builder->append(v); v = builder->value(); delete builder; ListIterator<V> *iterator = conv->list(v); QVERIFY(iterator->next(&w)); QVERIFY(conv->type(w) == Converter<V>::INTEGER); QVERIFY(conv->integer(w) == 444); QVERIFY(iterator->next(&w)); QVERIFY(conv->type(w) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(w), "Hello") == 0); delete iterator; /* Convert from/to Dict */ DictBuilder<V> *builder2 = conv->newDict(); v = conv->fromBoolean(true); builder2->set(conv->fromString("a"), v); v = builder2->value(); delete builder2; DictIterator<V> *iterator2 = conv->dict(v); QVERIFY(iterator2->next(&w, &x)); QVERIFY(conv->type(w) == Converter<V>::STRING); QVERIFY(strcmp(conv->string(w), "a") == 0); QVERIFY(conv->type(x) == Converter<V>::BOOLEAN); QVERIFY(conv->boolean(x) == true); delete iterator2; /* Convert from/to generic PyObject */ PyObject *obj = PyCapsule_New(conv, "test", NULL); v = conv->fromPyObject(PyObjectRef(obj)); QVERIFY(conv->type(v) == Converter<V>::PYOBJECT); // Check if getting a new reference works PyObject *o = conv->pyObject(v).newRef(); QVERIFY(o == obj); Py_DECREF(o); Py_CLEAR(obj); delete conv; }