diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2020-04-09 13:34:01 +0200 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2020-05-06 10:45:48 +0200 |
commit | a714a3a446a47b3ac18de6cea1e6c4ca01535170 (patch) | |
tree | 2569eb6ec42f4b537bc18477b88d9a718f444012 /tests/auto/qml/qqmlecmascript | |
parent | 22f9e5fb1ed643f284f50b9417bdbafdfb20566b (diff) |
Implement URLSearchParams
Implements URLSearchParams (https://url.spec.whatwg.org/#urlsearchparams),
completing our implementation of the URL object.
Still needs the for..of iterator to get implemented.
Change-Id: Iad33ed2f3fe0b2598ca2b0b21a4743f5f7dc19fd
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'tests/auto/qml/qqmlecmascript')
-rw-r--r-- | tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp index a2a56fd04e..dc5646be52 100644 --- a/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ b/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -386,6 +386,8 @@ private slots: void urlConstruction(); void urlPropertyInvalid(); void urlPropertySet(); + void urlSearchParamsConstruction(); + void urlSearchParamsMethods(); void gcCrashRegressionTest(); @@ -9473,6 +9475,63 @@ void tst_qqmlecmascript::urlPropertySet() QCOMPARE(url->hash(), "#hash"); } + +void tst_qqmlecmascript::urlSearchParamsConstruction() +{ + QQmlEngine qmlengine; + + QObject *o = new QObject(&qmlengine); + + QV4::ExecutionEngine *engine = qmlengine.handle(); + QV4::Scope scope(engine); + + QV4::ScopedValue object(scope, QV4::QObjectWrapper::wrap(engine, o)); + + // Invalid number of arguments + QVERIFY(EVALUATE_ERROR("new URLSearchParams('a', 'b')")); + + // Invalid arguments + QVERIFY(EVALUATE_ERROR("new URLSearchParams([['a', 'b', 'c']])")); + QVERIFY(EVALUATE_ERROR("new URLSearchParams([[]])")); + + // Valid URLSearchParams + QVERIFY(EVALUATE_VALUE("new URLSearchParams('a=1&b=2&c=3').toString()", QV4::ScopedValue(scope, scope.engine->newString("a=1&b=2&c=3")))); + QVERIFY(EVALUATE_VALUE("new URLSearchParams([['a', '1'], ['b', '2'], ['c', '3']]).toString()", QV4::ScopedValue(scope, scope.engine->newString("a=1&b=2&c=3")))); + QVERIFY(EVALUATE_VALUE("new URLSearchParams({a: 1, b: 2, c: 3}).toString()", QV4::ScopedValue(scope, scope.engine->newString("a=1&b=2&c=3")))); +} + +void tst_qqmlecmascript::urlSearchParamsMethods() +{ + QQmlEngine qmlengine; + + QObject *o = new QObject(&qmlengine); + + QV4::ExecutionEngine *engine = qmlengine.handle(); + QV4::Scope scope(engine); + + QV4::ScopedValue object(scope, QV4::QObjectWrapper::wrap(engine, o)); + + QV4::ScopedValue ret(scope, EVALUATE("this.usp = new URLSearchParams('a=1&a=2&a=3&b=4');")); + QV4::UrlSearchParamsObject *url = ret->as<QV4::UrlSearchParamsObject>(); + QVERIFY(url != nullptr); + + // has + QVERIFY(EVALUATE_VALUE("this.usp.has('a');", QV4::Primitive::fromBoolean(true))); + // get + QVERIFY(EVALUATE_VALUE("this.usp.get('a');", QV4::ScopedValue(scope, scope.engine->newString("1")))); + // getAll + QVERIFY(EVALUATE_VALUE("this.usp.getAll('a').join(',');", QV4::ScopedValue(scope, scope.engine->newString("1,2,3")))); + // delete + QVERIFY(EVALUATE_VALUE("this.usp.delete('b');", QV4::Primitive::undefinedValue())); + // set + QVERIFY(EVALUATE_VALUE("this.usp.set('a', 10);", QV4::Primitive::undefinedValue())); + // append + QVERIFY(EVALUATE_VALUE("this.usp.set('c', 'foo');", QV4::Primitive::undefinedValue())); + + // Verify the end result + QVERIFY(EVALUATE_VALUE("this.usp.toString()", QV4::ScopedValue(scope, scope.engine->newString("a=10&c=foo")))); +} + QTEST_MAIN(tst_qqmlecmascript) #include "tst_qqmlecmascript.moc" |