/* BEGIN_HEADER */
#include <polarssl/version.h>
/* END_HEADER */

/* BEGIN_DEPENDENCIES
 * depends_on:POLARSSL_VERSION_C
 * END_DEPENDENCIES
 */

/* BEGIN_CASE */
void check_compiletime_version( char *version_str )
{
    char build_str[100];
    char build_str_full[100];
    unsigned int build_int;

    memset( build_str, 0, 100 );
    memset( build_str_full, 0, 100 );

    snprintf (build_str, 100, "%d.%d.%d", POLARSSL_VERSION_MAJOR,
        POLARSSL_VERSION_MINOR, POLARSSL_VERSION_PATCH );

    snprintf( build_str_full, 100, "PolarSSL %d.%d.%d", POLARSSL_VERSION_MAJOR,
        POLARSSL_VERSION_MINOR, POLARSSL_VERSION_PATCH );

    build_int = POLARSSL_VERSION_MAJOR << 24 |
            POLARSSL_VERSION_MINOR << 16 |
            POLARSSL_VERSION_PATCH << 8;

    TEST_ASSERT( build_int == POLARSSL_VERSION_NUMBER );
    TEST_ASSERT( strcmp( build_str, POLARSSL_VERSION_STRING ) == 0 );
    TEST_ASSERT( strcmp( build_str_full, POLARSSL_VERSION_STRING_FULL ) == 0 );
    TEST_ASSERT( strcmp( version_str, POLARSSL_VERSION_STRING ) == 0 );
}
/* END_CASE */

/* BEGIN_CASE */
void check_runtime_version( char *version_str )
{
    char build_str[100];
    char get_str[100];
    char build_str_full[100];
    char get_str_full[100];
    unsigned int get_int;

    memset( build_str, 0, 100 );
    memset( get_str, 0, 100 );
    memset( build_str_full, 0, 100 );
    memset( get_str_full, 0, 100 );

    get_int = version_get_number();
    version_get_string( get_str );
    version_get_string_full( get_str_full );

    snprintf( build_str, 100, "%d.%d.%d",
        (get_int >> 24) & 0xFF,
        (get_int >> 16) & 0xFF,
        (get_int >> 8) & 0xFF );
    snprintf( build_str_full, 100, "PolarSSL %s", version_str );

    TEST_ASSERT( strcmp( build_str, version_str ) == 0 );
    TEST_ASSERT( strcmp( build_str_full, get_str_full ) == 0 );
    TEST_ASSERT( strcmp( version_str, get_str ) == 0 );
}
/* END_CASE */