summaryrefslogtreecommitdiffstats
path: root/devtools/client/shadereditor/test/browser_se_programs-cache.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/shadereditor/test/browser_se_programs-cache.js')
-rw-r--r--devtools/client/shadereditor/test/browser_se_programs-cache.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/devtools/client/shadereditor/test/browser_se_programs-cache.js b/devtools/client/shadereditor/test/browser_se_programs-cache.js
new file mode 100644
index 000000000..5e5708e44
--- /dev/null
+++ b/devtools/client/shadereditor/test/browser_se_programs-cache.js
@@ -0,0 +1,41 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Tests that program and shader actors are cached in the frontend.
+ */
+
+function* ifWebGLSupported() {
+ let { target, debuggee, panel } = yield initShaderEditor(MULTIPLE_CONTEXTS_URL);
+ let { EVENTS, gFront, ShadersListView, ShadersEditorsView } = panel.panelWin;
+
+ reload(target);
+ let [[programActor]] = yield promise.all([
+ getPrograms(gFront, 1),
+ once(panel.panelWin, EVENTS.SOURCES_SHOWN)
+ ]);
+
+ let programItem = ShadersListView.selectedItem;
+
+ is(programItem.attachment.programActor, programActor,
+ "The correct program actor is cached for the selected item.");
+
+ is((yield programActor.getVertexShader()),
+ (yield programItem.attachment.vs),
+ "The cached vertex shader promise returns the correct actor.");
+
+ is((yield programActor.getFragmentShader()),
+ (yield programItem.attachment.fs),
+ "The cached fragment shader promise returns the correct actor.");
+
+ is((yield (yield programActor.getVertexShader()).getText()),
+ (yield (yield ShadersEditorsView._getEditor("vs")).getText()),
+ "The cached vertex shader promise returns the correct text.");
+
+ is((yield (yield programActor.getFragmentShader()).getText()),
+ (yield (yield ShadersEditorsView._getEditor("fs")).getText()),
+ "The cached fragment shader promise returns the correct text.");
+
+ yield teardown(panel);
+ finish();
+}