solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

test_ssol_object.c (4086B)


      1 /* Copyright (C) 2018-2026 |Meso|Star> (contact@meso-star.com)
      2  * Copyright (C) 2016, 2018 CNRS
      3  *
      4  * This program is free software: you can redistribute it and/or modify
      5  * it under the terms of the GNU General Public License as published by
      6  * the Free Software Foundation, either version 3 of the License, or
      7  * (at your option) any later version.
      8  *
      9  * This program is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     12  * GNU General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU General Public License
     15  * along with this program. If not, see <http://www.gnu.org/licenses/>. */
     16 
     17 #include "ssol.h"
     18 #include "test_ssol_utils.h"
     19 
     20 int
     21 main(int argc, char** argv)
     22 {
     23   struct mem_allocator allocator;
     24   struct ssol_device* dev;
     25   struct ssol_shape* shape;
     26   struct ssol_shape* shape2;
     27   struct ssol_material* mtl;
     28   struct ssol_material* mtl2;
     29   struct ssol_object* object;
     30   double a;
     31   (void) argc, (void) argv;
     32 
     33   mem_init_proxy_allocator(&allocator, &mem_default_allocator);
     34 
     35   CHK(ssol_device_create
     36     (NULL, &allocator, SSOL_NTHREADS_DEFAULT, 0, &dev) == RES_OK);
     37   CHK(ssol_material_create_virtual(dev, &mtl) == RES_OK);
     38   CHK(ssol_material_create_virtual(dev, &mtl2) == RES_OK);
     39   CHK(ssol_shape_create_punched_surface(dev, &shape) == RES_OK);
     40   CHK(ssol_shape_create_punched_surface(dev, &shape2) == RES_OK);
     41 
     42   CHK(ssol_object_create(NULL, NULL) == RES_BAD_ARG);
     43   CHK(ssol_object_create(dev, NULL) == RES_BAD_ARG);
     44   CHK(ssol_object_create(NULL, &object) == RES_BAD_ARG);
     45   CHK(ssol_object_create(dev, &object) == RES_OK);
     46 
     47   CHK(ssol_object_add_shaded_shape(NULL, NULL, NULL, NULL) == RES_BAD_ARG);
     48   CHK(ssol_object_add_shaded_shape(object, NULL, NULL, NULL) == RES_BAD_ARG);
     49   CHK(ssol_object_add_shaded_shape(NULL, shape, NULL, NULL) == RES_BAD_ARG);
     50   CHK(ssol_object_add_shaded_shape(object, shape, NULL, NULL) == RES_BAD_ARG);
     51   CHK(ssol_object_add_shaded_shape(NULL, NULL, mtl, NULL) == RES_BAD_ARG);
     52   CHK(ssol_object_add_shaded_shape(object, NULL, mtl, NULL) == RES_BAD_ARG);
     53   CHK(ssol_object_add_shaded_shape(NULL, shape, mtl, NULL) == RES_BAD_ARG);
     54   CHK(ssol_object_add_shaded_shape(object, shape, mtl, NULL) == RES_BAD_ARG);
     55   CHK(ssol_object_add_shaded_shape(NULL, NULL, NULL, mtl) == RES_BAD_ARG);
     56   CHK(ssol_object_add_shaded_shape(object, NULL, NULL, mtl) == RES_BAD_ARG);
     57   CHK(ssol_object_add_shaded_shape(NULL, shape, NULL, mtl) == RES_BAD_ARG);
     58   CHK(ssol_object_add_shaded_shape(object, shape, NULL, mtl) == RES_BAD_ARG);
     59   CHK(ssol_object_add_shaded_shape(NULL, NULL, mtl, mtl) == RES_BAD_ARG);
     60   CHK(ssol_object_add_shaded_shape(object, NULL, mtl, mtl) == RES_BAD_ARG);
     61   CHK(ssol_object_add_shaded_shape(NULL, shape, mtl, mtl) == RES_BAD_ARG);
     62   CHK(ssol_object_add_shaded_shape(object, shape, mtl, mtl) == RES_OK);
     63   CHK(ssol_object_add_shaded_shape(object, shape2, mtl2, mtl2) == RES_OK);
     64 
     65   CHK(ssol_object_ref_get(NULL) == RES_BAD_ARG);
     66   CHK(ssol_object_ref_get(object) == RES_OK);
     67   CHK(ssol_object_ref_put(NULL) == RES_BAD_ARG);
     68   CHK(ssol_object_ref_put(object) == RES_OK);
     69   CHK(ssol_object_ref_put(object) == RES_OK);
     70 
     71   CHK(ssol_object_create(dev, &object) == RES_OK);
     72   CHK(ssol_object_add_shaded_shape(object, shape, mtl, mtl2) == RES_OK);
     73   CHK(ssol_object_add_shaded_shape(object, shape, mtl2, mtl) == RES_OK);
     74 
     75   CHK(ssol_object_clear(NULL) == RES_BAD_ARG);
     76   CHK(ssol_object_clear(object) == RES_OK);
     77 
     78   CHK(ssol_object_get_area(object, NULL) == RES_BAD_ARG);
     79   CHK(ssol_object_get_area(NULL, &a) == RES_BAD_ARG);
     80   CHK(ssol_object_get_area(object, &a) == RES_OK);
     81 
     82   CHK(ssol_object_ref_put(object) == RES_OK);
     83   CHK(ssol_shape_ref_put(shape) == RES_OK);
     84   CHK(ssol_shape_ref_put(shape2) == RES_OK);
     85   CHK(ssol_material_ref_put(mtl) == RES_OK);
     86   CHK(ssol_material_ref_put(mtl2) == RES_OK);
     87   CHK(ssol_device_ref_put(dev) == RES_OK);
     88 
     89   check_memory_allocator(&allocator);
     90   mem_shutdown_proxy_allocator(&allocator);
     91   CHK(mem_allocated_size() == 0);
     92 
     93   return 0;
     94 }