forked from quickshell/quickshell
		
	popups: add popup windows
This commit is contained in:
		
							parent
							
								
									8cf0659444
								
							
						
					
					
						commit
						b675b3676c
					
				
					 20 changed files with 586 additions and 71 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
#include "../datastream.hpp"
 | 
			
		||||
#include "datastream.hpp"
 | 
			
		||||
 | 
			
		||||
#include <qbytearray.h>
 | 
			
		||||
#include <qlist.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -7,20 +7,18 @@
 | 
			
		|||
#include <qsignalspy.h>
 | 
			
		||||
#include <qtest.h>
 | 
			
		||||
#include <qtestcase.h>
 | 
			
		||||
#include <qtmetamacros.h>
 | 
			
		||||
 | 
			
		||||
class TestSplitParser: public QObject {
 | 
			
		||||
	Q_OBJECT;
 | 
			
		||||
private slots:
 | 
			
		||||
	void splits_data() { // NOLINT
 | 
			
		||||
		QTest::addColumn<QString>("mark");
 | 
			
		||||
		QTest::addColumn<QString>("buffer");   // max that can go in the buffer
 | 
			
		||||
		QTest::addColumn<QString>("incoming"); // data that has to be tested on the end in one go
 | 
			
		||||
		QTest::addColumn<QList<QString>>("results");
 | 
			
		||||
		QTest::addColumn<QString>("remainder");
 | 
			
		||||
#include "../datastream.hpp"
 | 
			
		||||
 | 
			
		||||
		// NOLINTBEGIN
 | 
			
		||||
		// clang-format off
 | 
			
		||||
void TestSplitParser::splits_data() { // NOLINT
 | 
			
		||||
	QTest::addColumn<QString>("mark");
 | 
			
		||||
	QTest::addColumn<QString>("buffer");   // max that can go in the buffer
 | 
			
		||||
	QTest::addColumn<QString>("incoming"); // data that has to be tested on the end in one go
 | 
			
		||||
	QTest::addColumn<QList<QString>>("results");
 | 
			
		||||
	QTest::addColumn<QString>("remainder");
 | 
			
		||||
 | 
			
		||||
	// NOLINTBEGIN
 | 
			
		||||
	// clang-format off
 | 
			
		||||
		QTest::addRow("simple") << "-"
 | 
			
		||||
			<< "foo" << "-"
 | 
			
		||||
			<< QList<QString>("foo") << "";
 | 
			
		||||
| 
						 | 
				
			
			@ -40,71 +38,69 @@ private slots:
 | 
			
		|||
		QTest::addRow("longsplit-incomplete") << "123"
 | 
			
		||||
			<< "foo12" << "3bar123baz"
 | 
			
		||||
			<< QList<QString>({ "foo", "bar" }) << "baz";
 | 
			
		||||
		// clang-format on
 | 
			
		||||
		// NOLINTEND
 | 
			
		||||
	}
 | 
			
		||||
	// clang-format on
 | 
			
		||||
	// NOLINTEND
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
	void splits() { // NOLINT
 | 
			
		||||
		// NOLINTBEGIN
 | 
			
		||||
		QFETCH(QString, mark);
 | 
			
		||||
		QFETCH(QString, buffer);
 | 
			
		||||
		QFETCH(QString, incoming);
 | 
			
		||||
		QFETCH(QList<QString>, results);
 | 
			
		||||
		QFETCH(QString, remainder);
 | 
			
		||||
		// NOLINTEND
 | 
			
		||||
void TestSplitParser::splits() { // NOLINT
 | 
			
		||||
	// NOLINTBEGIN
 | 
			
		||||
	QFETCH(QString, mark);
 | 
			
		||||
	QFETCH(QString, buffer);
 | 
			
		||||
	QFETCH(QString, incoming);
 | 
			
		||||
	QFETCH(QList<QString>, results);
 | 
			
		||||
	QFETCH(QString, remainder);
 | 
			
		||||
	// NOLINTEND
 | 
			
		||||
 | 
			
		||||
		auto bufferArray = buffer.toUtf8();
 | 
			
		||||
		auto incomingArray = incoming.toUtf8();
 | 
			
		||||
	auto bufferArray = buffer.toUtf8();
 | 
			
		||||
	auto incomingArray = incoming.toUtf8();
 | 
			
		||||
 | 
			
		||||
		for (auto i = 0; i <= bufferArray.length(); i++) {
 | 
			
		||||
			auto buffer = bufferArray.sliced(0, i);
 | 
			
		||||
			auto incoming = bufferArray.sliced(i);
 | 
			
		||||
			incoming.append(incomingArray);
 | 
			
		||||
	for (auto i = 0; i <= bufferArray.length(); i++) {
 | 
			
		||||
		auto buffer = bufferArray.sliced(0, i);
 | 
			
		||||
		auto incoming = bufferArray.sliced(i);
 | 
			
		||||
		incoming.append(incomingArray);
 | 
			
		||||
 | 
			
		||||
			qInfo() << "BUFFER" << QString(buffer);
 | 
			
		||||
			qInfo() << "INCOMING" << QString(incoming);
 | 
			
		||||
		qInfo() << "BUFFER" << QString(buffer);
 | 
			
		||||
		qInfo() << "INCOMING" << QString(incoming);
 | 
			
		||||
 | 
			
		||||
			auto parser = SplitParser();
 | 
			
		||||
			auto spy = QSignalSpy(&parser, &DataStreamParser::read);
 | 
			
		||||
 | 
			
		||||
			parser.setSplitMarker(mark);
 | 
			
		||||
			parser.parseBytes(incoming, buffer);
 | 
			
		||||
 | 
			
		||||
			auto actualResults = QList<QString>();
 | 
			
		||||
			for (auto& read: spy) {
 | 
			
		||||
				actualResults.push_back(read[0].toString());
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			qInfo() << "EXPECTED RESULTS" << results;
 | 
			
		||||
			qInfo() << "ACTUAL RESULTS" << actualResults;
 | 
			
		||||
			qInfo() << "EXPECTED REMAINDER" << remainder;
 | 
			
		||||
			qInfo() << "ACTUAL REMAINDER" << remainder;
 | 
			
		||||
			QCOMPARE(actualResults, results);
 | 
			
		||||
			QCOMPARE(buffer, remainder);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	void initBuffer() { // NOLINT
 | 
			
		||||
		auto parser = SplitParser();
 | 
			
		||||
		auto spy = QSignalSpy(&parser, &DataStreamParser::read);
 | 
			
		||||
 | 
			
		||||
		auto buf = QString("foo-bar-baz").toUtf8();
 | 
			
		||||
		auto expected = QList<QString>({"foo", "bar"});
 | 
			
		||||
 | 
			
		||||
		parser.setSplitMarker("-");
 | 
			
		||||
		parser.parseBytes(buf, buf);
 | 
			
		||||
		parser.setSplitMarker(mark);
 | 
			
		||||
		parser.parseBytes(incoming, buffer);
 | 
			
		||||
 | 
			
		||||
		auto actualResults = QList<QString>();
 | 
			
		||||
		for (auto& read: spy) {
 | 
			
		||||
			actualResults.push_back(read[0].toString());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		qInfo() << "EXPECTED RESULTS" << expected;
 | 
			
		||||
		qInfo() << "EXPECTED RESULTS" << results;
 | 
			
		||||
		qInfo() << "ACTUAL RESULTS" << actualResults;
 | 
			
		||||
		QCOMPARE(actualResults, expected);
 | 
			
		||||
		QCOMPARE(buf, "baz");
 | 
			
		||||
		qInfo() << "EXPECTED REMAINDER" << remainder;
 | 
			
		||||
		qInfo() << "ACTUAL REMAINDER" << remainder;
 | 
			
		||||
		QCOMPARE(actualResults, results);
 | 
			
		||||
		QCOMPARE(buffer, remainder);
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QTEST_MAIN(TestSplitParser)
 | 
			
		||||
#include "datastream.moc"
 | 
			
		||||
void TestSplitParser::initBuffer() { // NOLINT
 | 
			
		||||
	auto parser = SplitParser();
 | 
			
		||||
	auto spy = QSignalSpy(&parser, &DataStreamParser::read);
 | 
			
		||||
 | 
			
		||||
	auto buf = QString("foo-bar-baz").toUtf8();
 | 
			
		||||
	auto expected = QList<QString>({"foo", "bar"});
 | 
			
		||||
 | 
			
		||||
	parser.setSplitMarker("-");
 | 
			
		||||
	parser.parseBytes(buf, buf);
 | 
			
		||||
 | 
			
		||||
	auto actualResults = QList<QString>();
 | 
			
		||||
	for (auto& read: spy) {
 | 
			
		||||
		actualResults.push_back(read[0].toString());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	qInfo() << "EXPECTED RESULTS" << expected;
 | 
			
		||||
	qInfo() << "ACTUAL RESULTS" << actualResults;
 | 
			
		||||
	QCOMPARE(actualResults, expected);
 | 
			
		||||
	QCOMPARE(buf, "baz");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QTEST_MAIN(TestSplitParser);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								src/io/test/datastream.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/io/test/datastream.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <qobject.h>
 | 
			
		||||
#include <qtmetamacros.h>
 | 
			
		||||
 | 
			
		||||
class TestSplitParser: public QObject {
 | 
			
		||||
	Q_OBJECT;
 | 
			
		||||
 | 
			
		||||
private slots:
 | 
			
		||||
	void splits_data(); // NOLINT
 | 
			
		||||
	void splits();
 | 
			
		||||
	void initBuffer();
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue