Bug 1915045 Ensure decode tasks are scheduled on BufferingState::Enter() r=media...
[gecko.git] / js / xpconnect / tests / unit / test_generateQI.js
blobd54ed53212bea475e1e5a9541f175ffc54fdec89
1 "use strict";
3 add_task(async function test_generateQI() {
4   function checkQI(interfaces, iface) {
5     let obj = {
6       QueryInterface: ChromeUtils.generateQI(interfaces),
7     };
8     equal(obj.QueryInterface(iface), obj,
9          `Correct return value for query to ${iface}`);
10   }
12   // Test success scenarios.
13   checkQI([], Ci.nsISupports);
15   checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2"], Ci.nsIPropertyBag);
16   checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2"], Ci.nsIPropertyBag2);
18   checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2", "nsINotARealInterface"], Ci.nsIPropertyBag2);
20   // Non-IID values get stringified, and don't cause any errors as long
21   // as there isn't a non-IID property with the same name on Ci.
22   checkQI([Ci.nsIPropertyBag, "nsIPropertyBag2", null, Object], Ci.nsIPropertyBag2);
24   ChromeUtils.generateQI([])(Ci.nsISupports);
26   // Test failure scenarios.
27   Assert.throws(() => checkQI([], Ci.nsIPropertyBag),
28                 e => e.result == Cr.NS_ERROR_NO_INTERFACE);
29 });