1
1
#include <furi.h>
2
2
#include "../minunit.h"
3
- #include <lfrfid/tools /bit_lib.h>
3
+ #include <bit_lib /bit_lib.h>
4
4
5
5
MU_TEST (test_bit_lib_increment_index ) {
6
6
uint32_t index = 0 ;
@@ -218,6 +218,178 @@ MU_TEST(test_bit_lib_get_bits_32) {
218
218
mu_assert_int_eq (0b00001001101100011000110001100010 , bit_lib_get_bits_32 (value , 0 , 32 ));
219
219
}
220
220
221
+ MU_TEST (test_bit_lib_get_bits_64 ) {
222
+ uint8_t value [8 ] = {
223
+ 0b00001001 ,
224
+ 0b10110001 ,
225
+ 0b10001100 ,
226
+ 0b01100010 ,
227
+ 0b00001001 ,
228
+ 0b10110001 ,
229
+ 0b10001100 ,
230
+ 0b01100010 };
231
+ mu_assert_int_eq (0b0 , bit_lib_get_bits_64 (value , 0 , 1 ));
232
+ mu_assert_int_eq (0b00 , bit_lib_get_bits_64 (value , 0 , 2 ));
233
+ mu_assert_int_eq (0b000 , bit_lib_get_bits_64 (value , 0 , 3 ));
234
+ mu_assert_int_eq (0b0000 , bit_lib_get_bits_64 (value , 0 , 4 ));
235
+ mu_assert_int_eq (0b00001 , bit_lib_get_bits_64 (value , 0 , 5 ));
236
+ mu_assert_int_eq (0b000010 , bit_lib_get_bits_64 (value , 0 , 6 ));
237
+ mu_assert_int_eq (0b0000100 , bit_lib_get_bits_64 (value , 0 , 7 ));
238
+ mu_assert_int_eq (0b00001001 , bit_lib_get_bits_64 (value , 0 , 8 ));
239
+ mu_assert_int_eq (0b000010011 , bit_lib_get_bits_64 (value , 0 , 9 ));
240
+ mu_assert_int_eq (0b0000100110 , bit_lib_get_bits_64 (value , 0 , 10 ));
241
+ mu_assert_int_eq (0b00001001101 , bit_lib_get_bits_64 (value , 0 , 11 ));
242
+ mu_assert_int_eq (0b000010011011 , bit_lib_get_bits_64 (value , 0 , 12 ));
243
+ mu_assert_int_eq (0b0000100110110 , bit_lib_get_bits_64 (value , 0 , 13 ));
244
+ mu_assert_int_eq (0b00001001101100 , bit_lib_get_bits_64 (value , 0 , 14 ));
245
+ mu_assert_int_eq (0b000010011011000 , bit_lib_get_bits_64 (value , 0 , 15 ));
246
+ mu_assert_int_eq (0b0000100110110001 , bit_lib_get_bits_64 (value , 0 , 16 ));
247
+ mu_assert_int_eq (0b00001001101100011 , bit_lib_get_bits_64 (value , 0 , 17 ));
248
+ mu_assert_int_eq (0b000010011011000110 , bit_lib_get_bits_64 (value , 0 , 18 ));
249
+ mu_assert_int_eq (0b0000100110110001100 , bit_lib_get_bits_64 (value , 0 , 19 ));
250
+ mu_assert_int_eq (0b00001001101100011000 , bit_lib_get_bits_64 (value , 0 , 20 ));
251
+ mu_assert_int_eq (0b000010011011000110001 , bit_lib_get_bits_64 (value , 0 , 21 ));
252
+ mu_assert_int_eq (0b0000100110110001100011 , bit_lib_get_bits_64 (value , 0 , 22 ));
253
+ mu_assert_int_eq (0b00001001101100011000110 , bit_lib_get_bits_64 (value , 0 , 23 ));
254
+ mu_assert_int_eq (0b000010011011000110001100 , bit_lib_get_bits_64 (value , 0 , 24 ));
255
+ mu_assert_int_eq (0b0000100110110001100011000 , bit_lib_get_bits_64 (value , 0 , 25 ));
256
+ mu_assert_int_eq (0b00001001101100011000110001 , bit_lib_get_bits_64 (value , 0 , 26 ));
257
+ mu_assert_int_eq (0b000010011011000110001100011 , bit_lib_get_bits_64 (value , 0 , 27 ));
258
+ mu_assert_int_eq (0b0000100110110001100011000110 , bit_lib_get_bits_64 (value , 0 , 28 ));
259
+ mu_assert_int_eq (0b00001001101100011000110001100 , bit_lib_get_bits_64 (value , 0 , 29 ));
260
+ mu_assert_int_eq (0b000010011011000110001100011000 , bit_lib_get_bits_64 (value , 0 , 30 ));
261
+ mu_assert_int_eq (0b0000100110110001100011000110001 , bit_lib_get_bits_64 (value , 0 , 31 ));
262
+ mu_assert_int_eq (0b00001001101100011000110001100010 , bit_lib_get_bits_64 (value , 0 , 32 ));
263
+
264
+ uint64_t res = bit_lib_get_bits_64 (value , 0 , 33 );
265
+ uint64_t expected = 0b000010011011000110001100011000100 ;
266
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
267
+
268
+ res = bit_lib_get_bits_64 (value , 0 , 34 );
269
+ expected = 0b0000100110110001100011000110001000 ;
270
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
271
+
272
+ res = bit_lib_get_bits_64 (value , 0 , 35 );
273
+ expected = 0b00001001101100011000110001100010000 ;
274
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
275
+
276
+ res = bit_lib_get_bits_64 (value , 0 , 36 );
277
+ expected = 0b000010011011000110001100011000100000 ;
278
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
279
+
280
+ res = bit_lib_get_bits_64 (value , 0 , 37 );
281
+ expected = 0b0000100110110001100011000110001000001 ;
282
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
283
+
284
+ res = bit_lib_get_bits_64 (value , 0 , 38 );
285
+ expected = 0b00001001101100011000110001100010000010 ;
286
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
287
+
288
+ res = bit_lib_get_bits_64 (value , 0 , 39 );
289
+ expected = 0b000010011011000110001100011000100000100 ;
290
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
291
+
292
+ res = bit_lib_get_bits_64 (value , 0 , 40 );
293
+ expected = 0b0000100110110001100011000110001000001001 ;
294
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
295
+
296
+ res = bit_lib_get_bits_64 (value , 0 , 41 );
297
+ expected = 0b00001001101100011000110001100010000010011 ;
298
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
299
+
300
+ res = bit_lib_get_bits_64 (value , 0 , 42 );
301
+ expected = 0b000010011011000110001100011000100000100110 ;
302
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
303
+
304
+ res = bit_lib_get_bits_64 (value , 0 , 43 );
305
+ expected = 0b0000100110110001100011000110001000001001101 ;
306
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
307
+
308
+ res = bit_lib_get_bits_64 (value , 0 , 44 );
309
+ expected = 0b00001001101100011000110001100010000010011011 ;
310
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
311
+
312
+ res = bit_lib_get_bits_64 (value , 0 , 45 );
313
+ expected = 0b000010011011000110001100011000100000100110110 ;
314
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
315
+
316
+ res = bit_lib_get_bits_64 (value , 0 , 46 );
317
+ expected = 0b0000100110110001100011000110001000001001101100 ;
318
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
319
+
320
+ res = bit_lib_get_bits_64 (value , 0 , 47 );
321
+ expected = 0b00001001101100011000110001100010000010011011000 ;
322
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
323
+
324
+ res = bit_lib_get_bits_64 (value , 0 , 48 );
325
+ expected = 0b000010011011000110001100011000100000100110110001 ;
326
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
327
+
328
+ res = bit_lib_get_bits_64 (value , 0 , 49 );
329
+ expected = 0b0000100110110001100011000110001000001001101100011 ;
330
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
331
+
332
+ res = bit_lib_get_bits_64 (value , 0 , 50 );
333
+ expected = 0b00001001101100011000110001100010000010011011000110 ;
334
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
335
+
336
+ res = bit_lib_get_bits_64 (value , 0 , 51 );
337
+ expected = 0b000010011011000110001100011000100000100110110001100 ;
338
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
339
+
340
+ res = bit_lib_get_bits_64 (value , 0 , 52 );
341
+ expected = 0b0000100110110001100011000110001000001001101100011000 ;
342
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
343
+
344
+ res = bit_lib_get_bits_64 (value , 0 , 53 );
345
+ expected = 0b00001001101100011000110001100010000010011011000110001 ;
346
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
347
+
348
+ res = bit_lib_get_bits_64 (value , 0 , 54 );
349
+ expected = 0b000010011011000110001100011000100000100110110001100011 ;
350
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
351
+
352
+ res = bit_lib_get_bits_64 (value , 0 , 55 );
353
+ expected = 0b0000100110110001100011000110001000001001101100011000110 ;
354
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
355
+
356
+ res = bit_lib_get_bits_64 (value , 0 , 56 );
357
+ expected = 0b00001001101100011000110001100010000010011011000110001100 ;
358
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
359
+
360
+ res = bit_lib_get_bits_64 (value , 0 , 57 );
361
+ expected = 0b000010011011000110001100011000100000100110110001100011000 ;
362
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
363
+
364
+ res = bit_lib_get_bits_64 (value , 0 , 58 );
365
+ expected = 0b0000100110110001100011000110001000001001101100011000110001 ;
366
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
367
+
368
+ res = bit_lib_get_bits_64 (value , 0 , 59 );
369
+ expected = 0b00001001101100011000110001100010000010011011000110001100011 ;
370
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
371
+
372
+ res = bit_lib_get_bits_64 (value , 0 , 60 );
373
+ expected = 0b000010011011000110001100011000100000100110110001100011000110 ;
374
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
375
+
376
+ res = bit_lib_get_bits_64 (value , 0 , 61 );
377
+ expected = 0b0000100110110001100011000110001000001001101100011000110001100 ;
378
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
379
+
380
+ res = bit_lib_get_bits_64 (value , 0 , 62 );
381
+ expected = 0b00001001101100011000110001100010000010011011000110001100011000 ;
382
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
383
+
384
+ res = bit_lib_get_bits_64 (value , 0 , 63 );
385
+ expected = 0b000010011011000110001100011000100000100110110001100011000110001 ;
386
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
387
+
388
+ res = bit_lib_get_bits_64 (value , 0 , 64 );
389
+ expected = 0b0000100110110001100011000110001000001001101100011000110001100010 ;
390
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
391
+ }
392
+
221
393
MU_TEST (test_bit_lib_test_parity_u32 ) {
222
394
// test even parity
223
395
mu_assert_int_eq (bit_lib_test_parity_32 (0b00000000 , BitLibParityEven ), 0 );
@@ -447,6 +619,95 @@ MU_TEST(test_bit_lib_crc16) {
447
619
mu_assert_int_eq (0x31C3 , bit_lib_crc16 (data , data_size , 0x1021 , 0x0000 , false, false, 0x0000 ));
448
620
}
449
621
622
+ MU_TEST (test_bit_lib_num_to_bytes_be ) {
623
+ uint8_t src [8 ] = {0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF };
624
+ uint8_t dest [8 ];
625
+
626
+ bit_lib_num_to_bytes_be (0x01 , 1 , dest );
627
+ mu_assert_mem_eq (src , dest , sizeof (src [0 ]));
628
+
629
+ bit_lib_num_to_bytes_be (0x0123456789ABCDEF , 4 , dest );
630
+ mu_assert_mem_eq (src + 4 , dest , 4 * sizeof (src [0 ]));
631
+
632
+ bit_lib_num_to_bytes_be (0x0123456789ABCDEF , 8 , dest );
633
+ mu_assert_mem_eq (src , dest , 8 * sizeof (src [0 ]));
634
+
635
+ bit_lib_num_to_bytes_be (bit_lib_bytes_to_num_be (src , 8 ), 8 , dest );
636
+ mu_assert_mem_eq (src , dest , 8 * sizeof (src [0 ]));
637
+ }
638
+
639
+ MU_TEST (test_bit_lib_num_to_bytes_le ) {
640
+ uint8_t dest [8 ];
641
+
642
+ uint8_t n2b_le_expected_1 [] = {0x01 };
643
+ bit_lib_num_to_bytes_le (0x01 , 1 , dest );
644
+ mu_assert_mem_eq (n2b_le_expected_1 , dest , sizeof (n2b_le_expected_1 [0 ]));
645
+
646
+ uint8_t n2b_le_expected_2 [] = {0xEF , 0xCD , 0xAB , 0x89 };
647
+ bit_lib_num_to_bytes_le (0x0123456789ABCDEF , 4 , dest );
648
+ mu_assert_mem_eq (n2b_le_expected_2 , dest , 4 * sizeof (n2b_le_expected_2 [0 ]));
649
+
650
+ uint8_t n2b_le_expected_3 [] = {0xEF , 0xCD , 0xAB , 0x89 , 0x67 , 0x45 , 0x23 , 0x01 };
651
+ bit_lib_num_to_bytes_le (0x0123456789ABCDEF , 8 , dest );
652
+ mu_assert_mem_eq (n2b_le_expected_3 , dest , 8 * sizeof (n2b_le_expected_3 [0 ]));
653
+
654
+ bit_lib_num_to_bytes_le (bit_lib_bytes_to_num_le (n2b_le_expected_3 , 8 ), 8 , dest );
655
+ mu_assert_mem_eq (n2b_le_expected_3 , dest , 8 * sizeof (n2b_le_expected_3 [0 ]));
656
+ }
657
+
658
+ MU_TEST (test_bit_lib_bytes_to_num_be ) {
659
+ uint8_t src [8 ] = {0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF };
660
+ uint64_t res ;
661
+
662
+ res = bit_lib_bytes_to_num_be (src , 1 );
663
+ mu_assert_int_eq (0x01 , res );
664
+
665
+ res = bit_lib_bytes_to_num_be (src , 4 );
666
+ mu_assert_int_eq (0x01234567 , res );
667
+
668
+ res = bit_lib_bytes_to_num_be (src , 8 );
669
+ uint64_t expected = 0x0123456789ABCDEF ;
670
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
671
+ }
672
+
673
+ MU_TEST (test_bit_lib_bytes_to_num_le ) {
674
+ uint8_t src [8 ] = {0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF };
675
+ uint64_t res ;
676
+
677
+ res = bit_lib_bytes_to_num_le (src , 1 );
678
+ mu_assert_int_eq (0x01 , res );
679
+
680
+ res = bit_lib_bytes_to_num_le (src , 4 );
681
+ mu_assert_int_eq (0x67452301 , res );
682
+
683
+ res = bit_lib_bytes_to_num_le (src , 8 );
684
+ uint64_t expected = 0xEFCDAB8967452301 ;
685
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
686
+ }
687
+
688
+ MU_TEST (test_bit_lib_bytes_to_num_bcd ) {
689
+ uint8_t src [8 ] = {0x01 , 0x23 , 0x45 , 0x67 , 0x89 , 0xAB , 0xCD , 0xEF };
690
+ uint64_t res ;
691
+ bool is_bcd_res ;
692
+
693
+ res = bit_lib_bytes_to_num_bcd (src , 1 , & is_bcd_res );
694
+ mu_assert_int_eq (01 , res );
695
+ mu_assert_int_eq (true, is_bcd_res );
696
+
697
+ res = bit_lib_bytes_to_num_bcd (src , 4 , & is_bcd_res );
698
+ mu_assert_int_eq (1234567 , res );
699
+ mu_assert_int_eq (true, is_bcd_res );
700
+
701
+ uint8_t digits [5 ] = {0x98 , 0x76 , 0x54 , 0x32 , 0x10 };
702
+ uint64_t expected = 9876543210 ;
703
+ res = bit_lib_bytes_to_num_bcd (digits , 5 , & is_bcd_res );
704
+ mu_assert_mem_eq (& expected , & res , sizeof (expected ));
705
+ mu_assert_int_eq (true, is_bcd_res );
706
+
707
+ res = bit_lib_bytes_to_num_bcd (src , 8 , & is_bcd_res );
708
+ mu_assert_int_eq (false, is_bcd_res );
709
+ }
710
+
450
711
MU_TEST_SUITE (test_bit_lib ) {
451
712
MU_RUN_TEST (test_bit_lib_increment_index );
452
713
MU_RUN_TEST (test_bit_lib_is_set );
@@ -457,6 +718,7 @@ MU_TEST_SUITE(test_bit_lib) {
457
718
MU_RUN_TEST (test_bit_lib_get_bits );
458
719
MU_RUN_TEST (test_bit_lib_get_bits_16 );
459
720
MU_RUN_TEST (test_bit_lib_get_bits_32 );
721
+ MU_RUN_TEST (test_bit_lib_get_bits_64 );
460
722
MU_RUN_TEST (test_bit_lib_test_parity_u32 );
461
723
MU_RUN_TEST (test_bit_lib_test_parity );
462
724
MU_RUN_TEST (test_bit_lib_remove_bit_every_nth );
@@ -465,6 +727,11 @@ MU_TEST_SUITE(test_bit_lib) {
465
727
MU_RUN_TEST (test_bit_lib_get_bit_count );
466
728
MU_RUN_TEST (test_bit_lib_reverse_16_fast );
467
729
MU_RUN_TEST (test_bit_lib_crc16 );
730
+ MU_RUN_TEST (test_bit_lib_num_to_bytes_be );
731
+ MU_RUN_TEST (test_bit_lib_num_to_bytes_le );
732
+ MU_RUN_TEST (test_bit_lib_bytes_to_num_be );
733
+ MU_RUN_TEST (test_bit_lib_bytes_to_num_le );
734
+ MU_RUN_TEST (test_bit_lib_bytes_to_num_bcd );
468
735
}
469
736
470
737
int run_minunit_test_bit_lib () {
0 commit comments