Example #1
0
/*
 * Builds on get_req test, to test path with trailing slash.
 */
static void test_nanocoap__get_path_trailing_slash(void)
{
    uint8_t buf[_BUF_SIZE];
    coap_pkt_t pkt;
    uint16_t msgid = 0xABCD;
    uint8_t token[2] = {0xDA, 0xEC};
    char path[] = "/time/";
    size_t uri_opt_len = 6;

    size_t len = coap_build_hdr((coap_hdr_t *)&buf[0], COAP_TYPE_NON,
                                &token[0], 2, COAP_METHOD_GET, msgid);

    coap_pkt_init(&pkt, &buf[0], sizeof(buf), len);

    len = coap_opt_add_string(&pkt, COAP_OPT_URI_PATH, &path[0], '/');
    TEST_ASSERT_EQUAL_INT(uri_opt_len, len);

    char uri[10] = {0};
    coap_get_uri_path(&pkt, (uint8_t *)&uri[0]);
    TEST_ASSERT_EQUAL_STRING((char *)path, (char *)uri);
}
Example #2
0
static void test_netdev_dummy_add_cb_successful(void)
{
    char src[] = TEST_STRING64;
    size_t src_len = UNITTESTS_NETDEV_DUMMY_MAX_ADDR_LEN;
    char dest[] = TEST_STRING64;
    size_t dest_len = UNITTESTS_NETDEV_DUMMY_MAX_ADDR_LEN;
    char data[] = TEST_STRING8;
#if UNITTESTS_NETDEV_DUMMY_MAX_PACKET < 8
    size_t data_len = UNITTESTS_NETDEV_DUMMY_MAX_PACKET;
#else
    size_t data_len = 8;
#endif
    TEST_ASSERT_EQUAL_INT(0, dev->driver->add_receive_data_callback(dev,
                          _fill_received));
    TEST_ASSERT_EQUAL_INT(0, unittest_netdev_dummy_fire_rcv_event(dev, src,
                          src_len, dest, dest_len, data, data_len));
    TEST_ASSERT_EQUAL_INT(src_len, received_src_len);
    TEST_ASSERT_EQUAL_INT(0, memcmp(received_src, src, src_len));
    TEST_ASSERT_EQUAL_INT(dest_len, received_dst_len);
    TEST_ASSERT_EQUAL_INT(0, memcmp(received_dst, dest, dest_len));
    TEST_ASSERT_EQUAL_INT(data_len, received_data_len);
    TEST_ASSERT_EQUAL_INT(0, memcmp(received_data, data, data_len));
}
void test_add_fd_with_pending_failing_connect ()
{
    zmq::thread_ctx_t thread_ctx;
    zmq::poller_t poller (thread_ctx);

    zmq::fd_t bind_socket = socket (AF_INET, SOCK_STREAM, 0);
    sockaddr_in addr = {0};
    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
    addr.sin_port = 0;
    TEST_ASSERT_EQUAL_INT (0, bind (bind_socket,
                                    reinterpret_cast<const sockaddr *> (&addr),
                                    sizeof (addr)));

    int addr_len = static_cast<int> (sizeof (addr));
    TEST_ASSERT_EQUAL_INT (0, getsockname (bind_socket,
                                           reinterpret_cast<sockaddr *> (&addr),
                                           &addr_len));

    zmq::fd_t connect_socket = socket (AF_INET, SOCK_STREAM, 0);
    zmq::unblock_socket (connect_socket);

    TEST_ASSERT_EQUAL_INT (
      -1, connect (connect_socket, reinterpret_cast<const sockaddr *> (&addr),
                   sizeof (addr)));
    TEST_ASSERT_EQUAL_INT (WSAEWOULDBLOCK, WSAGetLastError ());

    test_events_t events (connect_socket, poller);

    zmq::poller_t::handle_t handle = poller.add_fd (connect_socket, &events);
    events.set_handle (handle);
    poller.set_pollin (handle);
    poller.start ();

    wait_in_events (events);

    int value;
    int value_len = sizeof (value);
    TEST_ASSERT_EQUAL_INT (0, getsockopt (connect_socket, SOL_SOCKET, SO_ERROR,
                                          reinterpret_cast<char *> (&value),
                                          &value_len));
    TEST_ASSERT_EQUAL_INT (WSAECONNREFUSED, value);

    // required cleanup
    close (connect_socket);
    close (bind_socket);
}
Example #4
0
/*
 * Builds on get_req test, to test max length path.
 */
