mirror of
https://github.com/Serial-Studio/Serial-Studio.git
synced 2025-01-31 17:42:55 +08:00
330 lines
9.9 KiB
C++
330 lines
9.9 KiB
C++
|
#include "testvariantdata.h"
|
||
|
#include "qtcsv/variantdata.h"
|
||
|
|
||
|
const double EPSILON = 0.000001;
|
||
|
|
||
|
void TestVariantData::testCreation()
|
||
|
{
|
||
|
QtCSV::VariantData varData;
|
||
|
|
||
|
QVERIFY2(varData.isEmpty(), "Empty VariantData is not empty");
|
||
|
QVERIFY2(varData.rowCount() == 0, "Empty VariantData have too many rows");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testAddEmptyRow()
|
||
|
{
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.addEmptyRow();
|
||
|
|
||
|
QVERIFY2(!varData.isEmpty(), "VariantData is empty with empty line");
|
||
|
QVERIFY2(1 == varData.rowCount(), "Wrong number of rows");
|
||
|
QVERIFY2(QStringList() == varData.rowValues(0), "Wrong data for empty row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testAddOneRow()
|
||
|
{
|
||
|
QList<QVariant> values;
|
||
|
QString strValue("Hey");
|
||
|
int intValue = 7000;
|
||
|
values << strValue << intValue;
|
||
|
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.addRow(values);
|
||
|
|
||
|
QVERIFY2(!varData.isEmpty(), "VariantData is empty");
|
||
|
QVERIFY2(1 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
QStringList resultValues = varData.rowValues(0);
|
||
|
QVERIFY2(2 == resultValues.size(), "Wrong number of values");
|
||
|
|
||
|
auto resultInt = resultValues.at(1).toInt();
|
||
|
QVERIFY2(strValue == resultValues.at(0), "Wrong string data");
|
||
|
QVERIFY2(resultInt == intValue, "Wrong int data");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testAddOneRowUsingOneElement()
|
||
|
{
|
||
|
int expectedValue = 42;
|
||
|
QVariant varValue(expectedValue);
|
||
|
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.addRow(varValue);
|
||
|
|
||
|
QVERIFY2(!varData.isEmpty(), "VariantData is empty");
|
||
|
QVERIFY2(1 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
QStringList values = varData.rowValues(0);
|
||
|
QVERIFY2(1 == values.size(), "Wrong number of values");
|
||
|
|
||
|
auto resultValue = values.at(0).toInt();
|
||
|
QVERIFY2(resultValue == expectedValue, "Wrong data");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testAddRows()
|
||
|
{
|
||
|
double expectedValue = 42.12309;
|
||
|
QVariant firstRow(expectedValue);
|
||
|
|
||
|
QList<QVariant> secondRow;
|
||
|
secondRow << QVariant("kkoo") << QVariant(771) << QVariant(3.14);
|
||
|
|
||
|
QStringList thirdRow;
|
||
|
thirdRow << "one" << "two" << "three";
|
||
|
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.addRow(firstRow);
|
||
|
varData.addRow(secondRow);
|
||
|
varData.addRow(thirdRow);
|
||
|
|
||
|
QVERIFY2(!varData.isEmpty(), "VariantData is empty");
|
||
|
QVERIFY2(3 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
QStringList values = varData.rowValues(0);
|
||
|
QVERIFY2(1 == values.size(), "Wrong number of values for first row");
|
||
|
|
||
|
auto resultValue = values.at(0).toDouble();
|
||
|
QVERIFY2(resultValue - expectedValue < EPSILON, "Wrong double value");
|
||
|
|
||
|
QStringList secondRowValues = varData.rowValues(1);
|
||
|
QVERIFY2(secondRow.size() == secondRowValues.size(),
|
||
|
"Wrong number of elements in second row");
|
||
|
|
||
|
QVERIFY2(secondRow.at(0).toString() == secondRowValues.at(0),
|
||
|
"Wrong first element in second row");
|
||
|
|
||
|
QVERIFY2(secondRow.at(1).toInt() == secondRowValues.at(1).toInt(),
|
||
|
"Wrong second element in second row");
|
||
|
|
||
|
auto diff = secondRow.at(2).toDouble() - secondRowValues.at(2).toDouble();
|
||
|
QVERIFY2(diff <= EPSILON, "Wrong third element in second row");
|
||
|
|
||
|
QVERIFY2(thirdRow == varData.rowValues(2), "Wrong third row values");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testClearEmptyData()
|
||
|
{
|
||
|
QtCSV::VariantData varData;
|
||
|
QVERIFY2(varData.isEmpty(), "VariantData is not empty");
|
||
|
QVERIFY2(0 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
varData.clear();
|
||
|
QVERIFY2(varData.isEmpty(), "VariantData is not empty");
|
||
|
QVERIFY2(0 == varData.rowCount(), "Wrong number of rows");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testClearNotEmptyData()
|
||
|
{
|
||
|
double expectedValue = 42.12309;
|
||
|
QVariant firstRow(expectedValue);
|
||
|
|
||
|
QList<QVariant> secondRow;
|
||
|
secondRow << QVariant("kkoo") << QVariant(771) << QVariant(3.14);
|
||
|
|
||
|
QStringList thirdRow;
|
||
|
thirdRow << "one" << "two" << "three";
|
||
|
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.addRow(firstRow);
|
||
|
varData.addRow(secondRow);
|
||
|
varData.addRow(thirdRow);
|
||
|
|
||
|
QVERIFY2(!varData.isEmpty(), "VariantData is empty");
|
||
|
QVERIFY2(3 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
varData.clear();
|
||
|
QVERIFY2(varData.isEmpty(), "VariantData is not empty");
|
||
|
QVERIFY2(0 == varData.rowCount(), "Wrong number of rows");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testInsertRows()
|
||
|
{
|
||
|
double expectedValue = 42.12309;
|
||
|
QVariant firstRow(expectedValue);
|
||
|
|
||
|
QList<QVariant> secondRow;
|
||
|
secondRow << QVariant("kkoo") << QVariant(771) << QVariant(3.14);
|
||
|
|
||
|
QStringList thirdRow;
|
||
|
thirdRow << "one" << "two" << "three";
|
||
|
|
||
|
QString stringOne("hey testing");
|
||
|
|
||
|
QtCSV::VariantData varData;
|
||
|
varData.insertRow(0, firstRow);
|
||
|
|
||
|
QVERIFY2(1 == varData.rowCount(), "Wrong number of rows");
|
||
|
QVERIFY2(1 == varData.rowValues(0).size(),
|
||
|
"Wrong number of elements in first row");
|
||
|
|
||
|
auto diff = expectedValue - varData.rowValues(0).at(0).toDouble();
|
||
|
QVERIFY2(diff <= EPSILON, "Wrong number in first row");
|
||
|
|
||
|
varData.addEmptyRow();
|
||
|
varData.addRow(stringOne);
|
||
|
varData.insertRow(1, secondRow);
|
||
|
varData.insertRow(100, thirdRow);
|
||
|
|
||
|
QVERIFY2(5 == varData.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
diff = expectedValue - varData.rowValues(0).at(0).toDouble();
|
||
|
QVERIFY2(diff <= EPSILON, "Wrong data for first row");
|
||
|
|
||
|
QStringList resultSecondRow = varData.rowValues(1);
|
||
|
QVERIFY2(secondRow.at(0).toString() == resultSecondRow.at(0)
|
||
|
&& secondRow.at(1).toString() == resultSecondRow.at(1)
|
||
|
&& secondRow.at(2).toString() == resultSecondRow.at(2),
|
||
|
"Wrong data for second row");
|
||
|
|
||
|
QVERIFY2(QStringList() == varData.rowValues(2), "Wrong data for third row");
|
||
|
|
||
|
QVERIFY2((QStringList() << stringOne) == varData.rowValues(3),
|
||
|
"Wrong data for fourth row");
|
||
|
|
||
|
QVERIFY2(thirdRow == varData.rowValues(4), "Wrong data for fifth row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testCompareForEquality()
|
||
|
{
|
||
|
QStringList firstRow, secondRow;
|
||
|
firstRow << "one" << "two" << "three";
|
||
|
secondRow << "four" << "five";
|
||
|
|
||
|
QtCSV::VariantData firstData;
|
||
|
firstData.addRow(firstRow);
|
||
|
firstData.addRow(secondRow);
|
||
|
|
||
|
QtCSV::VariantData secondData;
|
||
|
secondData.addRow(firstRow);
|
||
|
secondData.addRow(secondRow);
|
||
|
|
||
|
QVERIFY2(firstData == firstData,
|
||
|
"Failed to compare for equality same object");
|
||
|
QVERIFY2(!(firstData != firstData),
|
||
|
"Failed to compare for equality same object");
|
||
|
|
||
|
QVERIFY2(firstData == secondData, "Objects are not the same");
|
||
|
QVERIFY2(!(firstData != secondData), "Objects are not the same");
|
||
|
|
||
|
secondData.addRow(firstRow);
|
||
|
|
||
|
QVERIFY2(!(firstData == secondData), "Objects are the same");
|
||
|
QVERIFY2(firstData != secondData, "Objects are the same");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testCopyConstruction()
|
||
|
{
|
||
|
QStringList firstRow, secondRow;
|
||
|
firstRow << "one" << "two" << "three";
|
||
|
secondRow << "four" << "five";
|
||
|
|
||
|
QtCSV::VariantData firstData;
|
||
|
firstData.addRow(firstRow);
|
||
|
firstData.addRow(secondRow);
|
||
|
|
||
|
{
|
||
|
QtCSV::VariantData secondData(firstData);
|
||
|
|
||
|
QVERIFY2(firstData.rowCount() == secondData.rowCount(),
|
||
|
"Wrong number of rows");
|
||
|
QVERIFY2(firstRow == secondData.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(secondRow == secondData.rowValues(1), "Wrong data for second row");
|
||
|
}
|
||
|
|
||
|
QVERIFY2(2 == firstData.rowCount(), "Wrong number of rows");
|
||
|
QVERIFY2(firstRow == firstData.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(secondRow == firstData.rowValues(1), "Wrong data for second row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testCopyAssignment()
|
||
|
{
|
||
|
QStringList firstRow, secondRow;
|
||
|
firstRow << "one" << "two" << "three";
|
||
|
secondRow << "four" << "five";
|
||
|
|
||
|
QtCSV::VariantData firstData;
|
||
|
firstData.addRow(firstRow);
|
||
|
firstData.addRow(secondRow);
|
||
|
|
||
|
{
|
||
|
QtCSV::VariantData secondData;
|
||
|
secondData = firstData;
|
||
|
|
||
|
QVERIFY2(firstData.rowCount() == secondData.rowCount(),
|
||
|
"Wrong number of rows");
|
||
|
QVERIFY2(firstRow == secondData.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(secondRow == secondData.rowValues(1), "Wrong data for second row");
|
||
|
}
|
||
|
|
||
|
QVERIFY2(2 == firstData.rowCount(), "Wrong number of rows");
|
||
|
QVERIFY2(firstRow == firstData.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(secondRow == firstData.rowValues(1), "Wrong data for second row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testOperatorInput()
|
||
|
{
|
||
|
QtCSV::VariantData data;
|
||
|
data << QString("1") << QVariant(double(3.14));
|
||
|
|
||
|
QStringList thirdRow;
|
||
|
thirdRow << "one" << "two" << "three";
|
||
|
|
||
|
data << thirdRow;
|
||
|
|
||
|
QVERIFY2(3 == data.rowCount(), "Wrong number of rows");
|
||
|
|
||
|
QStringList expectedFirstRow, expectedSecondRow;
|
||
|
expectedFirstRow << "1";
|
||
|
expectedSecondRow << QVariant(double(3.14)).toString();
|
||
|
|
||
|
QVERIFY2(expectedFirstRow == data.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(expectedSecondRow == data.rowValues(1), "Wrong data for second row");
|
||
|
QVERIFY2(thirdRow == data.rowValues(2), "Wrong data for third row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testRemoveRow()
|
||
|
{
|
||
|
QtCSV::VariantData data;
|
||
|
data.removeRow(0);
|
||
|
data.removeRow(563);
|
||
|
|
||
|
QVERIFY2(data.isEmpty(), "Container is not empty");
|
||
|
|
||
|
QStringList valuesFirst, valuesSecond;
|
||
|
valuesFirst << "one" << "two" << "three";
|
||
|
valuesSecond << "asgreg" << "ertetw" << "";
|
||
|
|
||
|
QString stringOne("hey test"), stringTwo("sdfwioiouoioi");
|
||
|
|
||
|
data << valuesFirst << valuesSecond << stringOne << stringTwo;
|
||
|
|
||
|
data.removeRow(2);
|
||
|
|
||
|
QVERIFY2(3 == data.rowCount(), "Wrong number of rows");
|
||
|
QVERIFY2(valuesFirst == data.rowValues(0), "Wrong data for first row");
|
||
|
QVERIFY2(valuesSecond == data.rowValues(1), "Wrong data for second row");
|
||
|
QVERIFY2((QStringList() << stringTwo) == data.rowValues(2),
|
||
|
"Wrong data for third row");
|
||
|
}
|
||
|
|
||
|
void TestVariantData::testReplaceRow()
|
||
|
{
|
||
|
QStringList valuesFirst, valuesSecond;
|
||
|
valuesFirst << "one" << "two" << "three";
|
||
|
valuesSecond << "asgreg" << "ertetw" << "";
|
||
|
|
||
|
QString stringOne("hey test"), stringTwo("sdfwioiouoioi");
|
||
|
|
||
|
QtCSV::VariantData data;
|
||
|
data << valuesFirst << valuesSecond << stringOne;
|
||
|
|
||
|
data.replaceRow(0, stringTwo);
|
||
|
QVERIFY2((QStringList() << stringTwo) == data.rowValues(0),
|
||
|
"Wrong data for first row");
|
||
|
|
||
|
data.replaceRow(2, QStringList());
|
||
|
QVERIFY2(QStringList() == data.rowValues(2), "Wrong data for third row");
|
||
|
|
||
|
data.replaceRow(1, valuesFirst);
|
||
|
QVERIFY2(valuesFirst == data.rowValues(1), "Wrong data for second row");
|
||
|
}
|