Skip to content

Commit

Permalink
Add read_PartLine + test
Browse files Browse the repository at this point in the history
  • Loading branch information
De-Backer committed Dec 30, 2020
1 parent 7e25d9f commit 49468aa
Show file tree
Hide file tree
Showing 3 changed files with 263 additions and 1 deletion.
12 changes: 12 additions & 0 deletions include/element/loadelement.h
Expand Up @@ -6,6 +6,7 @@
#include <QString>
#include <QUuid>
#include <QVariant>
#include <QVector>
#include <QXmlStreamReader>

class LoadElement
Expand All @@ -18,6 +19,7 @@ class LoadElement
QString name(QString language);
QVariant kindInformation(QString value);
QString informations();
QVector<QVector<QVariant>> description();

private:
// definition
Expand All @@ -36,6 +38,7 @@ class LoadElement
QMap<QString, QString> kindInformation_text_element; // name, text
// informations_element
QString informations_element;
QVector<QVector<QVariant>> description_element;
QFile* element;

void LoadElement0_22(QXmlStreamReader* reader);
Expand All @@ -52,6 +55,15 @@ class LoadElement
void read_definition_kindInformation(QXmlStreamReader* reader);
void read_definition_informations(QXmlStreamReader* reader);
void read_definition_description(QXmlStreamReader* reader);

void read_PartLine(QXmlStreamReader* reader);
void read_PartRectangle(QXmlStreamReader* reader);
void read_PartEllipse(QXmlStreamReader* reader);
void read_PartPolygon(QXmlStreamReader* reader);
void read_PartTerminal(QXmlStreamReader* reader);
void read_PartText(QXmlStreamReader* reader);
void read_PartArc(QXmlStreamReader* reader);
void read_PartDynamicTextField(QXmlStreamReader* reader);
};

#endif // LOADELEMENT_H
116 changes: 115 additions & 1 deletion src/element/loadelement.cpp
Expand Up @@ -98,6 +98,11 @@ QString LoadElement::name(QString language)

QString LoadElement::informations() { return informations_element; }

QVector<QVector<QVariant>> LoadElement::description()
{
return description_element;
}

void LoadElement::LoadElement0_22(QXmlStreamReader* reader)
{
// definition
Expand Down Expand Up @@ -143,6 +148,10 @@ void LoadElement::LoadElement0_3(QXmlStreamReader* reader)
if (reader->name() == "names") { read_definition_name(reader); }
else if (reader->name() == QLatin1String("informations"))
read_definition_informations(reader);
else if (reader->name() == QLatin1String("kindInformations"))
read_definition_kindInformation(reader);
else if (reader->name() == QLatin1String("description"))
read_definition_description(reader);
else
reader->skipCurrentElement();
}
Expand Down Expand Up @@ -232,5 +241,110 @@ void LoadElement::read_definition_informations(QXmlStreamReader* reader)

void LoadElement::read_definition_description(QXmlStreamReader* reader)
{
reader->attributes();
Q_ASSERT(
reader->isStartElement()
&& reader->name() == QLatin1String("description"));
while (reader->readNextStartElement())
{
if (reader->name() == "line") { read_PartLine(reader); }
else if (reader->name() == QLatin1String("rect"))
read_PartRectangle(reader);
else if (reader->name() == QLatin1String("ellipse"))
read_PartEllipse(reader);
else if (reader->name() == QLatin1String("circle"))
read_PartEllipse(reader);
else if (reader->name() == QLatin1String("polygon"))
read_PartPolygon(reader);
else if (reader->name() == QLatin1String("terminal"))
read_PartTerminal(reader);
else if (reader->name() == QLatin1String("text"))
read_PartText(reader);
else if (reader->name() == QLatin1String("arc"))
read_PartArc(reader);
else if (reader->name() == QLatin1String("dynamic_text"))
read_PartDynamicTextField(reader);
else if (reader->name() == QLatin1String("input"))
read_PartDynamicTextField(reader);
else
reader->skipCurrentElement();
}
if (reader->hasError())
{
throw std::invalid_argument(
"XMLerror:" + reader->errorString().toStdString());
}
}

void LoadElement::read_PartLine(QXmlStreamReader* reader)
{
// Q_ASSERT(
// reader->isStartElement() && reader->name() ==
// QLatin1String("line"));
// 0 line
// 1 x1="-5"
// 2 y1="13"
// 3 x2="4"
// 4 y2="20"
// 5 length1="1.5"
// 6 length2="1.5"
// 7 end1="none"
// 8 end2="none"
// 9 style="line-style:normal;line-weight:thin;filling:none;color:black"
// 10 antialias="false"
QVector<QVariant> var(1, reader->name().toString());
var.append(reader->attributes().value("x1").toInt());
var.append(reader->attributes().value("y1").toInt());
var.append(reader->attributes().value("x2").toInt());
var.append(reader->attributes().value("y2").toInt());
var.append(reader->attributes().value("length1").toDouble());
var.append(reader->attributes().value("length2").toDouble());
var.append(reader->attributes().value("end1").toString());
var.append(reader->attributes().value("end2").toString());
var.append(reader->attributes().value("style").toString());
var.append(reader->attributes().value("antialias").toString());

description_element.append(var);
reader->readNextStartElement();
}