static void test_nanocoap__get_max_path(void)
{
    uint8_t buf[128];
    coap_pkt_t pkt;
    uint16_t msgid = 0xABCD;
    uint8_t token[2] = {0xDA, 0xEC};
    char path[] = "/23456789012345678901234567890123456789012345678901234567890123";
    /* includes extra byte for option length > 12 */
    size_t uri_opt_len = 64;

    size_t len = coap_build_hdr((coap_hdr_t *)&buf[0], COAP_TYPE_NON,
                                &token[0], 2, COAP_METHOD_GET, msgid);

    coap_pkt_init(&pkt, &buf[0], sizeof(buf), len);

    len = coap_opt_add_string(&pkt, COAP_OPT_URI_PATH, &path[0], '/');
    TEST_ASSERT_EQUAL_INT(uri_opt_len, len);

    char uri[NANOCOAP_URI_MAX] = {0};
    coap_get_uri(&pkt, (uint8_t *)&uri[0]);
    TEST_ASSERT_EQUAL_STRING((char *)path, (char *)uri);
}
Example #5
0
int test_defaults (int send_hwm_, int msg_cnt_)
{
    // Set up bind socket
    void *pub_socket = test_context_socket (ZMQ_PUB);
    TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (pub_socket, "inproc://a"));

    // Set up connect socket
    void *sub_socket = test_context_socket (ZMQ_SUB);
    TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sub_socket, "inproc://a"));

    //set a hwm on publisher
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (pub_socket, ZMQ_SNDHWM, &send_hwm_, sizeof (send_hwm_)));
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (sub_socket, ZMQ_SUBSCRIBE, 0, 0));

    // Send until we block
    int send_count = 0;
    while (send_count < msg_cnt_
           && zmq_send (pub_socket, NULL, 0, ZMQ_DONTWAIT) == 0)
        ++send_count;

    msleep (SETTLE_TIME);

    // Now receive all sent messages
    int recv_count = 0;
    while (0 == zmq_recv (sub_socket, NULL, 0, ZMQ_DONTWAIT)) {
        ++recv_count;
    }

    TEST_ASSERT_EQUAL_INT (send_hwm_, recv_count);

    // Clean up
    test_context_socket_close (sub_socket);
    test_context_socket_close (pub_socket);

    return recv_count;
}
Example #6
0
static void test_map_indefinite(void)
{
    {
        /* serialization */
        TEST_ASSERT(cbor_serialize_map_indefinite(&stream));
        TEST_ASSERT(cbor_serialize_int(&stream, 1));
        TEST_ASSERT(cbor_serialize_byte_string(&stream, "1"));
        TEST_ASSERT(cbor_serialize_int(&stream, 2));
        TEST_ASSERT(cbor_serialize_byte_string(&stream, "2"));
        TEST_ASSERT(cbor_write_break(&stream));
        unsigned char data[] = {0xbf,
                                0x01, 0x41, 0x31, /* kv-pair 1 */
                                0x02, 0x41, 0x32, /* kv-pair 2 */
                                0xff
                               };
        CBOR_CHECK_SERIALIZED(stream, data, sizeof(data));

        /* deserialization */
        size_t offset = cbor_deserialize_map_indefinite(&stream, 0);
        int count = 0;

        while (!cbor_at_break(&stream, offset)) {
            int key;
            char value[16];
            size_t read_bytes;
            offset += read_bytes = cbor_deserialize_int(&stream, offset, &key);
            TEST_ASSERT(read_bytes);
            offset += read_bytes = cbor_deserialize_byte_string(&stream, offset,
                                   value, sizeof(value));
            TEST_ASSERT(read_bytes);
            ++count;
        }

        TEST_ASSERT_EQUAL_INT(2, count);
        TEST_ASSERT(cbor_at_end(&stream, offset));
    }
}
Example #7
0
TEST(NDSlist, listFlush_nonEmpty) { 
  TEST_ASSERT_EQUAL_INT(0, nds_list_size(list));
  nds_list_insert_head(list, (nds_element_t) 1);
  nds_list_insert_head(list, (nds_element_t) 2);
  nds_list_insert_head(list, (nds_element_t) 3);
  TEST_ASSERT_EQUAL_INT(3, nds_list_size(list));

  nds_list_flush(list);
  TEST_ASSERT_EQUAL_INT(0, nds_list_size(list));
  TEST_ASSERT_NULL(nds_list_get_head(list));
  TEST_ASSERT_NULL(nds_list_get_tail(list));

  nds_list_insert_head(list, (nds_element_t) 1);
  nds_list_insert_tail(list, (nds_element_t) 2);
  TEST_ASSERT_EQUAL_INT(2, nds_list_size(list));
  TEST_ASSERT_EQUAL_INT(1, nds_list_get_head(list));
  TEST_ASSERT_EQUAL_INT(2, nds_list_get_tail(list));
  nds_list_flush(list);
  TEST_ASSERT_EQUAL_INT(0, nds_list_size(list));
  TEST_ASSERT_NULL(nds_list_get_head(list));
  TEST_ASSERT_NULL(nds_list_get_tail(list));
}
Example #8
0
TEST(UniqueMap, MapPutUnique)
{
  const int A = 0;
  const int B = 4;

  struct UniqueMap* map = create_unique_map(A, B);
  int values[] = {1,2,3};
  int k[3];
  k[0] = map_put_unique(map, &values[0]);
  TEST_ASSERT_TRUE(k[0] > A && k[0] < B);

  k[1] = map_put_unique(map, &values[1]);
  TEST_ASSERT_TRUE(k[1] > A && k[1] < B);
  TEST_ASSERT_NOT_EQUAL(k[0], k[1]);
  
  k[2] = map_put_unique(map, &values[2]);
  TEST_ASSERT_TRUE(k[2] > A && k[2] < B);
  TEST_ASSERT_NOT_EQUAL(k[0], k[2]);
  TEST_ASSERT_NOT_EQUAL(k[1], k[2]);

  TEST_ASSERT_EQUAL_INT(0, map_put_unique(map, &values[2]));

  destroy_unique_map(map);
}
TEST(api_bignum, capi_truncate_div__4)
{
  ScmObj bn1 = SCM_OBJ_INIT, bn2 = SCM_OBJ_INIT;
  ScmObj quo = SCM_OBJ_INIT, rem = SCM_OBJ_INIT;
  ScmObj expected_quo = SCM_OBJ_INIT, expected_rem = SCM_OBJ_INIT;

  SCM_REFSTK_INIT_REG(&bn1, &bn2, &quo, &rem,
                      &expected_quo, &expected_rem);

  bn1 = ut_read_cstr("-23058430092136939520");
  bn2 = ut_read_cstr("-9223372036854775808");
  TEST_ASSERT_TRUE(scm_bignum_p(bn1));
  TEST_ASSERT_TRUE(scm_bignum_p(bn2));

  expected_quo = ut_read_cstr("2");
  expected_rem = ut_read_cstr("-4611686018427387904");

  TEST_ASSERT_EQUAL_INT(0, scm_capi_truncate_div(bn1, bn2,
                                                 SCM_CSETTER_L(quo),
                                                 SCM_CSETTER_L(rem)));

  TEST_ASSERT_SCM_TRUE(scm_num_eq_P(expected_quo, quo));
  TEST_ASSERT_SCM_TRUE(scm_num_eq_P(expected_rem, rem));
}
Example #10
0
/* Server GET request success case. */
static void test_nanocoap__server_get_req(void)
{
    uint8_t buf[_BUF_SIZE];
    coap_pkt_t pkt;
    char path[] = "/riot/value";

    int res = _read_riot_value_req(&pkt, &buf[0]);

    TEST_ASSERT_EQUAL_INT(0, res);
    TEST_ASSERT_EQUAL_INT(COAP_METHOD_GET, coap_get_code(&pkt));
    TEST_ASSERT_EQUAL_INT(2, coap_get_token_len(&pkt));
    TEST_ASSERT_EQUAL_INT(4 + 2, coap_get_total_hdr_len(&pkt));
    TEST_ASSERT_EQUAL_INT(COAP_TYPE_NON, coap_get_type(&pkt));
    TEST_ASSERT_EQUAL_INT(0, pkt.payload_len);

    char uri[64] = {0};
    coap_get_uri_path(&pkt, (uint8_t *)&uri[0]);
    TEST_ASSERT_EQUAL_STRING((char *)path, (char *)uri);
}
Example #11
0
void test_routing_id ()
{
    //  Create the infrastructure
    void *sc = test_context_socket (ZMQ_DEALER);

    TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (sc, "inproc://routing_id"));

    void *sb = test_context_socket (ZMQ_ROUTER);

    TEST_ASSERT_SUCCESS_ERRNO (zmq_bind (sb, "inproc://routing_id"));

    //  Send 2-part message.
    TEST_ASSERT_EQUAL_INT (
      1, TEST_ASSERT_SUCCESS_ERRNO (zmq_send (sc, "A", 1, ZMQ_SNDMORE)));
    TEST_ASSERT_EQUAL_INT (
      1, TEST_ASSERT_SUCCESS_ERRNO (zmq_send (sc, "B", 1, 0)));

    //  Routing id comes first.
    zmq_msg_t msg;
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init (&msg));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, sb, 0));
    TEST_ASSERT_EQUAL_INT (1, zmq_msg_more (&msg));

    //  Then the first part of the message body.
    TEST_ASSERT_EQUAL_INT (
      1, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, sb, 0)));
    TEST_ASSERT_EQUAL_INT (1, zmq_msg_more (&msg));

    //  And finally, the second part of the message body.
    TEST_ASSERT_EQUAL_INT (
      1, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&msg, sb, 0)));
    TEST_ASSERT_EQUAL_INT (0, zmq_msg_more (&msg));

    //  Deallocate the infrastructure.
    test_context_socket_close (sc);
    test_context_socket_close (sb);
}
void test_data_can_create_complex_tree(void)
{
   TEST_IGNORE();
   int tree_data[] = { 4, 2, 6, 1, 3, 5, 7 };
   node_t *tree = build_tree(tree_data, ARRAY_SIZE(tree_data));

   TEST_ASSERT_NOT_NULL(tree);
   TEST_ASSERT_EQUAL_INT(4, tree->data);
   TEST_ASSERT_NOT_NULL(tree->left);
   TEST_ASSERT_NOT_NULL(tree->right);

   TEST_ASSERT_EQUAL_INT(2, tree->left->data);
   TEST_ASSERT_NOT_NULL(tree->left->left);
   TEST_ASSERT_NOT_NULL(tree->left->right);

   TEST_ASSERT_EQUAL_INT(6, tree->right->data);
   TEST_ASSERT_NOT_NULL(tree->right->left);
   TEST_ASSERT_NOT_NULL(tree->right->right);

   TEST_ASSERT_EQUAL_INT(1, tree->left->left->data);
   TEST_ASSERT_NULL(tree->left->left->left);
   TEST_ASSERT_NULL(tree->left->left->right);

   TEST_ASSERT_EQUAL_INT(3, tree->left->right->data);
   TEST_ASSERT_NULL(tree->left->right->left);
   TEST_ASSERT_NULL(tree->left->right->right);

   TEST_ASSERT_EQUAL_INT(5, tree->right->left->data);
   TEST_ASSERT_NULL(tree->right->left->left);
   TEST_ASSERT_NULL(tree->right->left->right);

   TEST_ASSERT_EQUAL_INT(7, tree->right->right->data);
   TEST_ASSERT_NULL(tree->right->right->left);
   TEST_ASSERT_NULL(tree->right->right->right);

   free_tree(tree);
}
Example #13
0
static void test_pktbuf_add__in_place(void)
{
    ng_pktsnip_t *pkt = ng_pktbuf_add(NULL, TEST_STRING16, sizeof(TEST_STRING16),
                                      NG_NETTYPE_UNDEF);
    ng_pktsnip_t *header;

    TEST_ASSERT_NOT_NULL((header = ng_pktbuf_add(pkt, pkt->data, 4, NG_NETTYPE_UNDEF)));
    TEST_ASSERT(header == pkt->next);
    TEST_ASSERT_EQUAL_STRING(TEST_STRING16, header->data); /* there is no 0 byte */
    TEST_ASSERT_EQUAL_INT(4, header->size);
    TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, header->type);
    TEST_ASSERT_EQUAL_INT(1, header->users);
    TEST_ASSERT_EQUAL_STRING(TEST_STRING16 + 4, pkt->data);
    TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 4, pkt->size);
    TEST_ASSERT_EQUAL_INT(NG_NETTYPE_UNDEF, pkt->type);
    TEST_ASSERT_EQUAL_INT(1, pkt->users);
    ng_pktbuf_release(header);
    ng_pktbuf_release(pkt);
    TEST_ASSERT(ng_pktbuf_is_empty());
}
Example #14
0
/*
 * Client GET request success case. Test request generation.
 * Request /time resource from libcoap example
 * Includes 2-byte token
 */
