| 762 | } |
| 763 | |
| 764 | void CoordXmlTest::readCompressed() |
| 765 | { |
| 766 | QFETCH(int, num_coords); |
| 767 | MapCoordVector coords(num_coords, proto_coord); |
| 768 | |
| 769 | buffer.buffer().truncate(0); |
| 770 | QBuffer header; |
| 771 | { |
| 772 | QXmlStreamWriter xml(&header); |
| 773 | |
| 774 | header.open(QBuffer::ReadWrite); |
| 775 | xml.setAutoFormatting(false); |
| 776 | xml.writeStartDocument(); |
| 777 | xml.writeStartElement(QString::fromLatin1("root")); |
| 778 | xml.writeCharacters(QString{}); // flush root start element |
| 779 | |
| 780 | buffer.open(QBuffer::ReadWrite); |
| 781 | xml.setDevice(&buffer); |
| 782 | xml.writeStartElement(QString::fromLatin1("coords")); |
| 783 | writeCompressed_implementation(coords, xml); |
| 784 | xml.writeEndElement(); |
| 785 | |
| 786 | xml.setDevice(nullptr); |
| 787 | |
| 788 | buffer.close(); |
| 789 | header.close(); |
| 790 | } |
| 791 | |
| 792 | header.open(QBuffer::ReadOnly); |
| 793 | buffer.open(QBuffer::ReadOnly); |
| 794 | QXmlStreamReader xml; |
| 795 | xml.addData(header.buffer()); |
| 796 | |
| 797 | xml.readNextStartElement(); |
| 798 | QCOMPARE(xml.name().toString(), QString::fromLatin1("root")); |
| 799 | |
| 800 | bool failed = false; |
| 801 | QBENCHMARK |
| 802 | { |
| 803 | // benchmark iteration overhead |
| 804 | coords.clear(); |
| 805 | xml.addData(buffer.data()); |
| 806 | xml.readNextStartElement(); |
| 807 | if (xml.name() != QLatin1String("coords")) |
| 808 | { |
| 809 | failed = true; |
| 810 | break; |
| 811 | } |
| 812 | |
| 813 | for( xml.readNext(); |
| 814 | xml.tokenType() != QXmlStreamReader::EndElement; |
| 815 | xml.readNext() ) |
| 816 | { |
| 817 | if (xml.error()) |
| 818 | { |
| 819 | qDebug() << xml.errorString(); |
| 820 | failed = true; |
| 821 | break; |
nothing calls this directly
no test coverage detected