26 #include <QJsonDocument>
27 #include <QJsonObject>
42 auto json = converter.
get_json(variant);
58 auto object = converter.
get_json(variant);
62 QVariant reco_variant = converter.
get_variant(
object);
63 EXPECT_FALSE(reco_variant.isValid());
64 EXPECT_EQ(variant, reco_variant);
73 const bool value(
true);
74 QVariant variant(value);
77 auto object = converter.
get_json(variant);
81 QVariant reco_variant = converter.
get_variant(
object);
83 EXPECT_EQ(reco_variant.value<
bool>(), value);
85 EXPECT_EQ(variant, reco_variant);
87 EXPECT_EQ(ToJsonAndBack(
true).value<bool>(),
true);
88 EXPECT_EQ(ToJsonAndBack(
false).value<bool>(),
false);
98 QVariant variant(value);
101 auto object = converter.
get_json(variant);
102 EXPECT_TRUE(converter.
isVariant(
object));
105 QVariant reco_variant = converter.
get_variant(
object);
107 EXPECT_EQ(reco_variant.value<
int>(), value);
109 EXPECT_EQ(variant, reco_variant);
118 const std::string value(
"abc");
119 QVariant variant = QVariant::fromValue(value);
122 auto object = converter.
get_json(variant);
123 EXPECT_TRUE(converter.
isVariant(
object));
126 QVariant reco_variant = converter.
get_variant(
object);
129 EXPECT_EQ(reco_variant.value<std::string>(), value);
131 EXPECT_EQ(variant, reco_variant);
141 QVariant variant = QVariant::fromValue(value);
145 auto object = converter.
get_json(variant);
146 EXPECT_TRUE(converter.
isVariant(
object));
149 QVariant reco_variant = converter.
get_variant(
object);
151 EXPECT_EQ(reco_variant.value<
double>(), value);
152 EXPECT_EQ(variant, reco_variant);
156 EXPECT_DOUBLE_EQ(ToJsonAndBack(value).value<double>(), value);
158 EXPECT_DOUBLE_EQ(ToJsonAndBack(value).value<double>(), value);
159 value = 3.14159265359;
160 EXPECT_DOUBLE_EQ(ToJsonAndBack(value).value<double>(), value);
170 QVariant variant = QVariant::fromValue(value);
175 auto object = converter.
get_json(variant);
176 EXPECT_TRUE(converter.
isVariant(
object));
179 QVariant reco_variant = converter.
get_variant(
object);
181 EXPECT_EQ(reco_variant.value<
double>(), value);
182 EXPECT_EQ(variant, reco_variant);
191 const std::vector<double> value = {42.0, 43.0, 44.0};
192 QVariant variant = QVariant::fromValue(value);
195 auto object = converter.
get_json(variant);
196 EXPECT_TRUE(converter.
isVariant(
object));
199 QVariant reco_variant = converter.
get_variant(
object);
201 EXPECT_EQ(reco_variant.value<std::vector<double>>(), value);
202 EXPECT_EQ(variant, reco_variant);
216 QVariant variant = QVariant::fromValue(value);
219 auto object = converter.
get_json(variant);
220 EXPECT_TRUE(converter.
isVariant(
object));
223 QVariant reco_variant = converter.
get_variant(
object);
226 EXPECT_EQ(variant, reco_variant);
235 const QColor value(Qt::red);
236 QVariant variant = QVariant::fromValue(value);
239 auto object = converter.
get_json(variant);
240 EXPECT_TRUE(converter.
isVariant(
object));
243 QVariant reco_variant = converter.
get_variant(
object);
245 EXPECT_EQ(reco_variant.value<QColor>(), value);
246 EXPECT_EQ(variant, reco_variant);
256 QVariant variant = QVariant::fromValue(value);
259 auto object = converter.
get_json(variant);
260 EXPECT_TRUE(converter.
isVariant(
object));
263 QVariant reco_variant = converter.
get_variant(
object);
266 EXPECT_EQ(variant, reco_variant);
276 QVariant variant = QVariant::fromValue(value);
279 auto object = converter.
get_json(variant);
280 EXPECT_TRUE(converter.
isVariant(
object));
283 QVariant reco_variant = converter.
get_variant(
object);
285 EXPECT_EQ(reco_variant.value<
RealLimits>(), value);
286 EXPECT_EQ(variant, reco_variant);
290 EXPECT_EQ(ToJsonAndBack(QVariant::fromValue(value)).value<RealLimits>(), value);
292 EXPECT_EQ(ToJsonAndBack(QVariant::fromValue(value)).value<RealLimits>(), value);
294 EXPECT_EQ(ToJsonAndBack(QVariant::fromValue(value)).value<RealLimits>(), value);
301 const std::string string_value(
"abc");
302 const std::vector<double> vector_value = {42.1, 42.2, 42.3};
307 QColor color(Qt::red);
310 std::vector<QVariant> variants = {QVariant(),
317 QVariant(3.14159265359),
318 QVariant::fromValue(string_value),
319 QVariant::fromValue(vector_value),
320 QVariant::fromValue(combo),
321 QVariant::fromValue(color),
322 QVariant::fromValue(extprop),
328 QJsonArray json_array;
329 for (
auto var : variants)
330 json_array.append(converter.
get_json(var));
338 std::vector<QVariant> reco_variants;
339 for (
const auto x : document.array())
340 reco_variants.push_back(converter.
get_variant(x.toObject()));
343 EXPECT_EQ(variants, reco_variants);
Convenience class which creates a directory on disk for test content.
Test convertion of QVariant from/to QJsonObject.
static QVariant ToJsonAndBack(const QVariant &variant)
JsonVariantConverterTest()
~JsonVariantConverterTest()
Custom property to define list of string values with multiple selections.
void setSelected(int index, bool value=true)
Sets given index selection flag.
static ComboProperty createFrom(const std::vector< std::string > &values, const std::string ¤t_value={})
Property to carry text, color and identifier.
Default converter between supported variants and json objects.
QJsonObject get_json(const Variant &variant) override
bool isVariant(const QJsonObject &object) const
Returns true if given json object represents variant.
Variant get_variant(const QJsonObject &object) override
static RealLimits positive()
Creates an object which can have only positive values (>0., zero is not included)
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
TEST_F(JsonVariantConverterTest, invalidVariant)
Invalid QVariant conversion.
const std::string string_type_name
const std::string bool_type_name
const std::string double_type_name
const std::string int_type_name
MVVM_MODEL_EXPORT bool IsIntVariant(const Variant &variant)
Returns true in the case of double value based variant.
MVVM_MODEL_EXPORT bool IsColorVariant(const Variant &variant)
Returns true in the case of QColor based variant.
MVVM_MODEL_EXPORT bool IsDoubleVariant(const Variant &variant)
Returns true in the case of double value based variant.
MVVM_MODEL_EXPORT bool IsStdStringVariant(const Variant &variant)
Returns true in the case of double value based variant.
MVVM_MODEL_EXPORT bool IsBoolVariant(const Variant &variant)
Returns true in the case of double value based variant.
MVVM_MODEL_EXPORT bool IsExtPropertyVariant(const Variant &variant)
Returns true in the case of ExternalProperty based variant.
MVVM_MODEL_EXPORT bool IsComboVariant(const Variant &variant)
Returns true in the case of double value based variant.
MVVM_MODEL_EXPORT bool IsDoubleVectorVariant(const Variant &variant)
Returns true in the case of variant based on std::vector<double>.
MVVM_MODEL_EXPORT bool IsRealLimitsVariant(const Variant &variant)
Returns true in the case of RealLimits based variant.
materialitems.h Collection of materials to populate MaterialModel.
std::string TestFileName(const std::string &test_sub_dir, const std::string &file_name)
Returns full path to the file in test directory.
void SaveJson(const QJsonObject &object, const std::string &fileName)
QJsonDocument LoadJson(const std::string &fileName)