static void test_gcoap__client_get_req(void)
{
    uint8_t buf[GCOAP_PDU_BUF_SIZE];
    coap_pkt_t pdu;
    size_t len;
    char path[] = "/time";

    uint8_t pdu_data[] = {
        0x52, 0x01, 0xe6, 0x02, 0x9b, 0xce, 0xb4, 0x74,
        0x69, 0x6d, 0x65
    };

    len = gcoap_request(&pdu, &buf[0], GCOAP_PDU_BUF_SIZE, COAP_METHOD_GET,
                                                           &path[0]);

    TEST_ASSERT_EQUAL_INT(COAP_METHOD_GET, coap_get_code(&pdu));
    TEST_ASSERT_EQUAL_INT(GCOAP_TOKENLEN, coap_get_token_len(&pdu));
    TEST_ASSERT_EQUAL_INT(4 + GCOAP_TOKENLEN, coap_get_total_hdr_len(&pdu));
    TEST_ASSERT_EQUAL_INT(COAP_TYPE_NON, coap_get_type(&pdu));
    TEST_ASSERT_EQUAL_STRING(&path[0], (char *)&pdu.url[0]);
    TEST_ASSERT_EQUAL_INT(0, pdu.payload_len);
    TEST_ASSERT_EQUAL_INT(sizeof(pdu_data), len);
}
Example #15
0
static void test_pkt_len__1_elem__size_data(void)
{
    gnrc_pktsnip_t snip = _INIT_ELEM_STATIC_DATA(TEST_STRING8, NULL);

    TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING8), gnrc_pkt_len(&snip));
}
Example #16
0
static void test_pkt_len__1_elem__size_0(void)
{
    gnrc_pktsnip_t snip = _INIT_ELEM(0, NULL, NULL);

    TEST_ASSERT_EQUAL_INT(0, gnrc_pkt_len(&snip));
}
Example #17
0
static void test_pkt_len__NULL(void)
{
    TEST_ASSERT_EQUAL_INT(0, gnrc_pkt_len(NULL));
}
Example #18
0
static void test_pkt_count__null(void)
{
    TEST_ASSERT_EQUAL_INT(0, gnrc_pkt_count(NULL));
}
Example #19
0
static void test_stream_to_dealer ()
{
    int rc;
    char my_endpoint[MAX_SOCKET_STRING];

    //  We'll be using this socket in raw mode
    void *stream = test_context_socket (ZMQ_STREAM);

    int zero = 0;
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (stream, ZMQ_LINGER, &zero, sizeof (zero)));
    int enabled = 1;
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (stream, ZMQ_STREAM_NOTIFY, &enabled, sizeof (enabled)));
    bind_loopback_ipv4 (stream, my_endpoint, sizeof my_endpoint);

    //  We'll be using this socket as the other peer
    void *dealer = test_context_socket (ZMQ_DEALER);
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero)));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (dealer, my_endpoint));

    //  Send a message on the dealer socket
    send_string_expect_success (dealer, "Hello", 0);

    //  Connecting sends a zero message
    //  First frame is routing id
    zmq_msg_t routing_id;
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_init (&routing_id));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&routing_id, stream, 0));
    TEST_ASSERT_TRUE (zmq_msg_more (&routing_id));

    //  Verify the existence of Peer-Address metadata
    char const *peer_address = zmq_msg_gets (&routing_id, "Peer-Address");
    TEST_ASSERT_NOT_NULL (peer_address);
    TEST_ASSERT_EQUAL_STRING ("127.0.0.1", peer_address);

    //  Second frame is zero
    byte buffer[255];
    TEST_ASSERT_EQUAL_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (stream, buffer, 255, 0)));

    //  Verify the existence of Peer-Address metadata
    peer_address = zmq_msg_gets (&routing_id, "Peer-Address");
    TEST_ASSERT_NOT_NULL (peer_address);
    TEST_ASSERT_EQUAL_STRING ("127.0.0.1", peer_address);

    //  Real data follows
    //  First frame is routing id
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&routing_id, stream, 0));
    TEST_ASSERT_TRUE (zmq_msg_more (&routing_id));

    //  Verify the existence of Peer-Address metadata
    peer_address = zmq_msg_gets (&routing_id, "Peer-Address");
    TEST_ASSERT_NOT_NULL (peer_address);
    TEST_ASSERT_EQUAL_STRING ("127.0.0.1", peer_address);

    //  Second frame is greeting signature
    recv_array_expect_success (stream, greeting.signature, 0);

    //  Send our own protocol greeting
    TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_send (&routing_id, stream, ZMQ_SNDMORE));
    TEST_ASSERT_EQUAL_INT (
      sizeof (greeting), TEST_ASSERT_SUCCESS_ERRNO (
                           zmq_send (stream, &greeting, sizeof (greeting), 0)));

    //  Now we expect the data from the DEALER socket
    //  We want the rest of greeting along with the Ready command
    int bytes_read = 0;
    while (bytes_read < 97) {
        //  First frame is the routing id of the connection (each time)
        TEST_ASSERT_GREATER_THAN_INT (
          0, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&routing_id, stream, 0)));
        TEST_ASSERT_TRUE (zmq_msg_more (&routing_id));
        //  Second frame contains the next chunk of data
        TEST_ASSERT_SUCCESS_ERRNO (
          rc = zmq_recv (stream, buffer + bytes_read, 255 - bytes_read, 0));
        bytes_read += rc;
    }

    //  First two bytes are major and minor version numbers.
    TEST_ASSERT_EQUAL_INT (3, buffer[0]); //  ZMTP/3.0
    TEST_ASSERT_EQUAL_INT (0, buffer[1]);

    //  Mechanism is "NULL"
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer + 2,
                                  "NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 20);
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer + 54, "\4\51\5READY", 8);
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer + 62, "\13Socket-Type\0\0\0\6DEALER",
                                  22);
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer + 84, "\10Identity\0\0\0\0", 13);

    //  Announce we are ready
    memcpy (buffer, "\4\51\5READY", 8);
    memcpy (buffer + 8, "\13Socket-Type\0\0\0\6ROUTER", 22);
    memcpy (buffer + 30, "\10Identity\0\0\0\0", 13);

    //  Send Ready command
    TEST_ASSERT_GREATER_THAN_INT (0, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_send (
                                       &routing_id, stream, ZMQ_SNDMORE)));
    TEST_ASSERT_EQUAL_INT (
      43, TEST_ASSERT_SUCCESS_ERRNO (zmq_send (stream, buffer, 43, 0)));

    //  Now we expect the data from the DEALER socket
    //  First frame is, again, the routing id of the connection
    TEST_ASSERT_GREATER_THAN_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_recv (&routing_id, stream, 0)));
    TEST_ASSERT_TRUE (zmq_msg_more (&routing_id));

    //  Third frame contains Hello message from DEALER
    TEST_ASSERT_EQUAL_INT (7, TEST_ASSERT_SUCCESS_ERRNO (
                                zmq_recv (stream, buffer, sizeof buffer, 0)));

    //  Then we have a 5-byte message "Hello"
    TEST_ASSERT_EQUAL_INT (0, buffer[0]); //  Flags = 0
    TEST_ASSERT_EQUAL_INT (5, buffer[1]); //  Size = 5
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer + 2, "Hello", 5);

    //  Send "World" back to DEALER
    TEST_ASSERT_GREATER_THAN_INT (0, TEST_ASSERT_SUCCESS_ERRNO (zmq_msg_send (
                                       &routing_id, stream, ZMQ_SNDMORE)));
    byte world[] = {0, 5, 'W', 'o', 'r', 'l', 'd'};
    TEST_ASSERT_EQUAL_INT (
      sizeof (world),
      TEST_ASSERT_SUCCESS_ERRNO (zmq_send (stream, world, sizeof (world), 0)));

    //  Expect response on DEALER socket
    recv_string_expect_success (dealer, "World", 0);

    //  Test large messages over STREAM socket
