commit 6fb862c9e6653461968e445e36947648e6d9015d
parent 1f9aa6205f5c35fe5224693b22e79869a29f70fe
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Mon, 20 Aug 2018 15:00:18 +0200
Check get_enclosure_[count_]by_medium API calls: failure!
Diffstat:
2 files changed, 31 insertions(+), 2 deletions(-)
diff --git a/src/senc.h b/src/senc.h
@@ -173,7 +173,7 @@ senc_descriptor_get_enclosure_count
SENC_API res_T
senc_descriptor_get_enclosure_count_by_medium
(const struct senc_descriptor* descriptor,
- const unsigned medium,
+ const unsigned imed,
unsigned* count);
SENC_API res_T
@@ -185,7 +185,7 @@ senc_descriptor_get_enclosure
SENC_API res_T
senc_descriptor_get_enclosure_by_medium
(struct senc_descriptor* descriptor,
- const unsigned medium,
+ const unsigned imed,
const unsigned idx,
struct senc_enclosure** enclosure);
diff --git a/src/test_senc_cube_behind_cube.c b/src/test_senc_cube_behind_cube.c
@@ -18,6 +18,31 @@
#include <rsys/double3.h>
+void check_desc(struct senc_descriptor* desc) {
+ unsigned mcount, ecount, i;
+ CHK(senc_descriptor_get_max_medium(desc, &mcount) == RES_OK);
+ CHK(mcount == 2);
+ CHK(senc_descriptor_get_enclosure_count(desc, &ecount) == RES_OK);
+ FOR_EACH(i, 0, mcount) {
+ unsigned j, ecount_bym;
+ int found = 0;
+ senc_descriptor_get_enclosure_count_by_medium(desc, i, &ecount_bym);
+ FOR_EACH(j, 0, ecount_bym) {
+ struct senc_enclosure* enc;
+ struct senc_enclosure_header h;
+ unsigned c, k;
+ CHK(senc_descriptor_get_enclosure_by_medium(desc, i, j, &enc) == RES_OK);
+ CHK(senc_enclosure_get_header(enc, &h) == RES_OK);
+ found += (h.enclosed_medium == i);
+ CHK(senc_enclosure_ref_put(enc) == RES_OK);
+ }
+ ASSERT(found == ecount_bym); /* All the enclosures enclose medim i */
+ ASSERT(ecount_bym);
+ ecount -= ecount_bym;
+ }
+ ASSERT(ecount == 0);
+}
+
int
main(int argc, char** argv)
{
@@ -59,9 +84,13 @@ main(int argc, char** argv)
CHK(senc_scene_analyze(scn, &desc) == RES_OK);
+ check_desc(desc);
+
/* Even further in +Z, even bigger */
d3(ctx.offset, -3, -3, 30);
ctx.scale = 7;
+ /* Front/back media have been exchanged: external enclosure shows 2 media
+ * analyze will fail */
ctx.front_media = medium1;
ctx.back_media = medium0;