Просмотр исходного кода

add ASSERT_BIN8 and its test code
add some common api for task in osal.h for mocking

hathach 13 лет назад
Родитель
Сommit
eca87e5ee5
4 измененных файлов с 47 добавлено и 12 удалено
  1. 19 12
      tests/test/test_assertion.c
  2. 18 0
      tinyusb/common/assertion.h
  3. 8 0
      tinyusb/osal/osal.h
  4. 2 0
      tinyusb/osal/osal_common.h

+ 19 - 12
tests/test/test_assertion.c

@@ -42,6 +42,7 @@
 #include <stdbool.h>
 #include <stdbool.h>
 #include "unity.h"
 #include "unity.h"
 #include "CException.h"
 #include "CException.h"
+#include "binary.h"
 #include "common/assertion.h"
 #include "common/assertion.h"
 #include "errors.h"
 #include "errors.h"
 
 
@@ -270,18 +271,24 @@ void test_assert_hex_within_greater(void)
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 void test_assert_bin_equal(void)
 void test_assert_bin_equal(void)
 {
 {
-//  ASSERT_HEX       (0xffee, 0xffee, __LINE__);
-//  ASSERT_HEX_EQUAL (0xffee, 0xffee, __LINE__);
-//
-//  uint32_t x = 0xf0f0;
-//  uint32_t y = 0xf0f0;
-//  ASSERT_HEX (x++, y++, __LINE__); // test side effect
-//  TEST_ASSERT_EQUAL(0xf0f1, x);
-//  TEST_ASSERT_EQUAL(0xf0f1, y);
-//
-//  ASSERT_HEX(0x1234, 0x4321, __LINE__);
-
-  TEST_IGNORE();
+  Try
+  {
+    ASSERT_BIN8       (BIN8(11110000), BIN8(11110000), __LINE__);
+    ASSERT_BIN8_EQUAL (BIN8(00001111), BIN8(00001111), __LINE__);
+
+    // test side effect
+    uint32_t x = BIN8(11001100);
+    uint32_t y = BIN8(11001100);
+    ASSERT_BIN8 (x++, y++, __LINE__);
+    TEST_ASSERT_EQUAL(BIN8(11001101), x);
+    TEST_ASSERT_EQUAL(BIN8(11001101), y);
+
+    ASSERT_BIN8(BIN8(11001111), BIN8(11111100), 0);
+  }
+  Catch(e)
+  {
+    TEST_ASSERT_EQUAL(0, e);
+  }
 }
 }
 
 
 
 

+ 18 - 0
tinyusb/common/assertion.h

@@ -146,6 +146,24 @@ extern "C"
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // TODO Bin Assert
 // TODO Bin Assert
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
+#define BIN8_PRINTF_PATTERN "%d%d%d%d%d%d%d%d"
+#define BIN8_PRINTF_CONVERT(byte)  \
+  ((byte) & 0x80 ? 1 : 0), \
+  ((byte) & 0x40 ? 1 : 0), \
+  ((byte) & 0x20 ? 1 : 0), \
+  ((byte) & 0x10 ? 1 : 0), \
+  ((byte) & 0x08 ? 1 : 0), \
+  ((byte) & 0x04 ? 1 : 0), \
+  ((byte) & 0x02 ? 1 : 0), \
+  ((byte) & 0x01 ? 1 : 0)
+
+#define ASSERT_BIN8(...)        ASSERT_BIN8_EQUAL(__VA_ARGS__)
+#define ASSERT_BIN8_EQUAL(expected, actual, error)\
+    ASSERT_DEFINE(\
+                  uint8_t exp = (expected); uint8_t act = (actual),\
+                  exp==act,\
+                  error,\
+                  "expected " BIN8_PRINTF_PATTERN ", actual " BIN8_PRINTF_PATTERN, BIN8_PRINTF_CONVERT(exp), BIN8_PRINTF_CONVERT(act) )
 
 
 //--------------------------------------------------------------------+
 //--------------------------------------------------------------------+
 // TODO Bit Assert
 // TODO Bit Assert

+ 8 - 0
tinyusb/osal/osal.h

@@ -76,6 +76,14 @@
 
 
 typedef uint32_t osal_timeout_t;
 typedef uint32_t osal_timeout_t;
 
 
+//------------- Task -------------//
+#define OSAL_TASK_LOOP
+#define OSAL_TASK_LOOP_BEGIN
+#define OSAL_TASK_LOOP_END
+
+typedef uint32_t osal_task_t;
+tusb_error_t osal_task_create(osal_task_t *task);
+
 //------------- Semaphore -------------//
 //------------- Semaphore -------------//
 typedef uint32_t osal_semaphore_t;
 typedef uint32_t osal_semaphore_t;
 typedef void* osal_semaphore_handle_t;
 typedef void* osal_semaphore_handle_t;

+ 2 - 0
tinyusb/osal/osal_common.h

@@ -57,6 +57,8 @@
 
 
 #include "common/common.h"
 #include "common/common.h"
 
 
+//typedef void (*pfTask)( void * );
+
 enum
 enum
 {
 {
   OSAL_TIMEOUT_NOTIMEOUT = 0, // for use within ISR,  return immediately
   OSAL_TIMEOUT_NOTIMEOUT = 0, // for use within ISR,  return immediately