#define size 64000
    uint8_t msgout[size];
    memset (msgout, 0xAB, size);
    zmq_send (dealer, msgout, size, 0);

    uint8_t msgin[9 + size];
    memset (msgin, 0, 9 + size);
    bytes_read = 0;
    while (bytes_read < 9 + size) {
        //  Get routing id frame
        TEST_ASSERT_GREATER_THAN_INT (
          0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (stream, buffer, 256, 0)));
        //  Get next chunk
        TEST_ASSERT_GREATER_THAN_INT (
          0,
          TEST_ASSERT_SUCCESS_ERRNO (rc = zmq_recv (stream, msgin + bytes_read,
                                                    9 + size - bytes_read, 0)));
        bytes_read += rc;
    }
    for (int byte_nbr = 0; byte_nbr < size; byte_nbr++) {
        TEST_ASSERT_EQUAL_UINT8 (0xAB, msgin[9 + byte_nbr]);
    }
    test_context_socket_close (dealer);
    test_context_socket_close (stream);
}
Example #20
0
static void test_stream_to_stream ()
{
    char my_endpoint[MAX_SOCKET_STRING];
    //  Set-up our context and sockets

    void *server = test_context_socket (ZMQ_STREAM);
    int enabled = 1;
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (server, ZMQ_STREAM_NOTIFY, &enabled, sizeof (enabled)));
    bind_loopback_ipv4 (server, my_endpoint, sizeof my_endpoint);

    void *client = test_context_socket (ZMQ_STREAM);
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_setsockopt (client, ZMQ_STREAM_NOTIFY, &enabled, sizeof (enabled)));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_connect (client, my_endpoint));
    uint8_t id[256];
    uint8_t buffer[256];

    //  Connecting sends a zero message
    //  Server: First frame is routing id, second frame is zero
    TEST_ASSERT_GREATER_THAN_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (server, id, 256, 0)));
    TEST_ASSERT_EQUAL_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (server, buffer, 256, 0)));
    //  Client: First frame is routing id, second frame is zero
    TEST_ASSERT_GREATER_THAN_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (client, id, 256, 0)));
    TEST_ASSERT_EQUAL_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (client, buffer, 256, 0)));

    //  Sent HTTP request on client socket
    //  Get server routing id
    size_t id_size = sizeof id;
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_getsockopt (client, ZMQ_ROUTING_ID, id, &id_size));
    //  First frame is server routing id
    TEST_ASSERT_EQUAL_INT ((int) id_size, TEST_ASSERT_SUCCESS_ERRNO (zmq_send (
                                            client, id, id_size, ZMQ_SNDMORE)));
    //  Second frame is HTTP GET request
    TEST_ASSERT_EQUAL_INT (
      7, TEST_ASSERT_SUCCESS_ERRNO (zmq_send (client, "GET /\n\n", 7, 0)));

    //  Get HTTP request; ID frame and then request
    TEST_ASSERT_GREATER_THAN_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (server, id, 256, 0)));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (server, buffer, 256, 0));
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer, "GET /\n\n", 7);

    //  Send reply back to client
    char http_response[] = "HTTP/1.0 200 OK\r\n"
                           "Content-Type: text/plain\r\n"
                           "\r\n"
                           "Hello, World!";
    TEST_ASSERT_SUCCESS_ERRNO (zmq_send (server, id, id_size, ZMQ_SNDMORE));
    TEST_ASSERT_SUCCESS_ERRNO (
      zmq_send (server, http_response, sizeof (http_response), ZMQ_SNDMORE));

    //  Send zero to close connection to client
    TEST_ASSERT_SUCCESS_ERRNO (zmq_send (server, id, id_size, ZMQ_SNDMORE));
    TEST_ASSERT_SUCCESS_ERRNO (zmq_send (server, NULL, 0, ZMQ_SNDMORE));

    //  Get reply at client and check that it's complete
    TEST_ASSERT_GREATER_THAN_INT (
      0, TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (client, id, 256, 0)));
    TEST_ASSERT_EQUAL_INT (
      sizeof http_response,
      TEST_ASSERT_SUCCESS_ERRNO (zmq_recv (client, buffer, 256, 0)));
    TEST_ASSERT_EQUAL_INT8_ARRAY (buffer, http_response,
                                  sizeof (http_response));

    // //  Get disconnection notification
    // FIXME: why does this block? Bug in STREAM disconnect notification?
    // id_size = zmq_recv (client, id, 256, 0);
    // assert (id_size > 0);
    // rc = zmq_recv (client, buffer, 256, 0);
    // assert (rc == 0);

    test_context_socket_close (server);
    test_context_socket_close (client);
}
Example #21
0
void test_do_gol_iteration(void)
{
    init_gol(4,4);
    table[1][1] = 1;
    table[2][1] = 1;
    table[1][2] = 1;
    table[2][2] = 1;

// Block pattern
    do_gol_iteration();
    TEST_ASSERT_EQUAL_INT(1, table[1][1]);
    TEST_ASSERT_EQUAL_INT(1, table[2][1]);
    TEST_ASSERT_EQUAL_INT(1, table[1][2]);
    TEST_ASSERT_EQUAL_INT(1, table[2][2]);

    TEST_ASSERT_EQUAL_INT(0, table[0][0]);
    TEST_ASSERT_EQUAL_INT(0, table[1][0]);
    TEST_ASSERT_EQUAL_INT(0, table[2][0]);
    TEST_ASSERT_EQUAL_INT(0, table[3][0]);
    TEST_ASSERT_EQUAL_INT(0, table[0][1]);
    TEST_ASSERT_EQUAL_INT(0, table[3][1]);
    TEST_ASSERT_EQUAL_INT(0, table[0][2]);
    TEST_ASSERT_EQUAL_INT(0, table[3][2]);
    TEST_ASSERT_EQUAL_INT(0, table[0][3]);
    TEST_ASSERT_EQUAL_INT(0, table[1][3]);
    TEST_ASSERT_EQUAL_INT(0, table[2][3]);
    TEST_ASSERT_EQUAL_INT(0, table[3][3]);

// Block pattern with an adjacent cell in the
// top-left corner, complete destruction
// after 4 iterations.
    table[0][1] = 1;
    do_gol_iteration();
    TEST_ASSERT_EQUAL_INT(0, table[0][0]);
    TEST_ASSERT_EQUAL_INT(1, table[1][0]);
    TEST_ASSERT_EQUAL_INT(0, table[2][0]);
    TEST_ASSERT_EQUAL_INT(0, table[3][0]);
    TEST_ASSERT_EQUAL_INT(1, table[0][1]);
    TEST_ASSERT_EQUAL_INT(0, table[1][1]);
    TEST_ASSERT_EQUAL_INT(1, table[2][1]);
    TEST_ASSERT_EQUAL_INT(0, table[3][1]);
    TEST_ASSERT_EQUAL_INT(1, table[0][2]);
    TEST_ASSERT_EQUAL_INT(0, table[1][2]);
    TEST_ASSERT_EQUAL_INT(1, table[2][2]);
    TEST_ASSERT_EQUAL_INT(0, table[3][2]);
    TEST_ASSERT_EQUAL_INT(0, table[0][3]);
    TEST_ASSERT_EQUAL_INT(0, table[1][3]);
    TEST_ASSERT_EQUAL_INT(0, table[2][3]);
    TEST_ASSERT_EQUAL_INT(0, table[3][3]);

    do_gol_iteration();
    TEST_ASSERT_EQUAL_INT(0, table[0][0]);
    TEST_ASSERT_EQUAL_INT(1, table[1][0]);
    TEST_ASSERT_EQUAL_INT(0, table[2][0]);
    TEST_ASSERT_EQUAL_INT(0, table[3][0]);
    TEST_ASSERT_EQUAL_INT(1, table[0][1]);
    TEST_ASSERT_EQUAL_INT(0, table[1][1]);
    TEST_ASSERT_EQUAL_INT(1, table[2][1]);
    TEST_ASSERT_EQUAL_INT(0, table[3][1]);
    TEST_ASSERT_EQUAL_INT(0, table[0][2]);
    TEST_ASSERT_EQUAL_INT(0, table[1][2]);
    TEST_ASSERT_EQUAL_INT(0, table[2][2]);
    TEST_ASSERT_EQUAL_INT(0, table[3][2]);
    TEST_ASSERT_EQUAL_INT(0, table[0][3]);
    TEST_ASSERT_EQUAL_INT(0, table[1][3]);
    TEST_ASSERT_EQUAL_INT(0, table[2][3]);
    TEST_ASSERT_EQUAL_INT(0, table[3][3]);

    do_gol_iteration();
    TEST_ASSERT_EQUAL_INT(0, table[0][0]);
    TEST_ASSERT_EQUAL_INT(1, table[1][0]);
    TEST_ASSERT_EQUAL_INT(0, table[2][0]);
    TEST_ASSERT_EQUAL_INT(0, table[3][0]);
    TEST_ASSERT_EQUAL_INT(0, table[0][1]);
    TEST_ASSERT_EQUAL_INT(1, table[1][1]);
    TEST_ASSERT_EQUAL_INT(0, table[2][1]);
    TEST_ASSERT_EQUAL_INT(0, table[3][1]);
    TEST_ASSERT_EQUAL_INT(0, table[0][2]);
    TEST_ASSERT_EQUAL_INT(0, table[1][2]);
    TEST_ASSERT_EQUAL_INT(0, table[2][2]);
    TEST_ASSERT_EQUAL_INT(0, table[3][2]);
    TEST_ASSERT_EQUAL_INT(0, table[0][3]);
    TEST_ASSERT_EQUAL_INT(0, table[1][3]);
    TEST_ASSERT_EQUAL_INT(0, table[2][3]);
    TEST_ASSERT_EQUAL_INT(0, table[3][3]);

    do_gol_iteration();
    TEST_ASSERT_EQUAL_INT(0, table[0][0]);
    TEST_ASSERT_EQUAL_INT(0, table[1][0]);
    TEST_ASSERT_EQUAL_INT(0, table[2][0]);
    TEST_ASSERT_EQUAL_INT(0, table[3][0]);
    TEST_ASSERT_EQUAL_INT(0, table[0][1]);
    TEST_ASSERT_EQUAL_INT(0, table[1][1]);
    TEST_ASSERT_EQUAL_INT(0, table[2][1]);
    TEST_ASSERT_EQUAL_INT(0, table[3][1]);
    TEST_ASSERT_EQUAL_INT(0, table[0][2]);
    TEST_ASSERT_EQUAL_INT(0, table[1][2]);
    TEST_ASSERT_EQUAL_INT(0, table[2][2]);
    TEST_ASSERT_EQUAL_INT(0, table[3][2]);
    TEST_ASSERT_EQUAL_INT(0, table[0][3]);
    TEST_ASSERT_EQUAL_INT(0, table[1][3]);
    TEST_ASSERT_EQUAL_INT(0, table[2][3]);
    TEST_ASSERT_EQUAL_INT(0, table[3][3]);
}
Example #22
0
void test_count_neighbours(void)
{
    init_gol(1,1);    
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(0, 0));

    init_gol(2,2);
    table[1][1] = 1;
    table[1][0] = 1;
    table[0][1] = 1;
    table[0][0] = 1;
    TEST_ASSERT_EQUAL_INT(3, count_neighbours(0, 0));

    init_gol(3,3);    
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(1, 1));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(0, 0));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(0, 2));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(2, 0));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(2, 2));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(0, 1));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(1, 0));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(2, 1));
    TEST_ASSERT_EQUAL_INT(0, count_neighbours(1, 2));

    init_gol(3,3);
    memset(table[0], 1, 3);
    memset(table[1], 1, 3);
    memset(table[2], 1, 3);
    TEST_ASSERT_EQUAL_INT(8, count_neighbours(1, 1));
    TEST_ASSERT_EQUAL_INT(3, count_neighbours(0, 0));
    TEST_ASSERT_EQUAL_INT(3, count_neighbours(0, 2));
    TEST_ASSERT_EQUAL_INT(3, count_neighbours(2, 0));
    TEST_ASSERT_EQUAL_INT(3, count_neighbours(2, 2));
    TEST_ASSERT_EQUAL_INT(5, count_neighbours(0, 1));
    TEST_ASSERT_EQUAL_INT(5, count_neighbours(1, 0));
    TEST_ASSERT_EQUAL_INT(5, count_neighbours(2, 1));
    TEST_ASSERT_EQUAL_INT(5, count_neighbours(1, 2));
}
/**
 * In case of TW_MR_SLA_NACK, TW_MT_SLA_ACK, TW_MR_SLA_ACK, TW_MT_SLA_NACK, TW_MT_DATA_NACK,
 * TW_MT_DATA_ACK, TW_START or TW_REP_START next data byte from txRingBuffer, if available,
 * shall be sent and interrupt cleared (TWINT).
 * Set above mentioned two wire status, put one byte in txRingBuffer, call ISR and test if
 * byte was consumed in ISR and TW_INT was set. For TW_MR_SLA_NACK, TW_MT_SLA_ACK,
 * TW_MR_SLA_ACK, TW_MT_SLA_NACK, TW_MT_DATA_NACK and TW_MT_DATA_ACK two bytes need to be
 * put into buffer (see previous test)
 */
