1function gbtest46
2%GBTEST46 test GrB.subassign and GrB.assign
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') ;
8d.kind = 'sparse' ;
9
10types = gbtest_types ;
11for k = 1:length (types)
12    type = types {k} ;
13    A = gbtest_cast (rand (4) * 100, type) ;
14    C = GrB.subassign (A, {1}, {1}, gbtest_cast (pi, type)) ;
15    A (1,1) = pi ;
16    assert (gbtest_err (A, C) == 0) ;
17end
18
19for trial = 1:40
20
21    A = rand (4) ;
22    G = GrB (A) ;
23    pg = GrB (pi) ;
24
25    C1 = A ;
26    C1 (1:3,1) = pi ;
27
28    C2 = GrB.subassign (A, pi, { 1:3}, { 1 }) ;
29    C3 = GrB.subassign (G, pi, { 1:3}, { 1 }) ;
30    C4 = GrB.subassign (G, pg, { 1:3}, { 1 }) ;
31    C5 = GrB.subassign (G, pg, { 1:3}, { 1 }, d) ;
32    assert (isequal (C1, C2)) ;
33    assert (isequal (C1, C3)) ;
34    assert (isequal (C1, C4)) ;
35    assert (isequal (C1, C5)) ;
36    assert (isequal (class (C5), 'double')) ;
37
38    C2 = GrB.assign (A, pi, { 1:3}, { 1 }) ;
39    C3 = GrB.assign (G, pi, { 1:3}, { 1 }) ;
40    C4 = GrB.assign (G, pg, { 1:3}, { 1 }) ;
41    C5 = GrB.assign (G, pg, { 1:3}, { 1 }, d) ;
42    assert (isequal (C1, C2)) ;
43    assert (isequal (C1, C3)) ;
44    assert (isequal (C1, C4)) ;
45    assert (isequal (C1, C5)) ;
46    assert (isequal (class (C5), 'double')) ;
47
48end
49
50fprintf ('gbtest46: all tests passed\n') ;
51
52