1function gbtest66
2%GBTEST66 test graph
3
4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
5% SPDX-License-Identifier: GPL-3.0-or-later
6
7rng ('default') ;
8
9n = 32 ;
10for trial = 1:40
11    fprintf ('.') ;
12
13    A = sprand (n, n, 0.5) ;
14    A = A + A' ;
15    G = GrB (A) ;
16
17    D1 = graph (A) ;
18    D2 = graph (G) ;
19    assert (isequal (D1, D2)) ;
20
21    D1 = graph (A, 'upper') ;
22    D2 = graph (G, 'upper') ;
23    D3 = graph (triu (A), 'upper') ;
24    D4 = graph (triu (G), 'upper') ;
25    assert (isequal (D1, D2)) ;
26    assert (isequal (D1, D3)) ;
27    assert (isequal (D1, D4)) ;
28
29    D1 = graph (A, 'lower') ;
30    D2 = graph (G, 'lower') ;
31    D3 = graph (tril (A), 'lower') ;
32    D4 = graph (tril (G), 'lower') ;
33    assert (isequal (D1, D2)) ;
34    assert (isequal (D1, D3)) ;
35    assert (isequal (D1, D4)) ;
36
37    D1 = graph (A, 'omitselfloops') ;
38    D2 = graph (G, 'omitselfloops') ;
39    assert (isequal (D1, D2)) ;
40
41    D1 = graph (A, 'lower', 'omitselfloops') ;
42    D2 = graph (G, 'lower', 'omitselfloops') ;
43    D3 = graph (tril (A), 'lower', 'omitselfloops') ;
44    D4 = graph (tril (G), 'lower', 'omitselfloops') ;
45    assert (isequal (D1, D2)) ;
46    assert (isequal (D1, D3)) ;
47    assert (isequal (D1, D4)) ;
48
49    D1 = graph (A, 'upper', 'omitselfloops') ;
50    D2 = graph (G, 'upper', 'omitselfloops') ;
51    D3 = graph (triu (A), 'upper', 'omitselfloops') ;
52    D4 = graph (triu (G), 'upper', 'omitselfloops') ;
53    assert (isequal (D1, D2)) ;
54    assert (isequal (D1, D3)) ;
55    assert (isequal (D1, D4)) ;
56
57    D1 = graph (logical (A)) ;
58    D2 = graph (GrB (A, 'logical')) ;
59    assert (isequal (D1, D2)) ;
60
61    D1 = graph (logical (A), 'omitselfloops') ;
62    D2 = graph (GrB (A, 'logical'), 'omitselfloops') ;
63    assert (isequal (D1, D2)) ;
64end
65
66types = gbtest_types ;
67
68for k = 1:length (types)
69    type = types {k} ;
70
71    A = gbtest_cast (rand (4), type) ;
72    A = A + A' ;
73    G = GrB (A) ;
74
75    if (isequal (type, 'double') || isequal (type, 'single') || ...
76        isequal (type, 'logical'))
77        D1 = graph (A) ;
78    else
79        D1 = graph (double (A)) ;
80    end
81
82    D2 = graph (G) ;
83    assert (isequal (D1, D2)) ;
84end
85
86fprintf ('\ngbtest66: all tests passed\n') ;
87
88