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)