Browse Source

js: remove log from test

content-update
Clement Denis 4 years ago
parent
commit
2d09cb2ca0
  1. 30
      js/tests/debounce_test.js

30
js/tests/debounce_test.js

@ -4,28 +4,30 @@ const t = (f) => tests.push(f)
const add = (arr, el) => arr.push(el) const add = (arr, el) => arr.push(el)
// async setInterval is not precise enough so I made this synchronous one // async setInterval is not precise enough so I made this synchronous one
const setIntervalSync = (fn, delay, limit) => { const setIntervalSync = (fn, delay, limit = 0) => new Promise(s => {
let run = true let run = true
let count = 1 let count = 1
const start = Date.now() const start = Date.now()
while (run) { const loop = () => {
const tick = Date.now() const tick = Date.now()
const elapsed = tick - start const elapsed = tick - start
if (elapsed > count * delay) { if (elapsed > count * delay) {
console.log({ elapsed, count })
fn() fn()
count++ count++
if (count >= limit) return
} }
elapsed < limit
? setTimeout(loop)
: s()
} }
} setTimeout(loop)
})
// it uses the array to better test the leading and trailing edge of the time limit // it uses the array to better test the leading and trailing edge of the time limit
// so if the leading edge is true it will execute the callback // so if the leading edge is true it will execute the callback
// if the trailing edge is true it will execute the callback before returning the array // if the trailing edge is true it will execute the callback before returning the array
const run = (callback, { delay, count }) => { const run = async (callback, { delay, count }) => {
const arr = [] const arr = []
setIntervalSync(() => callback(arr, 1), delay, count) await setIntervalSync(() => callback(arr, 1), delay, count * delay)
return arr.length return arr.length
} }
@ -34,8 +36,8 @@ t(async ({ eq }) =>
// it works concurrently // it works concurrently
eq( eq(
await Promise.all([ await Promise.all([
run(debounce(add, 5), { delay: 10, count: 5 }), run(debounce(add, 50), { delay: 100, count: 5 }),
run(debounce(add, 2), { delay: 5, count: 10 }), run(debounce(add, 20), { delay: 50, count: 10 }),
]), ]),
[4, 9] [4, 9]
) )
@ -43,15 +45,15 @@ t(async ({ eq }) =>
t(async ({ eq }) => t(async ({ eq }) =>
// testing with wait limit superior to wait time call // testing with wait limit superior to wait time call
// execution on the trailing edge, after wait limit has elapsed // execution on the trailing edge, after wait limit has elapsed
eq(await run(debounce(add, 10), { delay: 5, count: 5 }), 0) eq(await run(debounce(add, 100), { delay: 50, count: 5 }), 0)
) )
t(async ({ eq }) => t(async ({ eq }) =>
// it works concurrently // it works concurrently
eq( eq(
await Promise.all([ await Promise.all([
run(opDebounce(add, 4), { delay: 2, count: 5 }), run(opDebounce(add, 40), { delay: 20, count: 5 }),
run(opDebounce(add, 4), { delay: 2, count: 2 }), run(opDebounce(add, 40), { delay: 20, count: 2 }),
]), ]),
[0, 0] [0, 0]
) )
@ -62,8 +64,8 @@ t(async ({ eq }) =>
// it works concurrently // it works concurrently
eq( eq(
await Promise.all([ await Promise.all([
run(opDebounce(add, 20, { leading: true }), { delay: 7, count: 3 }), run(opDebounce(add, 200, { leading: true }), { delay: 70, count: 3 }),
run(opDebounce(add, 10, { leading: true }), { delay: 14, count: 3 }), run(opDebounce(add, 100, { leading: true }), { delay: 140, count: 3 }),
]), ]),
[1, 2] [1, 2]
) )

Loading…
Cancel
Save