@@ -61,6 +61,12 @@ Item {
6161 signalName: "setCurrentScopeCalled"
6262 }
6363
64+ SignalSpy {
65+ id: surfaceSpy
66+ target: SurfaceManager
67+ signalName: "surfaceDestroyed"
68+ }
69+
6470 UT.UnityTestCase {
6571 name: "Shell"
6672 when: windowShown
@@ -431,5 +437,127 @@ Item {
431437
432438 touchRelease(shell);
433439 }
440+
441+ function test_promptSurfaces_data() {
442+ return [ { tag: "1", count: 1 },
443+ { tag: "4", count: 4 } ];
444+ }
445+
446+ function test_promptSurfaces(data) {
447+ ApplicationManager.requestFocusApplication("unity8-dash");
448+ waitUntilDashIsFocused();
449+
450+ var appDelegate = findChild(shell, "appDelegate0")
451+ var surfaceContainer = findChild(appDelegate, "surfaceContainer");
452+
453+ var i;
454+ var surfaces = [];
455+ compare(surfaceContainer.promptSurfaces.count, 0);
456+ for (i = 0; i < data.count; i++) {
457+ surfaces.push(ApplicationTest.addPromptSurface("unity8-dash", Qt.resolvedUrl("Dash/artwork/music-player-design.png")));
458+ compare(surfaceContainer.promptSurfaces.count, i+1);
459+ }
460+
461+ surfaceSpy.clear();
462+ for (i = data.count-1; i >= 0; i--) {
463+ ApplicationTest.removeSurface(surfaces[i]);
464+ tryCompare(surfaceContainer.promptSurfaces, "count", i);
465+ }
466+ tryCompare(surfaceSpy, "count", data.count)
467+ }
468+
469+ function test_removeFirstPromptSurface_data() {
470+ return [ { tag: "1", count: 1 },
471+ { tag: "4", count: 4 } ];
472+ }
473+
474+ function test_removeFirstPromptSurface(data) {
475+ ApplicationManager.requestFocusApplication("unity8-dash");
476+ waitUntilDashIsFocused();
477+
478+ var appDelegate = findChild(shell, "appDelegate0")
479+ var surfaceContainer = findChild(appDelegate, "surfaceContainer");
480+
481+ var i;
482+ var surfaces = [];
483+ compare(surfaceContainer.promptSurfaces.count, 0);
484+ for (i = 0; i < data.count; i++) {
485+ surfaces.push(ApplicationTest.addPromptSurface("unity8-dash", Qt.resolvedUrl("Dash/artwork/music-player-design.png")));
486+ compare(surfaceContainer.promptSurfaces.count, i+1);
487+ }
488+
489+ surfaceSpy.clear();
490+ ApplicationTest.removeSurface(surfaces[0]);
491+ tryCompare(surfaceContainer.promptSurfaces, "count", 0);
492+ tryCompare(surfaceSpy, "count", data.count)
493+ }
494+
495+ function test_childSurfaces_data() {
496+ return [ { tag: "1", count: 1 },
497+ { tag: "4", count: 4 } ];
498+ }
499+
500+ function test_childSurfaces(data) {
501+ ApplicationManager.requestFocusApplication("unity8-dash");
502+ waitUntilDashIsFocused();
503+
504+ var appDelegate = findChild(shell, "appDelegate0")
505+ var surfaceContainer = findChild(appDelegate, "surfaceContainer");
506+
507+ var i;
508+ var surfaces = [];
509+ compare(surfaceContainer.childSurfaces.count, 0);
510+ for (i = 0; i < data.count; i++) {
511+ surfaces.push(ApplicationTest.addChildSurface("unity8-dash", 0, Qt.resolvedUrl("Dash/artwork/music-player-design.png")));
512+ compare(surfaceContainer.childSurfaces.count, i+1);
513+ }
514+
515+ surfaceSpy.clear();
516+ for (i = data.count-1; i >= 0; i--) {
517+ ApplicationTest.removeSurface(surfaces[i]);
518+ tryCompare(surfaceContainer.childSurfaces, "count", i);
519+ }
520+ tryCompare(surfaceSpy, "count", data.count)
521+ }
522+
523+ function test_tieredChildSurfaces_data() {
524+ return [
525+ { tag: "2", count: 2 },
526+ { tag: "10", count: 10 }
527+ ];
528+ }
529+
530+ function test_tieredChildSurfaces(data) {
531+ ApplicationManager.requestFocusApplication("unity8-dash");
532+ waitUntilDashIsFocused();
533+
534+ var delegate = findChild(shell, "appDelegate0")
535+ var surfaceContainer = findChild(delegate, "surfaceContainer");
536+
537+ var i;
538+ var surfaces = [];
539+ var lastSurfaceId = 0;
540+ compare(surfaceContainer.childSurfaces.count, 0);
541+ for (i = 0; i < data.count; i++) {
542+ lastSurfaceId = ApplicationTest.addChildSurface("unity8-dash", lastSurfaceId, Qt.resolvedUrl("Dash/artwork/music-player-design.png"))
543+ surfaces.push(lastSurfaceId);
544+
545+ compare(surfaceContainer.childSurfaces.count, 1);
546+
547+ delegate = findChild(surfaceContainer, "childDelegate0");
548+ surfaceContainer = findChild(delegate, "surfaceContainer");
549+ }
550+
551+ surfaceSpy.clear();
552+ for (i = data.count-1; i >= 0; i--) {
553+ ApplicationTest.removeSurface(surfaces[i]);
554+ }
555+
556+ delegate = findChild(shell, "appDelegate0")
557+ surfaceContainer = findChild(delegate, "surfaceContainer");
558+
559+ compare(surfaceContainer.childSurfaces.count, 0);
560+ tryCompare(surfaceSpy, "count", data.count)
561+ }
434562 }
435563}