File: GB_mex_errors.h

package info (click to toggle)
suitesparse-graphblas 7.4.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 67,112 kB
  • sloc: ansic: 1,072,243; cpp: 8,081; sh: 512; makefile: 506; asm: 369; python: 125; awk: 10
file content (72 lines) | stat: -rw-r--r-- 4,195 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//------------------------------------------------------------------------------
// GB_mex_errors.h: error handling macros
//------------------------------------------------------------------------------

// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

//------------------------------------------------------------------------------

#define FAIL(s)                                                             \
{                                                                           \
    mexPrintf ("\nTest failure: %s line %d\n", __FILE__, __LINE__) ;        \
    mexPrintf ( "%s\n", GB_STR(s)) ;                                        \
    mexErrMsgTxt (GB_STR(s) " line: " GB_XSTR(__LINE__)) ;                  \
}

#undef  CHECK
#define CHECK(x)    if (!(x)) FAIL(x) ;
#define CHECK2(x,s) if (!(x)) FAIL(s) ;

// assert that a method should return a particular error code
#define ERR(method)                                                         \
{                                                                           \
    info = method ;                                                         \
    if (info != expected)                                                   \
    {                                                                       \
        mexPrintf ("got %d expected %d\n", info, expected) ;                \
    }                                                                       \
    CHECK2 (info == expected, method) ;                                     \
}

// assert that a method should return a particular error code: with logger,
// for a GrB_Matrix, GrB_Vector, or GrB_Scalar
#define ERR1(C,method)                                                      \
{                                                                           \
    info = method ;                                                         \
    if (info != expected)                                                   \
    {                                                                       \
        const char *error_logger = NULL ;                                   \
        GrB_Matrix_error_(&error_logger, ((GrB_Matrix) C)) ;                \
        if (error_logger != NULL) mexPrintf ("[%s]\n", error_logger) ;      \
        mexPrintf ("got %d expected %d\n", info, expected) ;                \
    }                                                                       \
    CHECK2 (info == expected, method) ;                                     \
}

// assert that a method should return a particular error code: with logger,
// for a GrB_Descriptor
#define ERRD(descriptor,method)                                             \
{                                                                           \
    info = method ;                                                         \
    if (info != expected)                                                   \
    {                                                                       \
        const char *error_logger = NULL ;                                   \
        GrB_Descriptor_error_(&error_logger, descriptor) ;                  \
        if (error_logger != NULL) mexPrintf ("[%s]\n", error_logger) ;      \
        mexPrintf ("got %d expected %d\n", info, expected) ;                \
    }                                                                       \
    CHECK2 (info == expected, method) ;                                     \
}

// assert that a method should succeed
#define OK(method)                                                          \
{                                                                           \
    info = method ;                                                         \
    if (info < 0)                                                           \
    {                                                                       \
        mexPrintf ("[%d] Test failed\n", info) ;                            \
        FAIL (method) ;                                                     \
    }                                                                       \
}