Ejemplo n.º 1
0
/*
** Test reset filter calls
*/
void Test_FilterReset (void)
{

  CFE_EVS_BinFilter_t filter;

  filter.EventID = 1;
  filter.Mask = 0x0001;
  CFE_EVS_Register(&filter, 1, CFE_EVS_BINARY_FILTER);

  /* TEST: invalid ID for filter reset */
  UT_Report(CFE_EVS_ResetFilter(CFE_EVS_MAX_EVENT_FILTERS + 1) == CFE_SUCCESS,
            "CFE_EVS_ResetFilter", "invalid event ID");

  /* TEST: unregistered ID for filter reset */
  UT_Report(CFE_EVS_ResetFilter(-1) == CFE_SUCCESS,
            "CFE_EVS_ResetFilter", "unregistered event ID");

  /* TEST: valid ID for filter reset */
  UT_Report(CFE_EVS_ResetFilter(1) == CFE_SUCCESS,
            "CFE_EVS_ResetFilter", "valid reset filter");

  /* TEST: valid reset of all filters */
  UT_Report(CFE_EVS_ResetAllFilters() == CFE_SUCCESS,
            "CFE_EVS_ResetAllFilters", "valid reset all filters");

  /* Return application to original state, re-register application */
  CFE_EVS_Register(NULL, 0, CFE_EVS_BINARY_FILTER);

}
Ejemplo n.º 2
0
/*
** Test functions using an unregistered application
*/
void Test_UnregisteredApp (void)
{

  /* Unregister the application (it gets registered in CFE_EVS_TaskInit) */
  CFE_EVS_Unregister();

  

  /* TEST: application not registered */
  UT_Report(CFE_EVS_Unregister() == CFE_EVS_APP_NOT_REGISTERED,
            "CFE_EVS_Unregister","app not registered");

  UT_Report(CFE_EVS_SendEvent(0, 0, "NULL") == CFE_EVS_APP_NOT_REGISTERED,
            "CFE_EVS_SendEvent", "app not registered");


  UT_Report(CFE_EVS_ResetFilter(0) == CFE_EVS_APP_NOT_REGISTERED,
            "CFE_EVS_ResetFilter", "app not registered");
  
  UT_Report(CFE_EVS_ResetAllFilters() == CFE_EVS_APP_NOT_REGISTERED,
            "CFE_EVS_ResetAllFilters", "app not registered");

  /* Return application to original state, register application */
  CFE_EVS_Register(NULL, 0, CFE_EVS_BINARY_FILTER);

}
Ejemplo n.º 3
0
/*****************************************************************************
 *  Test %p format
 *****************************************************************************/
