utils/math: add crc32 function

This matches the STM32 hardware CRC.
This commit is contained in:
David Lechner
2022-07-21 14:27:27 -05:00
parent bb6f86ff18
commit 28f63d5d85
2 changed files with 41 additions and 3 deletions
+14 -2
View File
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
// Copyright (c) 2020 The Pybricks Authors
// Copyright (c) 2020-2022 The Pybricks Authors
import { fmod, sumComplement32, xor8 } from './math';
import { crc32, fmod, sumComplement32, xor8 } from './math';
describe('fmod', () => {
test('positive numbers', () => {
@@ -22,6 +22,18 @@ describe('sumComplement32', () => {
});
});
describe('crc32', () => {
test('trivial', () => {
expect(crc32([0])).toBe(0);
});
test('trivial2', () => {
expect(crc32([0xffffffff])).toBe(0);
});
test('basic', () => {
expect(crc32([1, 2, 3, 4, 5])).toBe(-2048796416);
});
});
describe('xor8', () => {
test('basic', () => {
expect(xor8([0])).toBe(0xff);