static void TwoWirePlus_BaseTest_ISR_TC4(void)
{
	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_MR_SLA_NACK;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0x55;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0x55, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_MT_SLA_ACK;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0x55;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0x55, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_MR_SLA_ACK;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0x55;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0x55, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_MT_SLA_NACK;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0x55;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0x55, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_MT_DATA_ACK;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0x55;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0x55, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_START;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0xaa, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);

	TwoWirePlus_BaseTest_resetBuffer();
	TWSR = TW_REP_START;
	TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_txRingBuffer.head] = 0xaa;
	TwoWirePlus_incrementIndex(TwoWirePlus_txRingBuffer.head);
	TwoWirePlus_txRingBuffer.lastOperation = TWOWIREPLUS_LASTOPERATION_WRITE;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT(0xaa, TWDR);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);
}
Example #24
0
static void test_pkt_count__1_elem(void)
{
    gnrc_pktsnip_t snip1 = _INIT_ELEM_STATIC_DATA(TEST_STRING8, NULL);

    TEST_ASSERT_EQUAL_INT(1, gnrc_pkt_count(&snip1));
}
Example #25
0
static void test_ipv6_netif_add_addr__no_iface2(void)
{
    TEST_ASSERT_EQUAL_INT(-ENOENT, ng_ipv6_netif_add_addr(DEFAULT_TEST_NETIF,
                          NULL, DEFAULT_TEST_PREFIX_LEN, false));
}
Example #26
0
TEST(Stream, default_chunk_size_is_one)
{
    TEST_ASSERT_EQUAL_INT(1, Stream_GetChunkSize(stream));
}
Example #27
0
static void test_pktbuf_mark__success_small(void)
{
    uint8_t *data = (uint8_t *)(TEST_STRING16);
    gnrc_pktsnip_t *pkt1 = gnrc_pktbuf_add(NULL, data, sizeof(TEST_STRING16),
                                           GNRC_NETTYPE_TEST);
    gnrc_pktsnip_t *pkt2;
    uint8_t exp_data1[sizeof(TEST_STRING16) - 1];
    uint8_t exp_data2[1];

    memcpy(exp_data1, data + sizeof(exp_data2), sizeof(exp_data1));
    memcpy(exp_data2, data, sizeof(exp_data2));

    TEST_ASSERT_NOT_NULL(pkt1);
    TEST_ASSERT_NOT_NULL((pkt2 = gnrc_pktbuf_mark(pkt1, 1, GNRC_NETTYPE_UNDEF)));
    TEST_ASSERT(gnrc_pktbuf_is_sane());
    TEST_ASSERT(pkt1->next == pkt2);
    TEST_ASSERT_NOT_NULL(pkt1->data);
    TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data1, pkt1->data, pkt1->size));
    TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 1, pkt1->size);
    TEST_ASSERT_EQUAL_INT(GNRC_NETTYPE_TEST, pkt1->type);
    TEST_ASSERT_EQUAL_INT(1, pkt1->users);
    TEST_ASSERT_NULL(pkt2->next);
    TEST_ASSERT_NOT_NULL(pkt2->data);
    TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data2, pkt2->data, pkt2->size));
    TEST_ASSERT_EQUAL_INT(1, pkt2->size);
    TEST_ASSERT_EQUAL_INT(GNRC_NETTYPE_UNDEF, pkt2->type);
    TEST_ASSERT_EQUAL_INT(1, pkt2->users);

    /* check if slightly larger packet would override data */
    gnrc_pktbuf_remove_snip(pkt1, pkt2);
    pkt2 = gnrc_pktbuf_add(NULL, TEST_STRING12, 3, GNRC_NETTYPE_TEST);
    TEST_ASSERT(gnrc_pktbuf_is_sane());
    TEST_ASSERT_NOT_NULL(pkt1->data);
    TEST_ASSERT_EQUAL_INT(0, memcmp(exp_data1, pkt1->data, pkt1->size));
    TEST_ASSERT_EQUAL_INT(sizeof(TEST_STRING16) - 1, pkt1->size);
    TEST_ASSERT_EQUAL_INT(GNRC_NETTYPE_TEST, pkt1->type);
    TEST_ASSERT_EQUAL_INT(1, pkt1->users);

    /* check if everything can be cleaned up */
    gnrc_pktbuf_release(pkt1);
    gnrc_pktbuf_release(pkt2);
    TEST_ASSERT(gnrc_pktbuf_is_empty());
}
Example #28
0
TEST(Stream, chunk_size_can_be_changed)
{
    Stream_SetChunkSize(stream, 3);
    TEST_ASSERT_EQUAL_INT(3, Stream_GetChunkSize(stream));
}
/**
 * Request a few bytes from two wire slave device. Make slave device
 * ACK his address. This test tests a typical two wire slave device
 * read.
 */