void UT_osprintf_p(void)
{
    char *test_fmt = "p"; /* Test format character(s) */
    int i;

    struct
    {
        char *test_num;    /* Test identifier; sequential numbers */
        long int test_val; /* Test value */
        int  max_len;      /* Maximum output string length */
        char *format;      /* Format string */
        char *expected;    /* Expected result */
        char *description; /* Test description */
    } osp_tests[] =
    {
        {"01", 98765, 5, "%p", "0x181cd", "%p"},
        {"02", 46372, 10, "$$$%p$$$", "$$$0xb524$$$", "%p embedded"},
        {"03", 91827, 5, "%3p", "0x166b3", "%p with minimum field size"},
        {"04", 33225, 11, "%.10p", "0x00000081c9", "%p with precision field size"},
        {"05", 12345, 9, "%9.7p", "0x0003039", "%p with minimum and precision field size"},
        {"06", 98765, 19, "%-.20p", "0x000000000000000181cd", "%p with left-justify"},
        {"07", -98765, 8, "%p", "0xfffe7e33", "%p, negative value"},
        {"08", 4108, 4, "%8p", "  0x100c", "%p with minimum field size > number of digits"},
        {"09", 55220, 6, "%010p", "0x0000d7b4", "%p with minimum field size > number of digits and leading zeroes"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        sprintf(strg_buf, osp_tests[i].format, (void *) osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        snprintf(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, (void *) osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}
Ejemplo n.º 4
0
/*****************************************************************************
 *  Test %lX format
 *****************************************************************************/
void UT_osprintf_lX(void)
{
    char *test_fmt = "lx"; /* Test format character(s) */
    int i;

    struct
    {
        char *test_num;             /* Test identifier; sequential numbers */
        unsigned long int test_val; /* Test value */
        int  max_len;               /* Maximum output string length */
        char *format;               /* Format string */
        char *expected;             /* Expected result */
        char *description;          /* Test description */
    } osp_tests[] =
    {
        {"01", 0x9a8b7c6d, 8, "%lX", "9A8B7C6D", "%lX"},
        {"02", 0xdd46ee21, 8, "$$$%lX$$$", "$$$DD46EE21$$$", "%lX embedded"},
        {"03", 0x9ccc8275, 7, "%3lX", "9CCC8275", "%lX with minimum field size < number of digits"},
        {"04", 0xbee33225, 10, "%.10lX", "00BEE33225", "%lX with precision field size"},
        {"05", 0x123fdb, 7, "%9.7lX", "  0123FDB", "%lX with minimum and precision field size"},
        {"06", 0xabc6543f, 16, "%-.20lX", "000000000000ABC6543F", "%lX with left-justify"},
        {"07", -9876543, 5, "%lX", "FF694BC1", "%lX, negative value"},
        {"08", 0x12b45, 3, "%8lX", "   12B45", "%lX with minimum field size > number of digits"},
        {"09", 0x12b45, 2, "%08lX", "00012B45", "%lX with minimum field size > number of digits and leading zeroes"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        SPRINTF(strg_buf, osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        SNPRINTF(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}
Ejemplo n.º 5
0
/*
** Test long and short format, also long string
*/
void Test_Format (void)
{

  int i;
  char long_msg[CFE_EVS_MAX_MESSAGE_LENGTH + 2];

  CFE_TIME_SysTime_t  time;
  CFE_EVS_ModeCmd_t   modecmd;

  /* TEST: invalid command to set format */
  modecmd.Mode = -1;
  UT_SetSBTotalMsgLen(sizeof(CFE_EVS_ModeCmd_t));
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID,
             CFE_EVS_SET_EVENT_FORMAT_MODE_CC);

  /* TEST: valid command to set short format, reports implicitly via event */
  modecmd.Mode = CFE_EVS_SHORT_FORMAT;
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID,
             CFE_EVS_SET_EVENT_FORMAT_MODE_CC);

  CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "FAILED : short format selected");

  /* TEST; valid command to set long format, reports implicitly via event */
  modecmd.Mode = CFE_EVS_LONG_FORMAT;
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID,
             CFE_EVS_SET_EVENT_FORMAT_MODE_CC);

  CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "PASSED : long format selected");
  CFE_EVS_SendTimedEvent(time, 0, CFE_EVS_INFORMATION,
                         "PASSED : long format selected (SendTimedEvent)");
  CFE_EVS_SendEventWithAppID(0, CFE_EVS_INFORMATION, 0,
                         "PASSED : long format selected (SendEventWithAppID)");

  /* TEST: Send information message with > MAX string length */
  for (i = 0; i <= CFE_EVS_MAX_MESSAGE_LENGTH; i++)
    long_msg[i] = (char)(i%10 + 48);
  long_msg[CFE_EVS_MAX_MESSAGE_LENGTH + 1] = '\0';

  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, long_msg) == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "sent info msg with > MAX string length");

  UT_Report(CFE_EVS_SendEventWithAppID(0, CFE_EVS_INFORMATION,0, long_msg) == CFE_SUCCESS,
            "CFE_EVS_SendEventWithAppID", "sent info msg with > MAX string length");

  UT_Report(CFE_EVS_SendTimedEvent(time,0, CFE_EVS_INFORMATION, long_msg) == CFE_SUCCESS,
            "CFE_EVS_SendTimedEvent", "sent info msg with > MAX string length");
}
Ejemplo n.º 6
0
/*
** Test miscellaneous functionality
*/
void Test_Misc (void)
{

  CFE_EVS_ModeCmd_t   modecmd;



  /* TEST: null inputs to exercise EVS_GetApplicationInfo */
  UT_Report(EVS_GetApplicationInfo(NULL,NULL) == CFE_ES_ERR_BUFFER,
            "EVS_GetApplicationInfo","get application info with null inputs");

  /* TEST: send event with an illegal type */
  CFE_EVS_SendEvent(0, -1, "Illegal type no filter");

  /* TEST: Invalid message id */
  UT_SetSBTotalMsgLen(sizeof(CFE_EVS_ModeCmd_t));
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, -1, 0);

  /* TEST: Invalid command */
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, -1);

  /* TEST: Invalid command length */
  UT_SetSBTotalMsgLen(6);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 1);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 2);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 3);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 4);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 5);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 6);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 7);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 8);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 9);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 10);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 11);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 12);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 13);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 14);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 15);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 16);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 17);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 18);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 19);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 20);
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_CMD_MID, 21);


  /* TEST: report housekeeping */
  UT_SendMsg((CFE_SB_MsgPtr_t)&modecmd, CFE_EVS_SEND_HK_MID, 0);


  /* Test failure of getting the reset area */
  UT_SetStatusBSPResetArea(-1,-1);
  EVS_InitLogPtr();

  CFE_EVS_CleanUpApp(0);
}
Ejemplo n.º 7
0
/*
** Test functions using an illegal application ID
*/
void Test_IllegalAppID (void)
{

  CFE_TIME_SysTime_t      time;

  /* Set test up with illegal application ID */

  UT_SetAppID(CFE_ES_MAX_APPLICATIONS + 1);

  /* Call external functions to test behavior with illegal ID */
  UT_Report(CFE_EVS_Register(NULL, 0, 0) == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_Register", "illegal app id");

  UT_Report(CFE_EVS_Unregister() == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_Unregister", "illegal app id");

  UT_Report(CFE_EVS_SendEvent(0, 0, "NULL") == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_SendEvent", "illegal app id");

  UT_Report(CFE_EVS_SendTimedEvent(time, 0, 0,"NULL" ) ==
            CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_SendTimedEvent", "illegal app id");


  UT_Report(CFE_EVS_SendEventWithAppID(0, 0, CFE_ES_MAX_APPLICATIONS + 1, "NULL")
            == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_SendEventWithAppID", "illegal app id");


  UT_Report(CFE_EVS_ResetFilter(0) == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_ResetFilter", "illegal app id");

  UT_Report(CFE_EVS_ResetAllFilters() == CFE_EVS_APP_ILLEGAL_APP_ID,
            "CFE_EVS_ResetAllFilters", "illegal app id");


  /* Return application ID to valid value */
  UT_SetAppID(0);


}
Ejemplo n.º 8
0
/*
** Test filter registration related calls
*/
void Test_FilterRegistration (void)
{

  int i;

  CFE_EVS_BinFilter_t filter[CFE_EVS_MAX_EVENT_FILTERS + 1];
  CFE_EVS_EVSBinFilter_t *FilterPtr = NULL;
  CFE_EVS_Table_t        *TablePtr;
  uint32                 AppID;
  CFE_EVS_BitMaskCmd_t            bitmaskcmd;

  /* TEST: unknown filter */
  UT_Report(CFE_EVS_Register(NULL, 0, -1) == CFE_EVS_UNKNOWN_FILTER,
            "CFE_EVS_Register","illegal filter option");

  /* TEST: valid registration with no filters */
  UT_Report(CFE_EVS_Register(NULL, 0, CFE_EVS_BINARY_FILTER) == CFE_SUCCESS,
            "CFE_EVS_Register", "valid w/ no filters");

  /* TEST: unregistration with failed ES_putPool */
  UT_SetPutPoolFail(1);
  UT_Report(CFE_EVS_Unregister() < 0, "CFE_EVS_Unregister",
            "unregistration with failed ES_putPool");
  UT_SetPutPoolFail(0);

  /* Re-register to test valid unregistration */
  UT_Report(CFE_EVS_Register(NULL, 0, CFE_EVS_BINARY_FILTER) == CFE_SUCCESS,
            "CFE_EVS_Register", "valid w/ no filters (re-registration)");

  /* TEST: valid unregistration */
  UT_Report(CFE_EVS_Unregister() == CFE_SUCCESS,
            "CFE_EVS_Unregister", "valid call");

  /* TEST: valid registration with filter */
  filter[0].EventID = 0;
  filter[0].Mask = 0x0001;

  UT_Report(CFE_EVS_Register(filter, 1, CFE_EVS_BINARY_FILTER) == CFE_SUCCESS,
            "CFE_EVS_Register", "valid w/ filter");

  /* TEST: multiple valid registration with more than MAX filters */
  for (i = 0; i < CFE_EVS_MAX_EVENT_FILTERS + 1; i++){
    filter[i].EventID = i;
    filter[i].Mask = 1;
  }

  UT_Report(CFE_EVS_Register(filter, CFE_EVS_MAX_EVENT_FILTERS + 1,
                     CFE_EVS_BINARY_FILTER) == CFE_EVS_APP_FILTER_OVERLOAD,
            "CFE_EVS_Register", "valid over max filters");

  /* TEST: Send 1st information message, should get through */
  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "OK") == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "1st info message should go through");

  /* TEST: Send 2nd information message, should be filtered */
  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "FAILED") == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "2nd info message should be filtered");

  /* TEST: Send Last information message, which should cause filtering to lock */
  CFE_ES_GetAppID(&AppID);
  TablePtr = CFE_EVS_GlobalData.EVS_TablePtr[AppID].Address;
  FilterPtr = EVS_FindEventID(0, (CFE_EVS_EVSBinFilter_t *)&TablePtr->BinFilters);
  FilterPtr->Count = CFE_EVS_MAX_FILTER_COUNT - 1;
  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "OK") == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "Last info message should go through");
  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "FAILED") == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "Locked info message should be filtered");
  UT_Report(CFE_EVS_SendEvent(0, CFE_EVS_INFORMATION, "FAILED") == CFE_SUCCESS,
            "CFE_EVS_SendEvent", "Locked info message should still be filtered");

  /* Return application to original state, re-register application */
  CFE_EVS_Register(NULL, 0, CFE_EVS_BINARY_FILTER);

}
Ejemplo n.º 9
0
/*****************************************************************************
 *  Test %f format
 *****************************************************************************/
