1function gbtest51
2%GBTEST51 test GrB.tricount and concatenate
3
4% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2021, All Rights Reserved.
5% SPDX-License-Identifier: GPL-3.0-or-later
6
7files =  {
8'../../Demo/Matrix/2blocks'
9'../../Demo/Matrix/ash219'
10'../../Demo/Matrix/bcsstk01'
11'../../Demo/Matrix/bcsstk16'
12'../../Demo/Matrix/eye3'
13'../../Demo/Matrix/fs_183_1'
14'../../Demo/Matrix/ibm32a'
15'../../Demo/Matrix/ibm32b'
16'../../Demo/Matrix/lp_afiro'
17'../../Demo/Matrix/mbeacxc'
18'../../Demo/Matrix/t1'
19'../../Demo/Matrix/t2'
20'../../Demo/Matrix/west0067' } ;
21nfiles = length (files) ;
22
23% the files in ../../Demo/Matrix that do not have a .mtx filename
24% are zero-based.
25desc.base = 'zero-based' ;
26
27valid_count = [
28           0
29           0
30         160
31     1512964
32           0
33         863
34           0
35           0
36           0
37           0
38           2
39           0
40         120 ] ;
41
42[filepath, name, ext] = fileparts (mfilename ('fullpath')) ; %#ok<*ASGLU>
43
44for k = 1:nfiles
45    % fprintf ('--------------------------load file:\n') ;
46    filename = files {k} ;
47    T = load (fullfile (filepath, filename)) ;
48    nz = size (T, 1) ;
49    X = ones (nz,1) ;
50    G = GrB.build (int64 (T (:,1)), int64 (T (:,2)), X, desc) ;
51    A = sparse (T (:,1)+1, T (:,2)+1, X) ;
52    assert (isequal (A,G))
53
54    % fprintf ('--------------------------construct G:\n') ;
55    [m, n] = size (G) ;
56    if (m ~= n)
57        G = [GrB(m,m) G ; G' GrB(n,n)] ; %#ok<*AGROW>   (concatenate)
58    elseif (~issymmetric (G))
59        G = G + G' ;
60    end
61
62    % fprintf ('--------------------------tricount (G):\n') ;
63    c = GrB.tricount (G) ;
64    % fprintf ('triangle count: %-30s : # triangles %d\n', filename, c) ;
65    assert (c == valid_count (k)) ;
66
67    % fprintf ('--------------------------convert G to by-row:\n') ;
68    G = GrB (G, 'by row') ;
69
70    % fprintf ('--------------------------tricount (G):\n') ;
71    c = GrB.tricount (G) ;
72    assert (c == valid_count (k)) ;
73end
74
75% fprintf ('--------------------------tricount (G, ''check''):\n') ;
76c = GrB.tricount (G, 'check') ;
77assert (c == valid_count (end)) ;
78
79fprintf ('\ngbtest51: all tests passed\n') ;
80
81