2015-09-14 17:10:19 +08:00
|
|
|
/****************************************************************************
|
|
|
|
** gmio
|
|
|
|
** Copyright Fougue (2 Mar. 2015)
|
|
|
|
** contact@fougue.pro
|
|
|
|
**
|
|
|
|
** This software is a reusable library whose purpose is to provide complete
|
|
|
|
** I/O support for various CAD file formats (eg. STL)
|
|
|
|
**
|
|
|
|
** This software is governed by the CeCILL-B license under French law and
|
|
|
|
** abiding by the rules of distribution of free software. You can use,
|
|
|
|
** modify and/ or redistribute the software under the terms of the CeCILL-B
|
|
|
|
** license as circulated by CEA, CNRS and INRIA at the following URL
|
|
|
|
** "http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html".
|
|
|
|
****************************************************************************/
|
|
|
|
|
|
|
|
#include "utest_assert.h"
|
|
|
|
|
|
|
|
#include "stl_utils.h"
|
|
|
|
|
|
|
|
#include "../src/gmio_core/error.h"
|
2015-12-04 01:00:25 +08:00
|
|
|
#include "../src/gmio_core/rwargs.h"
|
2015-09-14 17:10:19 +08:00
|
|
|
#include "../src/gmio_stl/internal/stl_rw_common.h"
|
|
|
|
#include "../src/gmio_stl/stl_error.h"
|
|
|
|
#include "../src/gmio_stl/stl_io.h"
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
|
|
|
const char* test_stl_internal__rw_common()
|
|
|
|
{
|
|
|
|
/* gmio_check_transfer() */
|
|
|
|
{
|
|
|
|
int error = GMIO_ERROR_OK;
|
|
|
|
uint8_t buff[128] = {0};
|
2015-12-04 01:00:25 +08:00
|
|
|
struct gmio_rwargs rwargs = {0};
|
2015-09-14 17:10:19 +08:00
|
|
|
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(!gmio_check_rwargs(&error, NULL));
|
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_NULL_RWARGS);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(!gmio_check_rwargs(&error, &rwargs));
|
2015-09-25 22:24:17 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_NULL_MEMBLOCK);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
2015-12-04 01:00:25 +08:00
|
|
|
rwargs.memblock = gmio_memblock(&buff[0], 0, NULL);
|
|
|
|
UTEST_ASSERT(!gmio_check_rwargs(&error, &rwargs));
|
2015-09-25 22:24:17 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_INVALID_MEMBLOCK_SIZE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
/* Verify that gmio_check_transfer() doesn't touch error when in case of
|
|
|
|
* success */
|
2015-12-04 01:00:25 +08:00
|
|
|
rwargs.memblock = gmio_memblock(&buff[0], sizeof(buff), NULL);
|
|
|
|
UTEST_ASSERT(!gmio_check_rwargs(&error, &rwargs));
|
2015-09-25 22:24:17 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_INVALID_MEMBLOCK_SIZE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
error = GMIO_ERROR_OK;
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(gmio_check_rwargs(&error, &rwargs));
|
2015-09-14 17:10:19 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_OK);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* gmio_stl_check_mesh() */
|
|
|
|
{
|
|
|
|
int error = GMIO_ERROR_OK;
|
2015-12-04 01:00:25 +08:00
|
|
|
struct gmio_stl_mesh mesh = {0};
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
UTEST_ASSERT(!gmio_stl_check_mesh(&error, NULL));
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_STL_ERROR_NULL_FUNC_GET_TRIANGLE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
mesh.triangle_count = 100;
|
|
|
|
UTEST_ASSERT(!gmio_stl_check_mesh(&error, &mesh));
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_STL_ERROR_NULL_FUNC_GET_TRIANGLE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
/* Verify that gmio_stl_check_mesh() doesn't touch error when in case of
|
|
|
|
* success */
|
|
|
|
mesh.triangle_count = 0;
|
|
|
|
mesh.func_get_triangle = &gmio_stl_nop_get_triangle;
|
|
|
|
UTEST_ASSERT(!gmio_stl_check_mesh(&error, &mesh));
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_STL_ERROR_NULL_FUNC_GET_TRIANGLE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
error = GMIO_ERROR_OK;
|
|
|
|
UTEST_ASSERT(gmio_stl_check_mesh(&error, &mesh));
|
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_OK);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* gmio_stlb_check_params() */
|
|
|
|
{
|
|
|
|
int error = GMIO_ERROR_OK;
|
2015-12-04 01:00:25 +08:00
|
|
|
struct gmio_rwargs rwargs = {0};
|
2015-09-14 17:10:19 +08:00
|
|
|
uint8_t buff[1024] = {0};
|
|
|
|
|
|
|
|
UTEST_ASSERT(!gmio_stlb_check_params(&error, NULL, GMIO_ENDIANNESS_HOST));
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_NULL_RWARGS);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
error = GMIO_ERROR_OK;
|
2015-12-04 01:00:25 +08:00
|
|
|
rwargs.memblock = gmio_memblock(&buff[0], GMIO_STLB_MIN_CONTENTS_SIZE / 2, NULL);
|
|
|
|
UTEST_ASSERT(!gmio_stlb_check_params(&error, &rwargs, GMIO_ENDIANNESS_HOST));
|
2015-09-25 22:24:17 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_INVALID_MEMBLOCK_SIZE);
|
2015-09-14 17:10:19 +08:00
|
|
|
|
|
|
|
error = GMIO_ERROR_OK;
|
2015-12-04 01:00:25 +08:00
|
|
|
rwargs.memblock = gmio_memblock(&buff[0], sizeof(buff), NULL);
|
|
|
|
UTEST_ASSERT(gmio_stlb_check_params(&error, &rwargs, GMIO_ENDIANNESS_HOST));
|
2015-09-14 17:10:19 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_ERROR_OK);
|
|
|
|
|
2015-12-04 01:00:25 +08:00
|
|
|
UTEST_ASSERT(!gmio_stlb_check_params(&error, &rwargs, GMIO_ENDIANNESS_UNKNOWN));
|
2015-09-14 17:10:19 +08:00
|
|
|
UTEST_ASSERT(error == GMIO_STL_ERROR_UNSUPPORTED_BYTE_ORDER);
|
|
|
|
}
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|