add binary const & its test code

This commit is contained in:
hathach 2013-01-14 14:36:13 +07:00
parent 3d8babcb14
commit 0c1d4f705b
2 changed files with 47 additions and 12 deletions

View File

@ -39,8 +39,6 @@
#include "unity.h" #include "unity.h"
#include "common/binary.h" #include "common/binary.h"
#define TT(a, ...) printf(a, ##__VA_ARGS__)
void setUp(void) void setUp(void)
{ {
} }
@ -49,7 +47,43 @@ void tearDown(void)
{ {
} }
void test_binary_byte() void test_binary_8()
{ {
TEST_IGNORE(); TEST_ASSERT_EQUAL_HEX8(0x00, BIN8(00000000));
TEST_ASSERT_EQUAL_HEX8(0x01, BIN8(00000001));
TEST_ASSERT_EQUAL_HEX8(0x02, BIN8(00000010));
TEST_ASSERT_EQUAL_HEX8(0x04, BIN8(00000100));
TEST_ASSERT_EQUAL_HEX8(0x08, BIN8(00001000));
TEST_ASSERT_EQUAL_HEX8(0x10, BIN8(00010000));
TEST_ASSERT_EQUAL_HEX8(0x20, BIN8(00100000));
TEST_ASSERT_EQUAL_HEX8(0x40, BIN8(01000000));
TEST_ASSERT_EQUAL_HEX8(0x80, BIN8(10000000));
TEST_ASSERT_EQUAL_HEX8(0x0f, BIN8(00001111));
TEST_ASSERT_EQUAL_HEX8(0xf0, BIN8(11110000));
TEST_ASSERT_EQUAL_HEX8(0xff, BIN8(11111111));
}
void test_binary_16()
{
TEST_ASSERT_EQUAL_HEX16(0x0000, BIN16(00000000, 00000000));
TEST_ASSERT_EQUAL_HEX16(0x000f, BIN16(00000000, 00001111));
TEST_ASSERT_EQUAL_HEX16(0x00f0, BIN16(00000000, 11110000));
TEST_ASSERT_EQUAL_HEX16(0x0f00, BIN16(00001111, 00000000));
TEST_ASSERT_EQUAL_HEX16(0xf000, BIN16(11110000, 00000000));
TEST_ASSERT_EQUAL_HEX16(0xffff, BIN16(11111111, 11111111));
}
void test_binary_32()
{
TEST_ASSERT_EQUAL_HEX32(0x00000000, BIN32(00000000, 00000000, 00000000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0x0000000f, BIN32(00000000, 00000000, 00000000, 00001111));
TEST_ASSERT_EQUAL_HEX32(0x000000f0, BIN32(00000000, 00000000, 00000000, 11110000));
TEST_ASSERT_EQUAL_HEX32(0x00000f00, BIN32(00000000, 00000000, 00001111, 00000000));
TEST_ASSERT_EQUAL_HEX32(0x0000f000, BIN32(00000000, 00000000, 11110000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0x000f0000, BIN32(00000000, 00001111, 00000000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0x00f00000, BIN32(00000000, 11110000, 00000000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0x0f000000, BIN32(00001111, 00000000, 00000000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0xf0000000, BIN32(11110000, 00000000, 00000000, 00000000));
TEST_ASSERT_EQUAL_HEX32(0xffffffff, BIN32(11111111, 11111111, 11111111, 11111111));
} }

View File

@ -66,11 +66,12 @@
/// clear n-th bit of x /// clear n-th bit of x
#define BIT_CLR_(x, n) ( (x) & (~BIT_(n)) ) #define BIT_CLR_(x, n) ( (x) & (~BIT_(n)) )
#if defined(__GNUC__) #if defined(__GNUC__)
#define BIN8(x) (0b##x) #define BIN8(x) (0b##x)
#define BIN16 BIN8 #define BIN16(b1, b2) (0b##b1##b2)
#define BIN32 BIN8 #define BIN32(b1, b2, b3, b4) (0b##b1##b2##b3##b4)
#else #else
@ -85,12 +86,12 @@
+((x&0xF0000000LU)?128:0) +((x&0xF0000000LU)?128:0)
#define BIN8(d) ((uint8_t)_B8__(0x##d##LU)) #define BIN8(d) ((uint8_t)_B8__(0x##d##LU))
#define BIN16(dmsb,dlsb) (((uint16_t)B8(dmsb)<<8) + B8(dlsb)) #define BIN16(dmsb,dlsb) (((uint16_t)BIN8(dmsb)<<8) + BIN8(dlsb))
#define BIN32(dmsb,db2,db3,dlsb) \ #define BIN32(dmsb,db2,db3,dlsb) \
(((uint32_t)B8(dmsb)<<24) \ (((uint32_t)BIN8(dmsb)<<24) \
+ ((uint32_t)B8(db2)<<16) \ + ((uint32_t)BIN8(db2)<<16) \
+ ((uint32_t)B8(db3)<<8) \ + ((uint32_t)BIN8(db3)<<8) \
+ B8(dlsb)) + BIN8(dlsb))
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus