Base: refactor testInventorBuilder

This commit is contained in:
wmayer
2022-12-03 12:17:53 +01:00
parent 30ac2b1469
commit fa0b80d264

View File

@@ -6,6 +6,15 @@
#include <Inventor/SoInput.h>
#include <Inventor/nodes/SoSeparator.h>
Q_DECLARE_METATYPE(Base::Vector3f)
Q_DECLARE_METATYPE(Base::ColorRGB)
Q_DECLARE_METATYPE(Base::Line3f)
Q_DECLARE_METATYPE(Base::BindingElement::Binding)
Q_DECLARE_METATYPE(Base::DrawStyle)
Q_DECLARE_METATYPE(Base::DrawStyle::Style)
Q_DECLARE_METATYPE(Base::PolygonOffset)
Q_DECLARE_METATYPE(Base::PolygonOffset::Style)
class testInventorBuilder : public QObject
{
Q_OBJECT
@@ -65,15 +74,35 @@ private Q_SLOTS:
void test_MaterialBinding_data()
{
QTest::addColumn<Base::BindingElement::Binding>("input");
QTest::addColumn<QString>("result");
QTest::newRow("MaterialBinding") << "MaterialBinding { value OVERALL } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::Overall
<< "MaterialBinding { value OVERALL } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerPart
<< "MaterialBinding { value PER_PART } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerPartIndexed
<< "MaterialBinding { value PER_PART_INDEXED } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerFace
<< "MaterialBinding { value PER_FACE } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerFaceIndexed
<< "MaterialBinding { value PER_FACE_INDEXED } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerVertex
<< "MaterialBinding { value PER_VERTEX } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::PerVertexIndexed
<< "MaterialBinding { value PER_VERTEX_INDEXED } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::Default
<< "MaterialBinding { value OVERALL } \n";
QTest::newRow("MaterialBinding") << Base::BindingElement::Binding::None
<< "MaterialBinding { value OVERALL } \n";
}
void test_MaterialBinding()
{
QFETCH(Base::BindingElement::Binding, input);
QFETCH(QString, result);
Base::MaterialBindingItem item;
item.setValue(input);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -87,15 +116,17 @@ R"(Label {
label "FreeCAD"
}
)";
QTest::addColumn<QString>("input");
QTest::addColumn<QString>("result");
QTest::newRow("Label") << result;
QTest::newRow("Label") << "FreeCAD" << result;
}
void test_Label()
{
QFETCH(QString, input);
QFETCH(QString, result);
Base::LabelItem item{"FreeCAD"};
Base::LabelItem item{input.toStdString()};
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -109,15 +140,17 @@ R"(Info {
string "FreeCAD"
}
)";
QTest::addColumn<QString>("input");
QTest::addColumn<QString>("result");
QTest::newRow("Label") << result;
QTest::newRow("Info") << "FreeCAD" << result;
}
void test_Info()
{
QFETCH(QString, input);
QFETCH(QString, result);
Base::InfoItem item{"FreeCAD"};
Base::InfoItem item{input.toStdString()};
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -131,15 +164,17 @@ R"(BaseColor {
rgb 0.21 0.3 0.4
}
)";
QTest::addColumn<Base::ColorRGB>("input");
QTest::addColumn<QString>("result");
QTest::newRow("BaseColor") << result;
QTest::newRow("BaseColor") << Base::ColorRGB{0.21F, 0.3F, 0.4F} << result;
}
void test_BaseColor()
{
QFETCH(Base::ColorRGB, input);
QFETCH(QString, result);
Base::BaseColorItem item{Base::ColorRGB{0.21F, 0.3F, 0.4F}};
Base::BaseColorItem item{input};
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -153,16 +188,18 @@ R"(Material {
diffuseColor 1 0 0
}
)";
QTest::addColumn<Base::ColorRGB>("input");
QTest::addColumn<QString>("result");
QTest::newRow("Material") << result;
QTest::newRow("Material") << Base::ColorRGB{1,0,0} << result;
}
void test_Material()
{
QFETCH(Base::ColorRGB, input);
QFETCH(QString, result);
Base::MaterialItem item;
item.setDiffuseColor({Base::ColorRGB{1,0,0}});
item.setDiffuseColor({input});
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -180,18 +217,22 @@ R"(Material {
]
}
)";
QTest::addColumn<Base::ColorRGB>("input1");
QTest::addColumn<Base::ColorRGB>("input2");
QTest::addColumn<Base::ColorRGB>("input3");
QTest::addColumn<QString>("result");
QTest::newRow("Material") << result;
QTest::newRow("Material") << Base::ColorRGB{1,0,0} << Base::ColorRGB{0,1,0} << Base::ColorRGB{0,0,1} << result;
}
void test_Materials()
{
QFETCH(Base::ColorRGB, input1);
QFETCH(Base::ColorRGB, input2);
QFETCH(Base::ColorRGB, input3);
QFETCH(QString, result);
Base::MaterialItem item;
item.setDiffuseColor({Base::ColorRGB{1,0,0},
Base::ColorRGB{0,1,0},
Base::ColorRGB{0,0,1}});
item.setDiffuseColor({input1, input2, input3});
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -207,20 +248,34 @@ R"(Material {
auto result =
R"(DrawStyle {
style FILLED
pointSize 2
lineWidth 2
linePattern 0xffff
pointSize 3
lineWidth 3
linePattern 0xf0f0
}
)";
QTest::addColumn<Base::DrawStyle::Style>("styleEnum");
QTest::addColumn<ushort>("pointSize");
QTest::addColumn<ushort>("lineWidth");
QTest::addColumn<ushort>("linePattern");
QTest::addColumn<QString>("result");
QTest::newRow("DrawStyle") << result;
QTest::newRow("DrawStyle") << Base::DrawStyle::Style::Filled << ushort(3) << ushort(3) << ushort(0xf0f0) << result;
}
void test_DrawStyle()
{
QFETCH(Base::DrawStyle::Style, styleEnum);
QFETCH(ushort, pointSize);
QFETCH(ushort, lineWidth);
QFETCH(ushort, linePattern);
QFETCH(QString, result);
Base::DrawStyleItem item;
Base::DrawStyle style;
style.style = styleEnum;
style.pointSize = pointSize;
style.lineWidth = lineWidth;
style.linePattern = linePattern;
item.setValue(style);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -234,15 +289,17 @@ R"(ShapeHints {
creaseAngle 0.5
}
)";
QTest::addColumn<float>("input");
QTest::addColumn<QString>("result");
QTest::newRow("ShapeHints") << result;
QTest::newRow("ShapeHints") << 0.5F << result;
}
void test_ShapeHints()
{
QFETCH(float, input);
QFETCH(QString, result);
Base::ShapeHintsItem item{0.5F};
Base::ShapeHintsItem item{input};
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -253,21 +310,35 @@ R"(ShapeHints {
{
auto result =
R"(PolygonOffset {
factor 1
factor 2
units 1
styles FILLED
on TRUE
on FALSE
}
)";
QTest::addColumn<Base::PolygonOffset::Style>("styleEnum");
QTest::addColumn<float>("factor");
QTest::addColumn<float>("units");
QTest::addColumn<bool>("on");
QTest::addColumn<QString>("result");
QTest::newRow("PolygonOffset") << result;
QTest::newRow("PolygonOffset") << Base::PolygonOffset::Style::Filled << 2.0F << 1.0F << false << result;
}
void test_PolygonOffset()
{
QFETCH(Base::PolygonOffset::Style, styleEnum);
QFETCH(float, factor);
QFETCH(float, units);
QFETCH(bool, on);
QFETCH(QString, result);
Base::PolygonOffsetItem item;
Base::PolygonOffset offset;
offset.factor = factor;
offset.units = units;
offset.style = styleEnum;
offset.on = on;
item.setValue(offset);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -299,26 +370,35 @@ R"(Normal {
vector 1 0 0.5
}
)";
QTest::addColumn<Base::Vector3f>("input");
QTest::addColumn<QString>("result");
QTest::newRow("Normal") << result;
QTest::newRow("Normal") << Base::Vector3f{1,0,0.5} << result;
}
void test_Normal()
{
QFETCH(Base::Vector3f, input);
QFETCH(QString, result);
Base::NormalItem item;
item.setVector({Base::Vector3f{1,0,0.5}});
item.setVector({input});
builder.addNode(item);
QString string = QString::fromStdString(output.str());
QCOMPARE(string, result);
}
void test_LineItem_data()
{
QTest::addColumn<Base::Line3f>("line");
QTest::addColumn<Base::DrawStyle>("style");
QTest::newRow("LineItem") << Base::Line3f{} << Base::DrawStyle{};
}
void test_LineItem()
{
Base::Line3f line;
Base::DrawStyle style;
QFETCH(Base::Line3f, line);
QFETCH(Base::DrawStyle, style);
Base::LineItem item{line, style};
builder.addNode(item);
@@ -326,11 +406,17 @@ R"(Normal {
QVERIFY(node != nullptr);
}
void test_ArrowItem_data()
{
QTest::addColumn<Base::Line3f>("line");
QTest::addColumn<Base::DrawStyle>("style");
QTest::newRow("Arrow") << Base::Line3f{Base::Vector3f{0,0,10}, Base::Vector3f{}} << Base::DrawStyle{};
}
void test_ArrowItem()
{
Base::Line3f line;
line.p2.z = 10;
Base::DrawStyle style;
QFETCH(Base::Line3f, line);
QFETCH(Base::DrawStyle, style);
Base::ArrowItem item{line, style};
builder.addNode(item);
@@ -339,11 +425,18 @@ R"(Normal {
QVERIFY(node != nullptr);
}
void test_PointItem_data()
{
QTest::addColumn<Base::Vector3f>("point");
QTest::addColumn<Base::DrawStyle>("style");
QTest::newRow("PointItem") << Base::Vector3f{} << Base::DrawStyle{};
}
void test_PointItem()
{
Base::Vector3f pnt;
Base::DrawStyle style;
Base::PointItem item{pnt, style};
QFETCH(Base::Vector3f, point);
QFETCH(Base::DrawStyle, style);
Base::PointItem item{point, style};
builder.addNode(item);
SoNode* node = loadBuffer(output.str());
@@ -352,17 +445,35 @@ R"(Normal {
void test_NormalBinding_data()
{
auto result = "NormalBinding { value PER_PART }\n";
QTest::addColumn<Base::BindingElement::Binding>("input");
QTest::addColumn<QString>("result");
QTest::newRow("NormalBinding") << result;
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::Overall
<< "NormalBinding { value OVERALL }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerPart
<< "NormalBinding { value PER_PART }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerPartIndexed
<< "NormalBinding { value PER_PART_INDEXED }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerFace
<< "NormalBinding { value PER_FACE }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerFaceIndexed
<< "NormalBinding { value PER_FACE_INDEXED }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerVertex
<< "NormalBinding { value PER_VERTEX }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::PerVertexIndexed
<< "NormalBinding { value PER_VERTEX_INDEXED }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::Default
<< "NormalBinding { value OVERALL }\n";
QTest::newRow("NormalBinding") << Base::BindingElement::Binding::None
<< "NormalBinding { value OVERALL }\n";
}
void test_NormalBinding()
{
QFETCH(Base::BindingElement::Binding, input);
QFETCH(QString, result);
Base::NormalBindingItem item;
item.setValue(Base::BindingElement::Binding::PerPart);
item.setValue(input);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -378,17 +489,21 @@ R"(Cylinder {
parts (SIDES | TOP | BOTTOM)
}
)";
QTest::addColumn<float>("radius");
QTest::addColumn<float>("height");
QTest::addColumn<QString>("result");
QTest::newRow("Cylinder") << result;
QTest::newRow("Cylinder") << 3.0F << 7.0F << result;
}
void test_Cylinder()
{
QFETCH(float, radius);
QFETCH(float, height);
QFETCH(QString, result);
Base::CylinderItem item;
item.setRadius(3);
item.setHeight(7);
item.setRadius(radius);
item.setHeight(height);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -398,17 +513,22 @@ R"(Cylinder {
void test_Cone_data()
{
auto result = "Cone { bottomRadius 2 height 10 }\n";
QTest::addColumn<float>("radius");
QTest::addColumn<float>("height");
QTest::addColumn<QString>("result");
QTest::newRow("Cone") << result;
QTest::newRow("Cone") << 2.0F << 10.0F << result;
}
void test_Cone()
{
QFETCH(float, radius);
QFETCH(float, height);
QFETCH(QString, result);
Base::ConeItem item;
item.setBottomRadius(2);
item.setHeight(10);
item.setBottomRadius(radius);
item.setHeight(height);
builder.addNode(item);
QString string = QString::fromStdString(output.str());
@@ -418,16 +538,19 @@ R"(Cylinder {
void test_Sphere_data()
{
auto result = "Sphere { radius 4 }\n";
QTest::addColumn<float>("input");
QTest::addColumn<QString>("result");
QTest::newRow("Sphere") << result;
QTest::newRow("Sphere") << 4.0F << result;
}
void test_Sphere()
{
QFETCH(float, input);
QFETCH(QString, result);
Base::SphereItem item;
item.setRadius(4);
item.setRadius(input);
builder.addNode(item);
QString string = QString::fromStdString(output.str());