Skip to content

Commit a89237b

Browse files
test: add delay for AudioListener tests in Firefox
1 parent 2dcf7cc commit a89237b

File tree

1 file changed

+72
-49
lines changed

1 file changed

+72
-49
lines changed

test/integration/audio-listener.js

Lines changed: 72 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,8 @@ if (typeof window !== 'undefined') {
223223

224224
renderer = createRenderer({
225225
context,
226-
length: context.length === undefined ? 5 : undefined,
226+
// Bug #117: Firefox has AudioParam implementation so far.
227+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
227228
setup(destination) {
228229
const constantSourceNode = new ConstantSourceNode(context);
229230
const pannerNode = new PannerNode(context, {
@@ -269,11 +270,13 @@ if (typeof window !== 'undefined') {
269270
constantSourceNode.start(startTime);
270271
}
271272
}).then((channelData) => {
272-
expect(channelData[0]).to.be.closeTo(0.00651345, 0.00000001);
273-
expect(channelData[1]).to.be.closeTo(0.00651345, 0.00000001);
274-
expect(channelData[2]).to.be.closeTo(0.00651345, 0.00000001);
275-
expect(channelData[3]).to.be.closeTo(0.00651345, 0.00000001);
276-
expect(channelData[4]).to.be.closeTo(0.00651345, 0.00000001);
273+
const offset = channelData.length === 5 ? 0 : 768;
274+
275+
expect(channelData[offset + 0]).to.be.closeTo(0.00651345, 0.00000001);
276+
expect(channelData[offset + 1]).to.be.closeTo(0.00651345, 0.00000001);
277+
expect(channelData[offset + 2]).to.be.closeTo(0.00651345, 0.00000001);
278+
expect(channelData[offset + 3]).to.be.closeTo(0.00651345, 0.00000001);
279+
expect(channelData[offset + 4]).to.be.closeTo(0.00651345, 0.00000001);
277280
});
278281
});
279282
});
@@ -473,7 +476,8 @@ if (typeof window !== 'undefined') {
473476

474477
renderer = createRenderer({
475478
context,
476-
length: context.length === undefined ? 5 : undefined,
479+
// Bug #117: Firefox has AudioParam implementation so far.
480+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
477481
setup(destination) {
478482
const constantSourceNode = new ConstantSourceNode(context);
479483
const pannerNode = new PannerNode(context, {
@@ -519,11 +523,13 @@ if (typeof window !== 'undefined') {
519523
constantSourceNode.start(startTime);
520524
}
521525
}).then((channelData) => {
522-
expect(channelData[0]).to.be.closeTo(0.007035482, 0.00000001);
523-
expect(channelData[1]).to.be.closeTo(0.007035482, 0.00000001);
524-
expect(channelData[2]).to.be.closeTo(0.007035482, 0.00000001);
525-
expect(channelData[3]).to.be.closeTo(0.007035482, 0.00000001);
526-
expect(channelData[4]).to.be.closeTo(0.007035482, 0.00000001);
526+
const offset = channelData.length === 5 ? 0 : 768;
527+
528+
expect(channelData[offset + 0]).to.be.closeTo(0.007035482, 0.00000001);
529+
expect(channelData[offset + 1]).to.be.closeTo(0.007035482, 0.00000001);
530+
expect(channelData[offset + 2]).to.be.closeTo(0.007035482, 0.00000001);
531+
expect(channelData[offset + 3]).to.be.closeTo(0.007035482, 0.00000001);
532+
expect(channelData[offset + 4]).to.be.closeTo(0.007035482, 0.00000001);
527533
});
528534
});
529535
});
@@ -723,7 +729,8 @@ if (typeof window !== 'undefined') {
723729

724730
renderer = createRenderer({
725731
context,
726-
length: context.length === undefined ? 5 : undefined,
732+
// Bug #117: Firefox has AudioParam implementation so far.
733+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
727734
setup(destination) {
728735
const constantSourceNode = new ConstantSourceNode(context);
729736
const pannerNode = new PannerNode(context, {
@@ -751,11 +758,13 @@ if (typeof window !== 'undefined') {
751758
constantSourceNode.start(startTime);
752759
}
753760
}).then((channelData) => {
754-
expect(channelData[0]).to.be.closeTo(0.00651345, 0.00000001);
755-
expect(channelData[1]).to.be.closeTo(0.00651345, 0.00000001);
756-
expect(channelData[2]).to.be.closeTo(0.00651345, 0.00000001);
757-
expect(channelData[3]).to.be.closeTo(0.00651345, 0.00000001);
758-
expect(channelData[4]).to.be.closeTo(0.00651345, 0.00000001);
761+
const offset = channelData.length === 5 ? 0 : 768;
762+
763+
expect(channelData[offset + 0]).to.be.closeTo(0.00651345, 0.00000001);
764+
expect(channelData[offset + 1]).to.be.closeTo(0.00651345, 0.00000001);
765+
expect(channelData[offset + 2]).to.be.closeTo(0.00651345, 0.00000001);
766+
expect(channelData[offset + 3]).to.be.closeTo(0.00651345, 0.00000001);
767+
expect(channelData[offset + 4]).to.be.closeTo(0.00651345, 0.00000001);
759768
});
760769
});
761770
});
@@ -772,7 +781,7 @@ if (typeof window !== 'undefined') {
772781
constantSourceNode.start(startTime);
773782
}
774783
}).then((channelData) => {
775-
expect(Array.from(channelData)).to.deep.equal([
784+
expect(Array.from(channelData).slice(channelData.length === 5 ? 0 : 768)).to.deep.equal([
776785
0.0064865294843912125, 0.0064865294843912125, 0.0064865294843912125, 0.0064865294843912125,
777786
0.0064865294843912125
778787
]);
@@ -975,7 +984,8 @@ if (typeof window !== 'undefined') {
975984

976985
renderer = createRenderer({
977986
context,
978-
length: context.length === undefined ? 5 : undefined,
987+
// Bug #117: Firefox has AudioParam implementation so far.
988+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
979989
setup(destination) {
980990
const constantSourceNode = new ConstantSourceNode(context);
981991
const pannerNode = new PannerNode(context, {
@@ -1021,7 +1031,7 @@ if (typeof window !== 'undefined') {
10211031
constantSourceNode.start(startTime);
10221032
}
10231033
}).then((channelData) => {
1024-
expect(Array.from(channelData)).to.deep.equal([
1034+
expect(Array.from(channelData).slice(channelData.length === 5 ? 0 : 768)).to.deep.equal([
10251035
0.007035974878817797, 0.007035974878817797, 0.007035974878817797, 0.007035974878817797,
10261036
0.007035974878817797
10271037
]);
@@ -1224,7 +1234,8 @@ if (typeof window !== 'undefined') {
12241234

12251235
renderer = createRenderer({
12261236
context,
1227-
length: context.length === undefined ? 5 : undefined,
1237+
// Bug #117: Firefox has AudioParam implementation so far.
1238+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
12281239
setup(destination) {
12291240
const constantSourceNode = new ConstantSourceNode(context);
12301241
const pannerNode = new PannerNode(context, {
@@ -1270,11 +1281,13 @@ if (typeof window !== 'undefined') {
12701281
constantSourceNode.start(startTime);
12711282
}
12721283
}).then((channelData) => {
1273-
expect(channelData[0]).to.be.closeTo(0.007042165, 0.000000001);
1274-
expect(channelData[1]).to.be.closeTo(0.007042165, 0.000000001);
1275-
expect(channelData[2]).to.be.closeTo(0.007042165, 0.000000001);
1276-
expect(channelData[3]).to.be.closeTo(0.007042165, 0.000000001);
1277-
expect(channelData[4]).to.be.closeTo(0.007042165, 0.000000001);
1284+
const offset = channelData.length === 5 ? 0 : 768;
1285+
1286+
expect(channelData[offset + 0]).to.be.closeTo(0.007042165, 0.000000001);
1287+
expect(channelData[offset + 1]).to.be.closeTo(0.007042165, 0.000000001);
1288+
expect(channelData[offset + 2]).to.be.closeTo(0.007042165, 0.000000001);
1289+
expect(channelData[offset + 3]).to.be.closeTo(0.007042165, 0.000000001);
1290+
expect(channelData[offset + 4]).to.be.closeTo(0.007042165, 0.000000001);
12781291
});
12791292
});
12801293
});
@@ -1474,7 +1487,8 @@ if (typeof window !== 'undefined') {
14741487

14751488
renderer = createRenderer({
14761489
context,
1477-
length: context.length === undefined ? 5 : undefined,
1490+
// Bug #117: Firefox has AudioParam implementation so far.
1491+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
14781492
setup(destination) {
14791493
const constantSourceNode = new ConstantSourceNode(context);
14801494
const pannerNode = new PannerNode(context, {
@@ -1520,11 +1534,13 @@ if (typeof window !== 'undefined') {
15201534
constantSourceNode.start(startTime);
15211535
}
15221536
}).then((channelData) => {
1523-
expect(channelData[0]).to.be.closeTo(0.007105881, 0.000000002);
1524-
expect(channelData[1]).to.be.closeTo(0.007105881, 0.000000002);
1525-
expect(channelData[2]).to.be.closeTo(0.007105881, 0.000000002);
1526-
expect(channelData[3]).to.be.closeTo(0.007105881, 0.000000002);
1527-
expect(channelData[4]).to.be.closeTo(0.007105881, 0.000000002);
1537+
const offset = channelData.length === 5 ? 0 : 768;
1538+
1539+
expect(channelData[offset + 0]).to.be.closeTo(0.007105881, 0.000000002);
1540+
expect(channelData[offset + 1]).to.be.closeTo(0.007105881, 0.000000002);
1541+
expect(channelData[offset + 2]).to.be.closeTo(0.007105881, 0.000000002);
1542+
expect(channelData[offset + 3]).to.be.closeTo(0.007105881, 0.000000002);
1543+
expect(channelData[offset + 4]).to.be.closeTo(0.007105881, 0.000000002);
15281544
});
15291545
});
15301546
});
@@ -1724,7 +1740,8 @@ if (typeof window !== 'undefined') {
17241740

17251741
renderer = createRenderer({
17261742
context,
1727-
length: context.length === undefined ? 5 : undefined,
1743+
// Bug #117: Firefox has AudioParam implementation so far.
1744+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
17281745
setup(destination) {
17291746
const constantSourceNode = new ConstantSourceNode(context);
17301747
const pannerNode = new PannerNode(context, {
@@ -1770,11 +1787,13 @@ if (typeof window !== 'undefined') {
17701787
constantSourceNode.start(startTime);
17711788
}
17721789
}).then((channelData) => {
1773-
expect(channelData[0]).to.be.closeTo(0.007032075, 0.000000001);
1774-
expect(channelData[1]).to.be.closeTo(0.007032075, 0.000000001);
1775-
expect(channelData[2]).to.be.closeTo(0.007032075, 0.000000001);
1776-
expect(channelData[3]).to.be.closeTo(0.007032075, 0.000000001);
1777-
expect(channelData[4]).to.be.closeTo(0.007032075, 0.000000001);
1790+
const offset = channelData.length === 5 ? 0 : 768;
1791+
1792+
expect(channelData[offset + 0]).to.be.closeTo(0.007032075, 0.000000001);
1793+
expect(channelData[offset + 1]).to.be.closeTo(0.007032075, 0.000000001);
1794+
expect(channelData[offset + 2]).to.be.closeTo(0.007032075, 0.000000001);
1795+
expect(channelData[offset + 3]).to.be.closeTo(0.007032075, 0.000000001);
1796+
expect(channelData[offset + 4]).to.be.closeTo(0.007032075, 0.000000001);
17781797
});
17791798
});
17801799
});
@@ -1974,7 +1993,8 @@ if (typeof window !== 'undefined') {
19741993

19751994
renderer = createRenderer({
19761995
context,
1977-
length: context.length === undefined ? 5 : undefined,
1996+
// Bug #117: Firefox has AudioParam implementation so far.
1997+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
19781998
setup(destination) {
19791999
const constantSourceNode = new ConstantSourceNode(context);
19802000
const pannerNode = new PannerNode(context, {
@@ -2002,11 +2022,13 @@ if (typeof window !== 'undefined') {
20022022
constantSourceNode.start(startTime);
20032023
}
20042024
}).then((channelData) => {
2005-
expect(channelData[0]).to.be.closeTo(0.007032075, 0.000000001);
2006-
expect(channelData[1]).to.be.closeTo(0.007032075, 0.000000001);
2007-
expect(channelData[2]).to.be.closeTo(0.007032075, 0.000000001);
2008-
expect(channelData[3]).to.be.closeTo(0.007032075, 0.000000001);
2009-
expect(channelData[4]).to.be.closeTo(0.007032075, 0.000000001);
2025+
const offset = channelData.length === 5 ? 0 : 768;
2026+
2027+
expect(channelData[offset + 0]).to.be.closeTo(0.007032075, 0.000000001);
2028+
expect(channelData[offset + 1]).to.be.closeTo(0.007032075, 0.000000001);
2029+
expect(channelData[offset + 2]).to.be.closeTo(0.007032075, 0.000000001);
2030+
expect(channelData[offset + 3]).to.be.closeTo(0.007032075, 0.000000001);
2031+
expect(channelData[offset + 4]).to.be.closeTo(0.007032075, 0.000000001);
20102032
});
20112033
});
20122034
});
@@ -2023,7 +2045,7 @@ if (typeof window !== 'undefined') {
20232045
constantSourceNode.start(startTime);
20242046
}
20252047
}).then((channelData) => {
2026-
expect(Array.from(channelData)).to.deep.equal([
2048+
expect(Array.from(channelData).slice(channelData.length === 5 ? 0 : 768)).to.deep.equal([
20272049
0.007035556249320507, 0.007035556249320507, 0.007035556249320507, 0.007035556249320507,
20282050
0.007035556249320507
20292051
]);
@@ -2226,7 +2248,8 @@ if (typeof window !== 'undefined') {
22262248

22272249
renderer = createRenderer({
22282250
context,
2229-
length: context.length === undefined ? 5 : undefined,
2251+
// Bug #117: Firefox has AudioParam implementation so far.
2252+
length: context.length === undefined ? (/Firefox/.test(navigator.userAgent) ? 773 : 5) : undefined,
22302253
setup(destination) {
22312254
const constantSourceNode = new ConstantSourceNode(context);
22322255
const pannerNode = new PannerNode(context, {
@@ -2255,7 +2278,7 @@ if (typeof window !== 'undefined') {
22552278
constantSourceNode.start(startTime);
22562279
}
22572280
}).then((channelData) => {
2258-
expect(Array.from(channelData)).to.deep.equal([
2281+
expect(Array.from(channelData).slice(channelData.length === 5 ? 0 : 768)).to.deep.equal([
22592282
0.007035556249320507, 0.007035556249320507, 0.007035556249320507, 0.007035556249320507,
22602283
0.007035556249320507
22612284
]);
@@ -2275,7 +2298,7 @@ if (typeof window !== 'undefined') {
22752298
constantSourceNode.start(startTime);
22762299
}
22772300
}).then((channelData) => {
2278-
expect(Array.from(channelData)).to.deep.equal([
2301+
expect(Array.from(channelData).slice(channelData.length === 5 ? 0 : 768)).to.deep.equal([
22792302
0.007035556249320507, 0.007035556249320507, 0.007035556249320507, 0.007035556249320507,
22802303
0.007035556249320507
22812304
]);

0 commit comments

Comments
 (0)