END_TEST /* * Test imprint() and done(). */ START_TEST(test_FIXMessageTX_composition) { int n; size_t len; const uint8_t *data; const char *msg_type; const struct timeval *ttl; FIXMessageTX tx_msg(DELIM); fail_unless(1 == tx_msg.init(), NULL); // // set msg type and append fields // fail_unless(1 == tx_msg.append_field(35, strlen("FOOBAR"), (const uint8_t*)"FOOBAR"), NULL); n = 0; while (test_fields_0[n].tag) { fail_unless(1 == tx_msg.append_field(test_fields_0[n].tag, strlen(test_fields_0[n].value), (const uint8_t*)test_fields_0[n].value), NULL); ++n; } fail_unless(1 == tx_msg.expose(&ttl, len, &data, &msg_type), NULL); fail_unless(0 == memcmp(data, partial_messages_tx[0], len), NULL); fail_unless(0 == strcmp("FOOBAR", msg_type), NULL); // // new message type and new message // fail_unless(1 == tx_msg.append_field(35, strlen("8"), (const uint8_t*)"8"), NULL); n = 0; while (test_fields_1[n].tag) { fail_unless(1 == tx_msg.append_field(test_fields_1[n].tag, strlen(test_fields_1[n].value), (const uint8_t*)test_fields_1[n].value), NULL); ++n; } fail_unless(1 == tx_msg.expose(&ttl, len, &data, &msg_type), NULL); fail_unless(0 == memcmp(data, partial_messages_tx[1], len), NULL); fail_unless(0 == strcmp("8", msg_type), NULL); // // keep the message type but feed it a new message // n = 0; while (test_fields_0[n].tag) { fail_unless(1 == tx_msg.append_field(test_fields_0[n].tag, strlen(test_fields_0[n].value), (const uint8_t*)test_fields_0[n].value), NULL); ++n; } fail_unless(1 == tx_msg.expose(&ttl, len, &data, &msg_type), NULL); fail_unless(0 == memcmp(data, partial_messages_tx[0], len), NULL); fail_unless(0 == strcmp("8", msg_type), NULL); }
int main() { MBED_HOSTTEST_TIMEOUT(20); MBED_HOSTTEST_SELECT(dev_null); MBED_HOSTTEST_DESCRIPTION(CAN Loopback); MBED_HOSTTEST_START("MBED_A27"); #if !defined(TARGET_VK_RZ_A1H) can1.mode(CAN::Reset); #endif if (!can1.mode(CAN::LocalTest)) { printf("Mode change failed\n"); } char success_count = 0; for (char i=0; i < TEST_ITERATIONS; i++) { unsigned int id = 1337; CANMessage tx_msg(id, &i, sizeof(i)); bool sent = false; if (can1.write(tx_msg)) { printf("Sent %u: %d\n", id, i); sent = true; } wait_ms(50); bool read = false; CANMessage rx_msg; if (can1.read(rx_msg)) { printf("Read %u: %d\n", rx_msg.id, rx_msg.data[0]); read = (rx_msg.id == id) && (rx_msg.data[0] == i); } bool success = sent && read; if (success) { success_count++; } } MBED_HOSTTEST_RESULT(success_count == TEST_ITERATIONS); }