USB composite device example program, drag-and-drop flash writer.
Dependencies: SWD USBDevice mbed BaseDAP
tests/mytest.h@1:ea8e179320d7, 2013-09-28 (annotated)
- Committer:
- va009039
- Date:
- Sat Sep 28 03:21:14 2013 +0000
- Revision:
- 1:ea8e179320d7
- Parent:
- 0:2385683c867a
add USBMSD_Drop class. add CDC(Virtual COM) and HID(for example CMSIS-DAP), but KL25Z not work.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
va009039 | 0:2385683c867a | 1 | // mytest.h 2013/6/28 |
va009039 | 0:2385683c867a | 2 | #pragma once |
va009039 | 0:2385683c867a | 3 | #include "mbed_debug.h" |
va009039 | 0:2385683c867a | 4 | |
va009039 | 0:2385683c867a | 5 | class BaseTest { |
va009039 | 0:2385683c867a | 6 | public: |
va009039 | 0:2385683c867a | 7 | virtual void _run() = 0; |
va009039 | 0:2385683c867a | 8 | char* m_a; |
va009039 | 0:2385683c867a | 9 | char* m_b; |
va009039 | 0:2385683c867a | 10 | int m_line; |
va009039 | 0:2385683c867a | 11 | char* m_file; |
va009039 | 0:2385683c867a | 12 | BaseTest* next; |
va009039 | 0:2385683c867a | 13 | }; |
va009039 | 0:2385683c867a | 14 | |
va009039 | 0:2385683c867a | 15 | class reg { |
va009039 | 0:2385683c867a | 16 | BaseTest* head; |
va009039 | 0:2385683c867a | 17 | BaseTest* tail; |
va009039 | 0:2385683c867a | 18 | reg() { |
va009039 | 0:2385683c867a | 19 | head = NULL; |
va009039 | 0:2385683c867a | 20 | tail = NULL; |
va009039 | 0:2385683c867a | 21 | } |
va009039 | 0:2385683c867a | 22 | public: |
va009039 | 0:2385683c867a | 23 | static reg* inst() { |
va009039 | 0:2385683c867a | 24 | static reg regtest; |
va009039 | 0:2385683c867a | 25 | return ®test; |
va009039 | 0:2385683c867a | 26 | } |
va009039 | 0:2385683c867a | 27 | void add(BaseTest* test) { |
va009039 | 0:2385683c867a | 28 | test->next = NULL; |
va009039 | 0:2385683c867a | 29 | if (head == NULL) { |
va009039 | 0:2385683c867a | 30 | head = test; |
va009039 | 0:2385683c867a | 31 | tail = test; |
va009039 | 0:2385683c867a | 32 | } else { |
va009039 | 0:2385683c867a | 33 | tail->next = test; |
va009039 | 0:2385683c867a | 34 | tail = test; |
va009039 | 0:2385683c867a | 35 | } |
va009039 | 0:2385683c867a | 36 | } |
va009039 | 0:2385683c867a | 37 | int run_all_tests(char* a = "") { |
va009039 | 0:2385683c867a | 38 | BaseTest* test = head; |
va009039 | 0:2385683c867a | 39 | int pass = 0; |
va009039 | 0:2385683c867a | 40 | int count = 0; |
va009039 | 0:2385683c867a | 41 | char* file = ""; |
va009039 | 0:2385683c867a | 42 | while(test) { |
va009039 | 0:2385683c867a | 43 | if (strcmp(a, "") == 0 || strcmp(a, test->m_a) == 0) { |
va009039 | 0:2385683c867a | 44 | if (strcmp(file, test->m_file) != 0) { |
va009039 | 0:2385683c867a | 45 | file = test->m_file; |
va009039 | 0:2385683c867a | 46 | debug("%s\n", file); |
va009039 | 0:2385683c867a | 47 | } |
va009039 | 0:2385683c867a | 48 | debug("TEST(%s,%s)@%d ... ",test->m_a, test->m_b, test->m_line); |
va009039 | 0:2385683c867a | 49 | Timer t; t.start(); |
va009039 | 0:2385683c867a | 50 | test->_run(); |
va009039 | 0:2385683c867a | 51 | debug("OK (%d ms)\n", t.read_ms()); |
va009039 | 0:2385683c867a | 52 | pass++; |
va009039 | 0:2385683c867a | 53 | } |
va009039 | 0:2385683c867a | 54 | test = test->next; |
va009039 | 0:2385683c867a | 55 | count++; |
va009039 | 0:2385683c867a | 56 | } |
va009039 | 0:2385683c867a | 57 | debug("%d/%d TESTS PASSED!!!\n", pass, count); |
va009039 | 0:2385683c867a | 58 | return 0; |
va009039 | 0:2385683c867a | 59 | } |
va009039 | 0:2385683c867a | 60 | }; |
va009039 | 0:2385683c867a | 61 | |
va009039 | 0:2385683c867a | 62 | #define TEST(A,B) \ |
va009039 | 0:2385683c867a | 63 | class class_##A##_##B : public BaseTest { \ |
va009039 | 0:2385683c867a | 64 | public: \ |
va009039 | 0:2385683c867a | 65 | class_##A##_##B(char* a, char* b, char* file, int line) { \ |
va009039 | 0:2385683c867a | 66 | m_a = a; m_b = b; \ |
va009039 | 0:2385683c867a | 67 | m_file = file; m_line = line; \ |
va009039 | 0:2385683c867a | 68 | reg::inst()->add(this); \ |
va009039 | 0:2385683c867a | 69 | } \ |
va009039 | 0:2385683c867a | 70 | virtual void _run(); \ |
va009039 | 0:2385683c867a | 71 | }; \ |
va009039 | 0:2385683c867a | 72 | class_##A##_##B instance_##A##_##B(#A,#B,__FILE__,__LINE__); \ |
va009039 | 0:2385683c867a | 73 | void class_##A##_##B::_run() |
va009039 | 0:2385683c867a | 74 | |
va009039 | 0:2385683c867a | 75 | #define RUN_TEST(A,B) instance_##A##_##B._run() |
va009039 | 0:2385683c867a | 76 | #define RUN_ALL_TESTS(A) reg::inst()->run_all_tests(#A) |
va009039 | 0:2385683c867a | 77 | #define ASSERT_TRUE(A) if(A){}else{debug("\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);}; |
va009039 | 0:2385683c867a | 78 | |
va009039 | 0:2385683c867a | 79 | #ifndef DBG |
va009039 | 0:2385683c867a | 80 | #define DBG(FMT, ...) do{debug("[%s:%d]"FMT"\r\n", __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);}while(0); |
va009039 | 0:2385683c867a | 81 | #endif |
va009039 | 0:2385683c867a | 82 | #define TEST_PRINT(FMT, ...) do{debug("[TEST: %d]"FMT"\r\n", __LINE__, ##__VA_ARGS__);}while(0); |