static void TwoWirePlus_BaseTest_MasterReceiver_TC1(void)
{
	TwoWirePlus_BaseTest_resetBuffer();

	/* Start reading from address 0x42 four bytes */
	Wire.beginReception(0x42);
	/* Test if address SLA+R was written to txRingBuffer and that START was requested in TWCR */
	TEST_ASSERT_EQUAL_INT(TWOWIREPLUS_LASTOPERATION_WRITE, TwoWirePlus_txRingBuffer.lastOperation);
	TEST_ASSERT_EQUAL_INT(((0x42 << 1) | 0x01), TwoWirePlus_txRingBuffer.buffer[TwoWirePlus_BaseTest_previousElement(TwoWirePlus_txRingBuffer.head)]);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_TWCR_START), TWCR);
	/* Request four bytes and see if they are requested */
	Wire.requestBytes(4);
	TEST_ASSERT_EQUAL_INT(0x4, TwoWirePlus_bytesToReceive);
	/* Emulate START was generated */
	TWSR = TW_START;
	TWI_vect();
	/* Check if global TwoWirePlus_status was set correctly to START */
	TEST_ASSERT_EQUAL_INT((TW_START), TwoWirePlus_status);
	/* Preset TwoWirePlus_status register to emulate ACK for address from two wire slave device */
	TWSR = TW_MR_SLA_ACK;
	TWI_vect();
	/* Test if TwoWirePlus_status is set correctly and SLA+R was read from txRingBuffer and written to tw data register */
	TEST_ASSERT_EQUAL_INT((TW_MR_SLA_ACK), TwoWirePlus_status);
	TEST_ASSERT_EQUAL_INT(TWOWIREPLUS_LASTOPERATION_READ, TwoWirePlus_txRingBuffer.lastOperation);
	TEST_ASSERT_EQUAL_INT(((0x42 << 1) | 0x01), TWDR);
	/* Test if txRingBuffer is empty now because address was sent. */
	TEST_ASSERT(TwoWirePlus_RingBufferEmpty(TwoWirePlus_txRingBuffer));
	/* Check if  TWIE, TWEN, TWEA and TWINT were set in ISR. */
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);
	/* Now signal three bytes to be received from two wire slave device. Test if TWCR is set
	 * correctly to make sure ACK and not NACK was sent. */
	TWSR = TW_MR_DATA_ACK;
	TWDR = 0xa1;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT((TW_MR_DATA_ACK), TwoWirePlus_status);
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);
	TWDR = 0xa2;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);
	TWDR = 0xa3;
	TWI_vect();
	/* For the very last by a NACK shall be sent TWEA = 0 */
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWIE | TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWINT), TWCR);
	/* Signal last byte and test if NACH (TWEA not set) is returned to two wire slave device */
	TWDR = 0xa4;
	TWI_vect();
	TEST_ASSERT_EQUAL_INT((TWOWIREPLUS_BASETEST_TWCR_TWEN | TWOWIREPLUS_BASETEST_TWCR_TWEA ), TWCR);
	/* Test if we really received four bytes and if the values match */
	TEST_ASSERT_EQUAL_INT(4, Wire.available());
	TEST_ASSERT_EQUAL_INT(0xa1, Wire.read());
	TEST_ASSERT_EQUAL_INT(3, Wire.available());
	TEST_ASSERT_EQUAL_INT(0xa2, Wire.read());
	TEST_ASSERT_EQUAL_INT(2, Wire.available());
	TEST_ASSERT_EQUAL_INT(0xa3, Wire.read());
	TEST_ASSERT_EQUAL_INT(1, Wire.available());
	TEST_ASSERT_EQUAL_INT(0xa4, Wire.read());
	TEST_ASSERT_EQUAL_INT(0, Wire.available());
	/* Wire.endReception can't be tested. A bit is set in this function and function will wait until bit is cleared in ISR */
}
Example #30
0
static void testInit(void)
{
	TEST_ASSERT_EQUAL_INT(0, Counter_value(counterRef));
}