## Coverage Report

#### Created: 2026-05-04 15:30

next uncovered line (L), next uncovered region (R), next uncovered branch (B)

    /home/liu/actions-runner/_work/ccv/ccv/test/unit/nnc/tfb.tests.c

    Line
    Count
    Source
    1
    #include <stddef.h>
    2
    3
    #include "ccv.h"
    4
    #include "case.h"
    5
    #include "ccv_case.h"
    6
    #include "nnc/ccv_nnc.h"
    7
    8
    TEST_SETUP()
    9
    {
    10
      ccv_nnc_init();
    11
    }
    12
    13
    #if CCV_NNC_TENSOR_TFB
    14
    TEST_CASE("toll-free bridging between ccv_nnc_tensor_t and ccv_dense_matrix_t")
    15
    1
    {
    16
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, type) == offsetof(ccv_dense_matrix_t, type), "type offset should be the same");
    17
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, sig) == offsetof(ccv_dense_matrix_t, sig), "sig offset should be the same");
    18
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, refcount) == offsetof(ccv_dense_matrix_t, refcount), "refcount offset should be the same");
    19
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, data) == offsetof(ccv_dense_matrix_t, data), "data offset should be the same");
    20
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, type) == offsetof(ccv_dense_matrix_t, resides), "info.type and resides offset should be the same");
    21
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, format) == offsetof(ccv_dense_matrix_t, format), "info.format and format offset should be the same");
    22
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, datatype) == offsetof(ccv_dense_matrix_t, datatype), "info.datatype and datatype offset should be the same");
    23
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, dim) == offsetof(ccv_dense_matrix_t, rows), "info.dim[0] and rows offset should be the same");
    24
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, dim) + sizeof(int) * 3 == offsetof(ccv_dense_matrix_t, reserved4), "info.dim[3] and reserved offset should be the same");
    25
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) + offsetof(ccv_nnc_tensor_param_t, dim) + sizeof(int) * 4 == offsetof(ccv_dense_matrix_t, step), "info.dim[4] and step offset should be the same");
    26
    1
    }
    27
    #endif
    28
    29
    TEST_CASE("toll-free bridging between ccv_nnc_tensor_t and ccv_nnc_tensor_view_t")
    30
    1
    {
    31
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, type) == offsetof(ccv_nnc_tensor_view_t, type), "type offset should be the same");
    32
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, sig) == offsetof(ccv_nnc_tensor_view_t, sig), "sig offset should be the same");
    33
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, refcount) == offsetof(ccv_nnc_tensor_view_t, refcount), "refcount offset should be the same");
    34
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, data) == offsetof(ccv_nnc_tensor_view_t, data), "data offset should be the same");
    35
    1
      REQUIRE(offsetof(ccv_nnc_tensor_t, info) == offsetof(ccv_nnc_tensor_view_t, info), "info offset should be the same");
    36
    1
    }
    37
    38
    #include "case_main.h"