| 293 | |
| 294 | |
| 295 | void MapTest::crtFileTest() |
| 296 | { |
| 297 | auto original = symbol_set_dir.absoluteFilePath(QString::fromLatin1("src/ISOM2000_15000.xmap")); |
| 298 | Map original_map; |
| 299 | QVERIFY(original_map.loadFrom(original)); |
| 300 | QVERIFY(original_map.getNumSymbols() > 100); |
| 301 | |
| 302 | auto crt_data = QByteArray{ |
| 303 | "101 104\n" |
| 304 | "102 105_text \n" |
| 305 | "123456 106 \n" |
| 306 | }; |
| 307 | QBuffer buffer{&crt_data}; |
| 308 | buffer.open(QIODevice::ReadOnly); |
| 309 | QTextStream stream{&buffer}; |
| 310 | auto r = SymbolRuleSet::loadCrt(stream, original_map); |
| 311 | QCOMPARE(stream.status(), QTextStream::Ok); |
| 312 | QCOMPARE(r.size(), std::size_t(3)); |
| 313 | |
| 314 | QCOMPARE(r[0].type, SymbolRule::DefinedAssignment); |
| 315 | QCOMPARE(r[0].symbol->getNumberAsString(), QString::fromLatin1("101")); |
| 316 | QCOMPARE(r[0].query.getOperator(), ObjectQuery::OperatorSearch); |
| 317 | QCOMPARE(r[0].query.tagOperands()->value, QString::fromLatin1("104")); |
| 318 | QVERIFY(r[0].query.tagOperands()->key.isEmpty()); |
| 319 | |
| 320 | QCOMPARE(r[1].type, SymbolRule::DefinedAssignment); |
| 321 | QCOMPARE(r[1].symbol->getNumberAsString(), QString::fromLatin1("102")); |
| 322 | QCOMPARE(r[1].query.getOperator(), ObjectQuery::OperatorSearch); |
| 323 | QCOMPARE(r[1].query.tagOperands()->value, QString::fromLatin1("105_text")); |
| 324 | QVERIFY(r[1].query.tagOperands()->key.isEmpty()); |
| 325 | |
| 326 | QCOMPARE(r[2].type, SymbolRule::NoAssignment); // no 123456 in ISOM2000 |
| 327 | QCOMPARE(r[2].query.getOperator(), ObjectQuery::OperatorSearch); |
| 328 | QCOMPARE(r[2].query.tagOperands()->value, QString::fromLatin1("106")); |
| 329 | QVERIFY(r[2].query.tagOperands()->key.isEmpty()); |
| 330 | |
| 331 | QCOMPARE(r.squeezed().size(), std::size_t(2)); |
| 332 | |
| 333 | QBuffer out_buffer; |
| 334 | out_buffer.open(QIODevice::WriteOnly); |
| 335 | QTextStream out_stream{&out_buffer}; |
| 336 | r.writeCrt(out_stream); |
| 337 | out_stream.flush(); |
| 338 | out_buffer.close(); |
| 339 | const auto result = QString::fromLatin1(out_buffer.buffer()); |
| 340 | QVERIFY(result.contains(QRegularExpression(QLatin1String("^101 *104$", QRegularExpression::MultilineOption)))); |
| 341 | QVERIFY(result.contains(QRegularExpression(QLatin1String("102 *105_text$", QRegularExpression::MultilineOption)))); |
| 342 | QVERIFY(!result.contains(QLatin1String("123456"))); |
| 343 | QVERIFY(!result.contains(QLatin1String("106"))); |
| 344 | } |
| 345 | |
| 346 | |
| 347 |
nothing calls this directly
no test coverage detected