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 "common/binary.h"
#define TT(a, ...) printf(a, ##__VA_ARGS__)
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
#define BIT_CLR_(x, n) ( (x) & (~BIT_(n)) )
#if defined(__GNUC__)
#define BIN8(x) (0b##x)
#define BIN16 BIN8
#define BIN32 BIN8
#define BIN8(x) (0b##x)
#define BIN16(b1, b2) (0b##b1##b2)
#define BIN32(b1, b2, b3, b4) (0b##b1##b2##b3##b4)
#else
@ -85,12 +86,12 @@
+((x&0xF0000000LU)?128:0)
#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) \
(((uint32_t)B8(dmsb)<<24) \
+ ((uint32_t)B8(db2)<<16) \
+ ((uint32_t)B8(db3)<<8) \
+ B8(dlsb))
(((uint32_t)BIN8(dmsb)<<24) \
+ ((uint32_t)BIN8(db2)<<16) \
+ ((uint32_t)BIN8(db3)<<8) \
+ BIN8(dlsb))
#endif
#ifdef __cplusplus