| 569 | } |
| 570 | |
| 571 | void CoordXmlTest::readHumanReadableStringRef() |
| 572 | { |
| 573 | namespace literal = XmlStreamLiteral; |
| 574 | |
| 575 | QFETCH(int, num_coords); |
| 576 | MapCoordVector coords(num_coords, proto_coord); |
| 577 | |
| 578 | buffer.buffer().truncate(0); |
| 579 | QBuffer header; |
| 580 | { |
| 581 | QXmlStreamWriter xml(&header); |
| 582 | |
| 583 | header.open(QBuffer::ReadWrite); |
| 584 | xml.setAutoFormatting(false); |
| 585 | xml.writeStartDocument(); |
| 586 | xml.writeStartElement(QString::fromLatin1("root")); |
| 587 | xml.writeCharacters(QString{}); // flush root start element |
| 588 | |
| 589 | buffer.open(QBuffer::ReadWrite); |
| 590 | xml.setDevice(&buffer); |
| 591 | xml.writeStartElement(QString::fromLatin1("coords")); |
| 592 | // Using the more efficient string implementation. |
| 593 | writeHumanReadableString_implementation(coords, xml); |
| 594 | xml.writeEndElement(); |
| 595 | |
| 596 | xml.setDevice(nullptr); |
| 597 | |
| 598 | buffer.close(); |
| 599 | header.close(); |
| 600 | } |
| 601 | |
| 602 | header.open(QBuffer::ReadOnly); |
| 603 | buffer.open(QBuffer::ReadOnly); |
| 604 | QXmlStreamReader xml; |
| 605 | xml.addData(header.buffer()); |
| 606 | xml.readNextStartElement(); |
| 607 | QCOMPARE(xml.name().toString(), QString::fromLatin1("root")); |
| 608 | |
| 609 | bool failed = false; |
| 610 | QBENCHMARK |
| 611 | { |
| 612 | // benchmark iteration overhead |
| 613 | coords.clear(); |
| 614 | xml.addData(buffer.data()); |
| 615 | |
| 616 | xml.readNextStartElement(); |
| 617 | if (xml.name() != QLatin1String("coords")) |
| 618 | { |
| 619 | failed = true; |
| 620 | break; |
| 621 | } |
| 622 | |
| 623 | for( xml.readNext(); |
| 624 | xml.tokenType() != QXmlStreamReader::EndElement; |
| 625 | xml.readNext() ) |
| 626 | { |
| 627 | if (xml.error()) |
| 628 | { |
nothing calls this directly
no test coverage detected