void LoadElement::read_PartRectangle(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartEllipse(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartPolygon(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartTerminal(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartText(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartArc(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}

void LoadElement::read_PartDynamicTextField(QXmlStreamReader* reader)
{
reader->attributes().value("length1");
reader->readNextStartElement();
}
136 changes: 136 additions & 0 deletions tests/catch/loadelement_test.cpp
Expand Up @@ -68,6 +68,142 @@ TEST_CASE("LoadElement 0.3.0", "0.3.0")

// informations
CHECK("EN 60617: 03-03-08" == mytest.informations().toStdString());

// description
QVector<QVector<QVariant>> test_description;
{
QVector<QVariant> test_var(1, "line");
test_var.append(-5);
test_var.append(13);
test_var.append(4);
test_var.append(20);
test_var.append(1.5);
test_var.append(1.5);
test_var.append("none");
test_var.append("none");
test_var.append(
"line-style:normal;line-weight:thin;filling:none;color:black");
test_var.append("false");
test_description.append(test_var);
}
{
QVector<QVariant> test_var(1, "line");
test_var.append(-1);
test_var.append(12);
test_var.append(-1);
test_var.append(19);
test_var.append(1.5);
test_var.append(1.5);
test_var.append("none");
test_var.append("none");
test_var.append(
"line-style:normal;line-weight:normal;filling:none;color:"
"black");
test_var.append("false");
test_description.append(test_var);
}
{
QVector<QVariant> test_var(1, "line");
test_var.append(0);
test_var.append(12);
test_var.append(0);
test_var.append(30);
test_var.append(1.5);
test_var.append(1.5);
test_var.append("none");
test_var.append("none");
test_var.append(
"line-style:normal;line-weight:normal;filling:none;color:"
"black");
test_var.append("false");
test_description.append(test_var);
}
{
QVector<QVariant> test_var(1, "line");
test_var.append(0);
test_var.append(9);
test_var.append(0);
test_var.append(0);
test_var.append(1.5);
test_var.append(1.5);
test_var.append("none");
test_var.append("none");
test_var.append(
"line-style:normal;line-weight:normal;filling:none;color:"
"black");
test_var.append("false");
test_description.append(test_var);
}
{
QVector<QVariant> test_var(1, "line");
test_var.append(1);
test_var.append(12);
test_var.append(1);
test_var.append(19);
test_var.append(1.5);
test_var.append(1.5);
test_var.append("none");
test_var.append("none");
test_var.append(
"line-style:normal;line-weight:normal;filling:none;color:"
"black");
test_var.append("false");
test_description.append(test_var);
}
int var = 0;
QVector<QVariant> description;
CHECK(mytest.description().size() > 0);
if (mytest.description().size() == 0) return;
description.append(mytest.description().at(0));
for (QVector<QVariant> description : mytest.description())
{
int var2 = 0;

CHECK(
test_description.at(var).at(var2).toString().toStdString()
== description.at(var2).toString().toStdString());
++var2;
CHECK(
test_description.at(var).at(var2).toInt()
== description.at(var2).toInt());
++var2;
CHECK(
test_description.at(var).at(var2).toInt()
== description.at(var2).toInt());
++var2;
CHECK(
test_description.at(var).at(var2).toInt()
== description.at(var2).toInt());
++var2;
CHECK(
test_description.at(var).at(var2).toInt()
== description.at(var2).toInt());
++var2;
CHECK(
test_description.at(var).at(var2).toDouble()
== description.at(var2).toDouble());
++var2;
CHECK(
test_description.at(var).at(var2).toDouble()
== description.at(var2).toDouble());
++var2;
CHECK(
test_description.at(var).at(var2).toString().toStdString()
== description.at(var2).toString().toStdString());
++var2;
CHECK(
test_description.at(var).at(var2).toString().toStdString()
== description.at(var2).toString().toStdString());
++var2;
CHECK(
test_description.at(var).at(var2).toString().toStdString()
== description.at(var2).toString().toStdString());
++var2;
CHECK(
test_description.at(var).at(var2).toString().toStdString()
== description.at(var2).toString().toStdString());
++var;
}
}
catch (std::exception& e)
{
Expand Down

0 comments on commit 49468aa

Please sign in to comment.