<commit_before>/******************************************************************
 *
 * uEcho for C
 *
 * Copyright (C) <NAME> 2015
 *
 * This is licensed under BSD-style license, see file COPYING.
 *
 ******************************************************************/

#include <boost/test/unit_test.hpp>

#include <uecho/message_internal.h>

BOOST_AUTO_TEST_CASE(MessageBasicFunctions)
{
  uEchoMessage *msg = uecho_message_new();
  
  uecho_message_settid(msg, uEchoEhd1);
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoEhd1);

  uecho_message_setehd2(msg, uEchoEhd2);
  BOOST_CHECK_EQUAL(uecho_message_getehd2(msg), (uEchoTID)uEchoEhd2);
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageTid)
{
  uEchoMessage *msg = uecho_message_new();
  
  BOOST_CHECK(uecho_message_settid(msg, uEchoTidMin));
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoTidMin);
  
  BOOST_CHECK(uecho_message_settid(msg, uEchoTidMax));
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoTidMax);
  
  srand((int)time(NULL));
  for (int n=0; n<100; n++) {
    int tid = rand() % uEchoTidMax;
    BOOST_CHECK(uecho_message_settid(msg, tid));
    BOOST_CHECK_EQUAL(uecho_message_gettid(msg), tid);
  }
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageBadDataLength)
{
  uEchoMessage *msg = uecho_message_new();
  
  for (int n=0; n<uEchoMessageMinLen; n++) {
    BOOST_CHECK(!uecho_message_parse(msg, NULL, n));
  }
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageBadHeader)
{
  uEchoMessage *msg = uecho_message_new();
  
  byte msgBytes[] = {
    0x00,
    0x00,
    0x00, 0x00,
    0x00, 0x00, 0x00,
    0x00, 0x00, 0x00,
    0x00,
    0x00,
  };
  
  BOOST_CHECK(!uecho_message_parse(msg, msgBytes, uEchoMessageMinLen));
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageRequest)
{
  uEchoMessage *msg = uecho_message_new();

  byte msgBytes[] = {
    uEchoEhd1,
    uEchoEhd2,
    0x00, 0x00,
    0xA0, 0xB0, 0xC0,
    0xD0, 0xE0, 0xF0,
    uEchoEsvReadRequest,
    3,
    1, 1, 'a',
    2, 2, 'b', 'c',
    3, 3, 'c', 'd', 'e',
  };
  
  BOOST_CHECK(uecho_message_parse(msg, msgBytes, sizeof(msgBytes)));

  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), 0);

  BOOST_CHECK_EQUAL(uecho_message_getsourceobjectcode(msg), 0xA0B0C0);
  BOOST_CHECK_EQUAL(uecho_message_getdestinationobjectcode(msg), 0xD0E0F0);
  
  BOOST_CHECK_EQUAL(uecho_message_getesv(msg), uEchoEsvReadRequest);
  
  BOOST_CHECK_EQUAL(uecho_message_getopc(msg), 3);
  
  for (int n=1; n<=uecho_message_getopc(msg); n++) {
    uEchoProperty *prop = uecho_message_getproperty(msg, (n-1));
    BOOST_CHECK(prop);
    BOOST_CHECK_EQUAL(uecho_property_getcode(prop), n);
    BOOST_CHECK_EQUAL(uecho_property_getdatasize(prop), n);<commit_msg>* Fixed warnings with GCC 5.4.0.<commit_after>/******************************************************************
 *
 * uEcho for C
 *
 * Copyright (C) <NAME> 2015
 *
 * This is licensed under BSD-style license, see file COPYING.
 *
 ******************************************************************/

#include <boost/test/unit_test.hpp>

#include <uecho/message_internal.h>

BOOST_AUTO_TEST_CASE(MessageBasicFunctions)
{
  uEchoMessage *msg = uecho_message_new();
  
  uecho_message_settid(msg, uEchoEhd1);
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoEhd1);

  uecho_message_setehd2(msg, uEchoEhd2);
  BOOST_CHECK_EQUAL(uecho_message_getehd2(msg), (uEchoTID)uEchoEhd2);
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageTid)
{
  uEchoMessage *msg = uecho_message_new();
  
  BOOST_CHECK(uecho_message_settid(msg, uEchoTidMin));
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoTidMin);
  
  BOOST_CHECK(uecho_message_settid(msg, uEchoTidMax));
  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), (uEchoTID)uEchoTidMax);
  
  srand((int)time(NULL));
  for (int n=0; n<100; n++) {
    int tid = rand() % uEchoTidMax;
    BOOST_CHECK(uecho_message_settid(msg, tid));
    BOOST_CHECK_EQUAL(uecho_message_gettid(msg), tid);
  }
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageBadDataLength)
{
  uEchoMessage *msg = uecho_message_new();
  
  for (int n=0; n<uEchoMessageMinLen; n++) {
    BOOST_CHECK(!uecho_message_parse(msg, NULL, n));
  }
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageBadHeader)
{
  uEchoMessage *msg = uecho_message_new();
  
  byte msgBytes[] = {
    0x00,
    0x00,
    0x00, 0x00,
    0x00, 0x00, 0x00,
    0x00, 0x00, 0x00,
    0x00,
    0x00,
  };
  
  BOOST_CHECK(!uecho_message_parse(msg, msgBytes, uEchoMessageMinLen));
  
  uecho_message_delete(msg);
}

BOOST_AUTO_TEST_CASE(MessageRequest)
{
  uEchoMessage *msg = uecho_message_new();

  byte msgBytes[] = {
    uEchoEhd1,
    uEchoEhd2,
    0x00, 0x00,
    0xA0, 0xB0, 0xC0,
    0xD0, 0xE0, 0xF0,
    uEchoEsvReadRequest,
    3,
    1, 1, 'a',
    2, 2, 'b', 'c',
    3, 3, 'c', 'd', 'e',
  };
  
  BOOST_CHECK(uecho_message_parse(msg, msgBytes, sizeof(msgBytes)));

  BOOST_CHECK_EQUAL(uecho_message_gettid(msg), 0);

  BOOST_CHECK_EQUAL(uecho_message_getsourceobjectcode(msg), 0xA0B0C0);
  BOOST_CHECK_EQUAL(uecho_message_getdestinationobjectcode(msg), 0xD0E0F0);
  
  BOOST_CHECK_EQUAL(uecho_message_getesv(msg), (uEchoEsv)uEchoEsvReadRequest);
  
  BOOST_CHECK_EQUAL(uecho_message_getopc(msg), 3);
  
  for (int n=1; n<=uecho_message_getopc(msg); n++) {
    uEchoProperty *prop = uecho_message_getproperty(msg, (n-1));
    BOOST_CHECK(prop);
    BOOST_CHECK_EQUAL(uecho_property_getcode(prop), n);
    BOOST_CHECK_EQUAL(uecho_property_getdatasize(prop), n);
{'fraction_non_alphanumeric': 0.16741191200143088, 'fraction_numerical': 0.03273117510284385, 'mean_word_length': 5.434982738780207, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6473232', 'n_tokens_mistral': 2420, 'n_tokens_neox': 2296, 'n_words': 310}