2021-01-02 00:30:13 +01:00
# include <limits.h>
# include "unity.h"
2021-01-06 23:04:05 +01:00
2021-01-26 17:37:12 +01:00
# include "Mesh_OTA_Util.h"
2021-01-07 17:10:25 +01:00
# include "test_image_hex.h"
2021-01-06 23:04:05 +01:00
2021-01-07 17:10:25 +01:00
// ### ### ### distinguish newer image version ### ### ###
2021-01-06 23:04:05 +01:00
2021-01-02 00:30:13 +01:00
TEST_CASE ( " Remote got patch " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 1.2.3 " ; //current running image
char versionRemote [ ] = " 1.2.4 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Remote got minor " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 1.2.3 " ; //current running image
char versionRemote [ ] = " 1.3.3 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Remote got major " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 1.2.3 " ; //current running image
char versionRemote [ ] = " 2.2.3 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Local got patch " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 1.2.4 " ; //current running image
char versionRemote [ ] = " 1.2.3 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_FALSE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Local got minor " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 1.3.3 " ; //current running image
char versionRemote [ ] = " 1.2.3 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_FALSE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Local got major " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 2.2.3 " ; //current running image
char versionRemote [ ] = " 1.2.3 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_FALSE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Remote got alpha and patch " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 2.2.3 " ; //current running image
char versionRemote [ ] = " a2.2.4 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-02 00:30:13 +01:00
}
TEST_CASE ( " Remote got max " , " [distinguish newer image version] " )
{
char versionLocal [ ] = " 2.2.3 " ; //current running image
char versionRemote [ ] = " 999.999.999 " ; //image from server
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-07 17:10:25 +01:00
}
// ### ### ### find start offset in firmware image ### ### ###
TEST_CASE ( " with http response + 0.0.1 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone0_0_1 ) / sizeof ( dataWithHttpRespone0_0_1 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithHttpRespone0_0_1 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 305 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
TEST_CASE ( " without http response + 0.0.1 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithoutHttpRespone0_0_1 ) / sizeof ( dataWithoutHttpRespone0_0_1 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithoutHttpRespone0_0_1 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 0 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
TEST_CASE ( " with http response + 999.999.999 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone999_999_999 ) / sizeof ( dataWithHttpRespone999_999_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithHttpRespone999_999_999 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 305 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
TEST_CASE ( " without http response + 999.999.999 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithoutHttpRespone999_999_999 ) / sizeof ( dataWithoutHttpRespone999_999_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithoutHttpRespone999_999_999 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 0 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
TEST_CASE ( " with http response + 999.9.999 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone999_9_999 ) / sizeof ( dataWithHttpRespone999_9_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithHttpRespone999_9_999 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 302 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
TEST_CASE ( " with http response + 999.99.999 " , " [find start offset in firmware image] " )
{
uint32_t u32StartOffset ;
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone999_99_999 ) / sizeof ( dataWithHttpRespone999_99_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilFindImageStart ( dataWithHttpRespone999_99_999 , & u32DataLenght , & u32StartOffset ) ;
2021-01-07 17:10:25 +01:00
if ( err = = ESP_OK )
{
TEST_ASSERT_EQUAL_INT ( 299 , u32StartOffset ) ;
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
2021-01-02 00:30:13 +01:00
}
2021-01-07 17:10:25 +01:00
2021-01-07 23:10:36 +01:00
// ### ### ### distinguish newer image version ### ### ###
TEST_CASE ( " extract version 0.0.1 " , " [extract image version number] " )
{
char versionLocal [ ] = " 0.0.0 " ; //current running image
char versionRemote [ 12 ] ; //image from server
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone0_0_1 ) / sizeof ( dataWithHttpRespone0_0_1 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilExtractVersionNumber ( dataWithHttpRespone0_0_1 , & u32DataLenght , versionRemote ) ;
2021-01-07 23:10:36 +01:00
if ( err = = ESP_OK )
{
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-07 23:10:36 +01:00
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
2021-01-07 17:10:25 +01:00
2021-01-07 23:10:36 +01:00
TEST_CASE ( " extract version 999.999.999 " , " [extract image version number] " )
{
char versionLocal [ ] = " 0.0.0 " ; //current running image
char versionRemote [ 12 ] ; //image from server
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone999_999_999 ) / sizeof ( dataWithHttpRespone999_999_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilExtractVersionNumber ( dataWithHttpRespone999_999_999 , & u32DataLenght , versionRemote ) ;
2021-01-07 23:10:36 +01:00
if ( err = = ESP_OK )
{
2021-01-20 21:40:51 +01:00
TEST_ASSERT_TRUE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-07 23:10:36 +01:00
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
2021-01-07 17:10:25 +01:00
2021-01-07 23:10:36 +01:00
TEST_CASE ( " extract version 999.99.999 " , " [extract image version number] " )
{
char versionLocal [ ] = " 999.100.999 " ; //current running image
char versionRemote [ 12 ] ; //image from server
uint32_t u32DataLenght = sizeof ( dataWithHttpRespone999_99_999 ) / sizeof ( dataWithHttpRespone999_99_999 [ 0 ] ) ;
2021-01-20 21:40:51 +01:00
esp_err_t err = errMeshOtaUtilExtractVersionNumber ( dataWithHttpRespone999_99_999 , & u32DataLenght , versionRemote ) ;
2021-01-07 23:10:36 +01:00
if ( err = = ESP_OK )
{
2021-01-20 21:40:51 +01:00
TEST_ASSERT_FALSE ( bMeshOtaUtilNewerVersion ( versionLocal , versionRemote ) ) ;
2021-01-07 23:10:36 +01:00
}
else
{
TEST_ASSERT_EQUAL_INT ( ESP_OK , err ) ;
}
}
2021-01-07 17:10:25 +01:00