void UT_osprintf_f(void)
{
    char *test_fmt = "f"; /* Test format character(s) */
    int i;

    struct
    {
        char  *test_num;    /* Test identifier; sequential numbers */
        float test_val;     /* Test value */
        int   max_len;      /* Maximum output string length */
        char  *format;      /* Format string */
        char  *expected;    /* Expected result */
        char  *description; /* Test description */
    } osp_tests[] =
    {
        {"01", 5.230, 6, "%f", "5.230000", "%f, positive value"},
        {"02", 2.1056, 9, "$$$%f$$$", "$$$2.105600$$$", "%f embedded, positive value"},
        {"03", 91827.3, 4, "%3f", "91827.296875", "%f with maximum field size, positive value"},
        {"04", 5.82345, 5, "%.3f", "5.823", "%f with minimum field size, positive value"},
        {"05", 12.6789, 8, "%9.5f", " 12.67890", "%f with minimum and maximum field size, positive value"},
        {"06", 65.5678, 13, "%-20.5f", "65.56780            ", "%f with left-justify, positive value"},
        {"07", 2.7944, 8, "%+f", "+2.794400", "%f with sign, positive value"},
        {"08", -0.6712237, 7, "%f", "-0.671224", "%f, negative value"},
        {"09", -7.1109, 8, "$$$%f$$$", "$$$-7.110900$$$", "%f embedded, negative value"},
        {"10", -918.987, 6, "%3f", "-918.987000", "%f with maximum field size, negative value"},
        {"11", -3.1415, 3, "%.2f", "-3.14", "%f with precision, negative value"},
        {"12", -1.23456, 6, "%9.7f", "-1.2345600", "%f with precision and maximum field size, negative value"},
        {"13", -65.65, 5, "%-8.3f", "-65.650 ", "%f with left-justify, negative value"},
        {"14", 0.0, 4, "%f", "0.000000", "%f, zero value"},
        {"15", 4.0, 6, "%7.0f", "      4", "%f, no fraction, positive value"},
        {"16", -56.0, 6, "%6.0f", "   -56", "%f, no fraction, negative value"},
        {"17", 4887.12, 5, "%010.3f", "004887.120", "%f with zero padding, positive value"},
        {"18", -4887.12, 5, "%010.3f", "-04887.120", "%f with zero padding, negative value"},
        {"19", 0.0, 6, "%06.2f", "000.00", "%f, with zero padding, zero value"},
        {"20", 4.0, 6, "%07.0f", "0000004", "%f, zero padding, no fraction, positive value"},
        {"21", -56.0, 6, "%06.0f", "-00056", "%f, zero padding, no fraction, negative value"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        SPRINTF(strg_buf, osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        SNPRINTF(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}
Ejemplo n.º 10
0
/*****************************************************************************
 *  Test %i format
 *****************************************************************************/
void UT_osprintf_i(void)
{
    char *test_fmt = "i"; /* Test format character(s) */
    int i;

    struct
    {
        char *test_num;    /* Test identifier; sequential numbers */
        int  test_val;     /* Test value */
        int  max_len;      /* Maximum output string length */
        char *format;      /* Format string */
        char *expected;    /* Expected result */
        char *description; /* Test description */
    } osp_tests[] =
    {
        {"01", 98765, 5, "%i", "98765", "%i, positive value"},
        {"02", 46372, 9, "$$$%i$$$", "$$$46372$$$", "%i embedded, positive value"},
        {"03", 98765, 5, "% i", " 98765", "%i with space for sign, positive value"},
        {"04", 91827, 7, "%8i", "   91827", "%i with minimum field size > number of digits, positive value"},
        {"05", 91827, 2, "%4i", "91827", "%i with minimum field size < number of digits, positive value"},
        {"06", 33225, 7, "%.10i", "0000033225", "%i with precision field size > number of digits, positive value"},
        {"07", 33225, 3, "%.3i", "33225", "%i with precision field size < number of digits, positive value"},
        {"08", 12345, 5, "%9.7i", "  0012345", "%i with minimum field size > precision field size > number of digits, positive value"},
        {"09", 12345, 5, "%9.3i", "    12345", "%i with minimum field size > number of digits > precision field size, positive value"},
        {"10", 12345, 5, "%4.2i", "12345", "%i with number of digits > minimum field size > precision field size, positive value"},
        {"11", 12345, 8, "%7.9i", "000012345", "%i with precision field size > minimum field size > number of digits, positive value"},
        {"12", 12345, 7, "%3.9i", "000012345", "%i with precision field size > number of digits > minimum field size, positive value"},
        {"13", 12345, 4, "%2.4i", "12345", "%i with number of digits > precision field size > minimum field size, positive value"},
        {"14", 98765, 5, "%-.20i", "00000000000000098765", "%i with left-justify and precision field size > number of digits, positive value"},
        {"15", 98765, 5, "%-.3i", "98765", "%i with left-justify and precision field size < number of digits, positive value"},
        {"16", 98765, 5, "%+i", "+98765", "%i with sign, positive value"},
        {"17", 46372, 5, "$$$%+d$$$", "$$$+46372$$$", "%i sign and embedded, positive value"},
        {"18", 91827, 6, "%+8i", "  +91827", "%i with sign and minimum field size > number of digits, positive value"},
        {"19", 91827, 4, "%+4i", "+91827", "%i with sign and minimum field size < number of digits, positive value"},
        {"20", 33225, 8, "%+.10i", "+0000033225", "%i with sign and precision field size > number of digits, positive value"},
        {"21", 33225, 5, "%+.3i", "+33225", "%i with sign and precision field size < number of digits, positive value"},
        {"22", 12345, 5, "%+9.7i", " +0012345", "%i with sign and minimum field size > precision field size > number of digits, positive value"},
        {"23", 12345, 5, "%+9.3i", "   +12345", "%i with sign and minimum field size > number of digits > precision field size, positive value"},
        {"24", 12345, 5, "%+4.2i", "+12345", "%i with sign and number of digits > minimum field size > precision field size, positive value"},
        {"25", 12345, 8, "%+7.9i", "+000012345", "%i with sign and precision field size > minimum field size > number of digits, positive value"},
        {"26", 12345, 7, "%+3.9i", "+000012345", "%i with sign and precision field size > number of digits > minimum field size, positive value"},
        {"27", 12345, 5, "%+2.4i", "+12345", "%i with sign and number of digits > precision field size > minimum field size, positive value"},
        {"28", 98765, 16, "%+-.20i", "+00000000000000098765", "%i with sign and left-justify and precision field size > number of digits, positive value"},
        {"29", 98765, 5, "%+-.3i", "+98765", "%i with sign and left-justify and precision field size < number of digits, positive value"},
        {"30", 98765, 4, "%+i", "+98765", "%i with sign, positive value"},
        {"31", -98765, 6, "%i", "-98765", "%i, negative value"},
        {"32", -46372, 6, "$$$%i$$$", "$$$-46372$$$", "%i embedded, negative value"},
        {"33", -98765, 5, "% i", "-98765", "%i with space for sign, negative value"},
        {"34", -91827, 9, "%10i", "    -91827", "%i with minimum field size > number of digits, negative value"},
        {"35", -91827, 6,  "%4i", "-91827", "%i with minimum field size < number of digits, negative value"},
        {"36", -33225, 9, "%.10i", "-0000033225", "%i with precision field size > number of digits, negative value"},
        {"37", -33225, 5, "%.3i", "-33225", "%i with precision field size < number of digits, negative value"},
        {"38", -12345, 8, "%9.7i", " -0012345", "%i with minimum field size > precision field size > number of digits, negative value"},
        {"39", -12345, 7, "%9.3i", "   -12345", "%i with minimum field size > number of digits > precision field size, negative value"},
        {"40", -12345, 6, "%4.2i", "-12345", "%i with number of digits > minimum field size > precision field size, negative value"},
        {"41", -12345, 7, "%7.9i", "-000012345", "%i with precision field size > minimum field size > number of digits, negative value"},
        {"42", -12345, 8, "%3.9i", "-000012345", "%i with precision field size > number of digits > minimum field size, negative value"},
        {"43", -12345, 5, "%2.4i", "-12345", "%i with number of digits > precision field size > minimum field size, negative value"},
        {"44", -98765, 18, "%-.20i", "-00000000000000098765", "%i with left-justify and precision field size > number of digits, negative value"},
        {"45", -98765, 5, "%-.3i", "-98765", "%i with left-justify and precision field size < number of digits, negative value"},
        {"46", -98765, 6, "%+i", "-98765", "%i with sign, negative value"},
        {"47", -46372, 7, "$$$%+d$$$", "$$$-46372$$$", "%i sign and embedded, negative value"},
        {"48", -91827, 5, "%+8i", "  -91827", "%i with sign and minimum field size > number of digits, negative value"},
        {"49", -91827, 5, "%+4i", "-91827", "%i with sign and minimum field size < number of digits, negative value"},
        {"50", -33225, 7, "%+.10i", "-0000033225", "%i with sign and precision field size > number of digits, negative value"},
        {"51", -33225, 5, "%+.3i", "-33225", "%i with sign and precision field size < number of digits, negative value"},
        {"52", -12345, 7, "%+9.7i", " -0012345", "%i with sign and minimum field size > precision field size > number of digits, negative value"},
        {"53", -12345, 8, "%+9.3i", "   -12345", "%i with sign and minimum field size > number of digits > precision field size, negative value"},
        {"54", -12345, 4, "%+4.2i", "-12345", "%i with sign and number of digits > minimum field size > precision field size, negative value"},
        {"55", -12345, 8, "%+7.9i", "-000012345", "%i with sign and precision field size > minimum field size > number of digits, negative value"},
        {"56", -12345, 7, "%+3.9i", "-000012345", "%i with sign and precision field size > number of digits > minimum field size, negative value"},
        {"57", -12345, 5, "%+2.4i", "-12345", "%i with sign and number of digits > precision field size > minimum field size, negative value"},
        {"58", -98765, 19, "%+-.20i", "-00000000000000098765", "%i with sign and left-justify and precision field size > number of digits, negative value"},
        {"59", -98765, 6, "%+-.3i", "-98765", "%i with sign and left-justify and precision field size < number of digits, negative value"},
        {"60", -98765, 5, "%+i", "-98765", "%i with sign, negative value"},
        {"61", 0, 6, "%i", "0", "%i, zero value"},
        {"62", 162534, 5, "%08i", "00162534", "%i with zero padding, positive value"},
        {"63", -162534, 6, "%08i", "-0162534", "%i with zero padding, negative value"},
        {"64", 0, 6, "%04i", "0000", "%i, with zero padding, zero value"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        SPRINTF(strg_buf, osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        SNPRINTF(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}
Ejemplo n.º 11
0
/*****************************************************************************
 *  Test %ld format
 *****************************************************************************/
void UT_osprintf_ld(void)
{
    char *test_fmt = "ld"; /* Test format character(s) */
    int i;

    struct
    {
        char     *test_num;    /* Test identifier; sequential numbers */
        long int test_val;     /* Test value */
        int      max_len;      /* Maximum output string length */
        char     *format;      /* Format string */
        char     *expected;    /* Expected result */
        char     *description; /* Test description */
    } osp_tests[] =
    {
        {"01", 12798765, 5, "%ld", "12798765", "%ld, positive value"},
        {"02", 43246372, 9, "$$$%ld$$$", "$$$43246372$$$", "%ld embedded, positive value"},
        {"03", 63198765, 9, "% ld", " 63198765", "%ld with space for sign, positive value"},
        {"04", 77691827, 8, "%11ld", "   77691827", "%ld with minimum field size > number of digits, positive value"},
        {"05", 54691827, 5, "%4ld", "54691827", "%ld with minimum field size < number of digits, positive value"},
        {"06", 77833225, 7, "%.10ld", "0077833225", "%ld with precision field size > number of digits, positive value"},
        {"07", 99933225, 6, "%.3ld", "99933225", "%ld with precision field size < number of digits, positive value"},
        {"08", 12345789, 8, "%12.10ld", "  0012345789", "%ld with minimum field size > precision field size > number of digits, positive value"},
        {"09", 12345987, 7, "%12.3ld", "    12345987", "%ld with minimum field size > number of digits > precision field size, positive value"},
        {"10", 12345444, 8, "%4.2ld", "12345444", "%ld with number of digits > minimum field size > precision field size, positive value"},
        {"11", 12345321, 10, "%10.12ld", "000012345321", "%ld with precision field size > minimum field size > number of digits, positive value"},
        {"12", 12333345, 9, "%6.12ld", "000012333345", "%ld with precision field size > number of digits > minimum field size, positive value"},
        {"13", 12345777, 8, "%2.4ld", "12345777", "%ld with number of digits > precision field size > minimum field size, positive value"},
        {"14", 98765321, 15, "%-.20ld", "00000000000098765321", "%ld with left-justify and precision field size > number of digits, positive value"},
        {"15", 98765111, 8, "%-.3ld", "98765111", "%ld with left-justify and precision field size < number of digits, positive value"},
        {"16", 98765222, 8, "%+ld", "+98765222", "%ld with sign, positive value"},
        {"17", 46372333, 7, "$$$%+ld$$$", "$$$+46372333$$$", "%ld sign and embedded, positive value"},
        {"18", 91827444, 6, "%+11ld", "  +91827444", "%ld with sign and minimum field size > number of digits, positive value"},
        {"19", 91827555, 5, "%+4ld", "+91827555", "%ld with sign and minimum field size < number of digits, positive value"},
        {"20", 33225666, 7, "%+.13ld", "+0000033225666", "%ld with sign and precision field size > number of digits, positive value"},
        {"21", 33225777, 8, "%+.3ld", "+33225777", "%ld with sign and precision field size < number of digits, positive value"},
        {"22", 12345888, 9, "%+12.10ld", " +0012345888", "%ld with sign and minimum field size > precision field size > number of digits, positive value"},
        {"23", 12345999, 10, "%+12.3ld", "   +12345999", "%ld with sign and minimum field size > number of digits > precision field size, positive value"},
        {"24", 12345000, 8, "%+4.2ld", "+12345000", "%ld with sign and number of digits > minimum field size > precision field size, positive value"},
        {"25", 12345121, 9, "%+10.12ld", "+000012345121", "%ld with sign and precision field size > minimum field size > number of digits, positive value"},
        {"26", 12345232, 8, "%+6.12ld", "+000012345232", "%ld with sign and precision field size > number of digits > minimum field size, positive value"},
        {"27", 12345343, 6, "%+2.4ld", "+12345343", "%ld with sign and number of digits > precision field size > minimum field size, positive value"},
        {"28", 98765454, 19, "%+-.20ld", "+00000000000098765454", "%ld with sign and left-justify and precision field size > number of digits, positive value"},
        {"29", 98765565, 7, "%+-.3ld", "+98765565", "%ld with sign and left-justify and precision field size < number of digits, positive value"},
        {"30", 98765676, 8, "%+ld", "+98765676", "%ld with sign, positive value"},
        {"31", -98765787, 9, "%ld", "-98765787", "%ld, negative value"},
        {"32", -46372898, 10, "$$$%ld$$$", "$$$-46372898$$$", "%ld embedded, negative value"},
        {"33", -98765909, 9, "% ld", "-98765909", "%ld with space for sign, negative value"},
        {"34", -91827121, 8, "%13ld", "    -91827121", "%ld with minimum field size > number of digits, negative value"},
        {"35", -91827232, 5, "%4ld", "-91827232", "%ld with minimum field size < number of digits, negative value"},
        {"36", -33225343, 8, "%.13ld", "-0000033225343", "%ld with precision field size > number of digits, negative value"},
        {"37", -33225454, 6, "%.3ld", "-33225454", "%ld with precision field size < number of digits, negative value"},
        {"38", -12345565, 7, "%12.10ld", " -0012345565", "%ld with minimum field size > precision field size > number of digits, negative value"},
        {"39", -12345676, 8, "%12.4ld", "   -12345676", "%ld with minimum field size > number of digits > precision field size, negative value"},
        {"40", -12345787, 9, "%4.2ld", "-12345787", "%ld with number of digits > minimum field size > precision field size, negative value"},
        {"41", -12345898, 11, "%7.12ld", "-000012345898", "%ld with precision field size > minimum field size > number of digits, negative value"},
        {"42", -12345909, 10, "%3.12ld", "-000012345909", "%ld with precision field size > number of digits > minimum field size, negative value"},
        {"43", -12345101, 9, "%2.4ld", "-12345101", "%ld with number of digits > precision field size > minimum field size, negative value"},
        {"44", -98765292, 10, "%-.20ld", "-00000000000098765292", "%ld with left-justify and precision field size > number of digits, negative value"},
        {"45", -98765383, 8, "%-.3ld", "-98765383", "%ld with left-justify and precision field size < number of digits, negative value"},
        {"46", -98765474, 9, "%+ld", "-98765474", "%ld with sign, negative value"},
        {"47", -46372565, 8, "$$$%+ld$$$", "$$$-46372565$$$", "%ld sign and embedded, negative value"},
        {"48", -91827112, 7, "%+11ld", "  -91827112", "%ld with sign and minimum field size > number of digits, negative value"},
        {"49", -91827223, 6, "%+4ld", "-91827223", "%ld with sign and minimum field size < number of digits, negative value"},
        {"50", -33225334, 11, "%+.13ld", "-0000033225334", "%ld with sign and precision field size > number of digits, negative value"},
        {"51", -33225445, 9, "%+.3ld", "-33225445", "%ld with sign and precision field size < number of digits, negative value"},
        {"52", -12345556, 11, "%+12.10ld", " -0012345556", "%ld with sign and minimum field size > precision field size > number of digits, negative value"},
        {"53", -12345667, 10, "%+12.3ld", "   -12345667", "%ld with sign and minimum field size > number of digits > precision field size, negative value"},
        {"54", -12345778, 9, "%+4.2ld", "-12345778", "%ld with sign and number of digits > minimum field size > precision field size, negative value"},
        {"55", -12345889, 10, "%+7.12ld", "-000012345889", "%ld with sign and precision field size > minimum field size > number of digits, negative value"},
        {"56", -12345990, 9, "%+3.12ld", "-000012345990", "%ld with sign and precision field size > number of digits > minimum field size, negative value"},
        {"57", -12345221, 8, "%+2.4ld", "-12345221", "%ld with sign and number of digits > precision field size > minimum field size, negative value"},
        {"58", -98765332, 7, "%+-.20ld", "-00000000000098765332", "%ld with sign and left-justify and precision field size > number of digits, negative value"},
        {"59", -98765443, 6, "%+-.3ld", "-98765443", "%ld with sign and left-justify and precision field size < number of digits, negative value"},
        {"60", -98765554, 5, "%+ld", "-98765554", "%ld with sign, negative value"},
        {"61", 0, 6, "%ld", "0", "%ld, zero value"},
        {"62", 16253409, 5, "%010ld", "0016253409", "%ld with zero padding, positive value"},
        {"63", -16253409, 6, "%010ld", "-016253409", "%ld with zero padding, negative value"},
        {"64", 0, 6, "%012ld", "000000000000", "%ld, with zero padding, zero value"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        sprintf(strg_buf, osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        snprintf(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}
Ejemplo n.º 12
0
/*****************************************************************************
 *  Test %x format
 *****************************************************************************/
void UT_osprintf_x(void)
{
    char *test_fmt = "x"; /* Test format character(s) */
    int i;

#ifdef OSP_ARINC653
#pragma ghs nowarning 68
#endif
    struct
    {
        char *test_num;        /* Test identifier; sequential numbers */
        unsigned int test_val; /* Test value */
        int  max_len;          /* Maximum output string length */
        char *format;          /* Format string */
        char *expected;        /* Expected result */
        char *description;     /* Test description */
    } osp_tests[] =
    {
        {"01", 0xa8b7, 3, "%x", "a8b7", "%x"},
        {"02", 0xff123, 10, "$$$%x$$$", "$$$ff123$$$", "%x embedded"},
        {"03", 0xd1827, 5, "%3x", "d1827", "%x with minimum field size < number of digits"},
        {"04", 0x3c225, 9, "%.10x", "000003c225", "%x with precision field size"},
        {"05", 0x12b45, 9, "%9.7x", "  0012b45", "%x with minimum and precision field size"},
        {"06", 0xe8a60, 19, "%-.20x", "000000000000000e8a60", "%x with left-justify"},
        {"07", -16, 7, "%x", "fffffff0", "%x, negative value"},
        {"08", 0x12b45, 3, "%8x", "   12b45", "%x with minimum field size > number of digits"},
        {"09", 0x12b45, 5, "%08x", "00012b45", "%x with minimum field size > number of digits and leading zeroes"},
        {"", 0, 0, "", "", ""} /* End with a null format to terminate list */
    };
#ifdef OSP_ARINC653
#pragma ghs endnowarning
#endif

    for (i = 0; osp_tests[i].format[0] != '\0'; i++)
    {
        /* Perform sprintf test */
        init_test();
        sprintf(strg_buf, osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(osp_tests[i].expected, strg_buf),
                  "SPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);

        /* Truncate expected string in preparation for snprintf test */
        strcpy(trunc_buf, osp_tests[i].expected);

        if (strlen(trunc_buf) >= osp_tests[i].max_len)
        {
            trunc_buf[osp_tests[i].max_len - 1] = '\0';
        }

        /* Perform snprintf test */
        init_test();
        snprintf(strg_buf, osp_tests[i].max_len,
                 osp_tests[i].format, osp_tests[i].test_val);
        UT_Report(check_test(trunc_buf, strg_buf),
                  "SNPRINTF",
                  osp_tests[i].description,
                  test_fmt,
                  osp_tests[i].test_num);
    }
}