From 5fe3e9a44a3812a06303fbf3fd68b95d0a46bb52 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Wed, 13 May 2020 07:46:48 -0700 Subject: [PATCH] Add test for LowPassFilter Summary: Eating my own dogfood. Reviewed By: mweststrate Differential Revision: D21545655 fbshipit-source-id: 1e2690478ad8a986915a98a8275a168fa4c3a23f --- .../utils/__tests__/LowPassFilter.node.tsx | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 desktop/app/src/utils/__tests__/LowPassFilter.node.tsx diff --git a/desktop/app/src/utils/__tests__/LowPassFilter.node.tsx b/desktop/app/src/utils/__tests__/LowPassFilter.node.tsx new file mode 100644 index 000000000..44538775a --- /dev/null +++ b/desktop/app/src/utils/__tests__/LowPassFilter.node.tsx @@ -0,0 +1,46 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +import LowPassFilter from '../LowPassFilter'; + +test('hasFullBuffer', () => { + const lpf = new LowPassFilter(); + expect(lpf.hasFullBuffer()).toBeFalsy(); + + lpf.push(1); + lpf.push(2); + lpf.push(3); + lpf.push(4); + lpf.push(5); + + expect(lpf.hasFullBuffer()).toBeTruthy(); +}); + +test('push on full buffer returns shifted value', () => { + const lpf = new LowPassFilter(); + expect(lpf.push(1)).toBe(0); + expect(lpf.push(2)).toBe(0); + expect(lpf.push(3)).toBe(0); + expect(lpf.push(4)).toBe(0); + expect(lpf.push(5)).toBe(0); + expect(lpf.push(6)).toBe(1); + expect(lpf.push(7)).toBe(2); +}); + +test('next returns smoothed value', () => { + const lpf = new LowPassFilter(); + expect(lpf.next(1)).toBe(0.9); + expect(lpf.next(2)).toBe(1.881); +}); + +test('next returns smoothed value with custom smoothing', () => { + const lpf = new LowPassFilter(0.5); + expect(lpf.next(1)).toBe(0.5); + expect(lpf.next(2)).toBe(1.125); +});