mirror of
https://github.com/flipperdevices/flipperzero-firmware.git
synced 2025-12-12 04:41:26 +04:00
* toolbox, gui: fixes for compressed icon handling * ufbt: fixes for generated vscode project * scripts: increased max dimensions for image converter * icon type changes * linter fixes; api sync * gui: docs fix * toolbox: fixed potential decoder buffer overflow * minor cleanup * fbt: sdk: suppressed deprecation warnings in API table * toolbox: compress: added unit tests vscode: now installs resources for unit_tests unit_tests: now loads subghz region data * toolbox: compress: review fixes, pt 1 * compress: now passes decoder buffer size as constructor argument; auto-resize decoder buffer; crash on failed icon decompression * PVS fixes * pvs fixes, pt2 * doxygen fixes * investigating unit test failures * investigating unit test failures * investigating unit test failures * investigating unit test failures * investigating unit test failures * UnitTests: move all tests into plugins, brakes testing * UnitTests: add plugin API and update plugin entrypoints * UniTests: Test runner that works with plugins * fbt: extra filtering for extapps to include in build * UnitTests: filter tests by name * loader: restored API table for unit_test build config * Add various missing symbols to API table * UnitTest: fail on plugin load error * UnitTests: cleanup plugin api and reporting * unit_tests: composite resolver * UnitTests: remove unused declaration * unit_tests, nfc: moved mock nfc implementation to libnfc * unit_tests: api: removed redundant #define * toolbox: compress: removed size_hint for icons; triggering furi_check on oversized icons * gui: icon, icon_animation: removed size hit APIs * Format Sources. Cleanup code. * loader: refuse to start .fal as app * toolbox: compress: fixed memory corruption in operations with small destination buffer; added unit tests for that case * unit_tests: proper test skipping; better selective test interface * unit_tests: moved 'loading' logging to proper location Co-authored-by: あく <alleteam@gmail.com>
93 lines
2.8 KiB
C
93 lines
2.8 KiB
C
#include <furi.h>
|
|
#include <furi_hal.h>
|
|
|
|
#include "../test.h"
|
|
|
|
#include <toolbox/varint.h>
|
|
#include <toolbox/profiler.h>
|
|
|
|
MU_TEST(test_varint_basic_u) {
|
|
mu_assert_int_eq(1, varint_uint32_length(0));
|
|
mu_assert_int_eq(5, varint_uint32_length(UINT32_MAX));
|
|
|
|
uint8_t data[8] = {};
|
|
uint32_t out_value;
|
|
|
|
mu_assert_int_eq(1, varint_uint32_pack(0, data));
|
|
mu_assert_int_eq(1, varint_uint32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(0, out_value);
|
|
|
|
mu_assert_int_eq(5, varint_uint32_pack(UINT32_MAX, data));
|
|
mu_assert_int_eq(5, varint_uint32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(UINT32_MAX, out_value);
|
|
}
|
|
|
|
MU_TEST(test_varint_basic_i) {
|
|
mu_assert_int_eq(5, varint_int32_length(INT32_MIN / 2));
|
|
mu_assert_int_eq(1, varint_int32_length(0));
|
|
mu_assert_int_eq(5, varint_int32_length(INT32_MAX / 2));
|
|
|
|
mu_assert_int_eq(2, varint_int32_length(127));
|
|
mu_assert_int_eq(2, varint_int32_length(-127));
|
|
|
|
uint8_t data[8] = {};
|
|
int32_t out_value;
|
|
mu_assert_int_eq(1, varint_int32_pack(0, data));
|
|
mu_assert_int_eq(1, varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(0, out_value);
|
|
|
|
mu_assert_int_eq(2, varint_int32_pack(127, data));
|
|
mu_assert_int_eq(2, varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(127, out_value);
|
|
|
|
mu_assert_int_eq(2, varint_int32_pack(-127, data));
|
|
mu_assert_int_eq(2, varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(-127, out_value);
|
|
|
|
mu_assert_int_eq(5, varint_int32_pack(INT32_MAX, data));
|
|
mu_assert_int_eq(5, varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(INT32_MAX, out_value);
|
|
|
|
mu_assert_int_eq(5, varint_int32_pack(INT32_MIN / 2 + 1, data));
|
|
mu_assert_int_eq(5, varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(INT32_MIN / 2 + 1, out_value);
|
|
}
|
|
|
|
MU_TEST(test_varint_rand_u) {
|
|
uint8_t data[8] = {};
|
|
uint32_t out_value;
|
|
|
|
for(size_t i = 0; i < 200000; i++) {
|
|
uint32_t rand_value = rand();
|
|
mu_assert_int_eq(
|
|
varint_uint32_pack(rand_value, data), varint_uint32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(rand_value, out_value);
|
|
}
|
|
}
|
|
|
|
MU_TEST(test_varint_rand_i) {
|
|
uint8_t data[8] = {};
|
|
int32_t out_value;
|
|
|
|
for(size_t i = 0; i < 200000; i++) {
|
|
int32_t rand_value = rand() + (INT32_MIN / 2 + 1);
|
|
mu_assert_int_eq(
|
|
varint_int32_pack(rand_value, data), varint_int32_unpack(&out_value, data, 8));
|
|
mu_assert_int_eq(rand_value, out_value);
|
|
}
|
|
}
|
|
|
|
MU_TEST_SUITE(test_varint_suite) {
|
|
MU_RUN_TEST(test_varint_basic_u);
|
|
MU_RUN_TEST(test_varint_basic_i);
|
|
MU_RUN_TEST(test_varint_rand_u);
|
|
MU_RUN_TEST(test_varint_rand_i);
|
|
}
|
|
|
|
int run_minunit_test_varint(void) {
|
|
MU_RUN_SUITE(test_varint_suite);
|
|
return MU_EXIT_CODE;
|
|
}
|
|
|
|
TEST_API_DEFINE(run_minunit_test_varint)
|