@@ -34,7 +34,7 @@ test_that("[ can set weights and delete weighted edges", {
3434 A [1 , 2 ] <- g [1 , 2 ] <- 3
3535 expect_equal(canonicalize_matrix(g []), A )
3636
37- A [1 : 2 , 2 : 3 ] <- g [1 : 2 , 2 : 3 ] <- - 1
37+ A [1 : 2 , 2 : 3 ] <- g [1 : 2 , 2 : 3 , loops = TRUE ] <- - 1
3838 expect_equal(canonicalize_matrix(g []), A )
3939
4040 g [1 , 2 ] <- NULL
@@ -52,12 +52,12 @@ test_that("[ can add edges and ste weights via vertex names", {
5252 A [" b" , " c" ] <- g [" b" , " c" ] <- TRUE
5353 expect_equal(canonicalize_matrix(g []), canonicalize_matrix(A ))
5454
55- A [c(" a" , " f" ), c(" f" , " a" )] <- g [c(" a" , " f" ), c(" f" , " a" )] <- TRUE
55+ A [c(" a" , " f" ), c(" f" , " a" )] <- g [c(" a" , " f" ), c(" f" , " a" ), loops = TRUE ] <- TRUE
5656 expect_equal(canonicalize_matrix(g []), canonicalize_matrix(A ))
5757
5858 A [A == 1 ] <- NA
5959 A [c(" a" , " c" , " h" ), c(" a" , " b" , " c" )] <-
60- g [c(" a" , " c" , " h" ), c(" a" , " b" , " c" ), attr = " weight" ] <- 3
60+ g [c(" a" , " c" , " h" ), c(" a" , " b" , " c" ), attr = " weight" , loops = TRUE ] <- 3
6161 expect_equal(canonicalize_matrix(g []), canonicalize_matrix(A ))
6262})
6363
@@ -105,3 +105,125 @@ test_that("[ and from-to with multiple values", {
105105 )
106106 expect_equal(canonicalize_matrix(g []), canonicalize_matrix(A ))
107107})
108+
109+ test_that(" [ manipulation works as intended for unweighted" , {
110+ # see issue https://github.com/igraph/rigraph/issues/1662
111+ g1 <- make_empty_graph(n = 10 , directed = FALSE )
112+ A1 <- matrix (0 , 10 , 10 )
113+ A1 [1 : 5 , ] <- A1 [, 1 : 5 ] <- g1 [1 : 5 , ] <- 1
114+ diag(A1 ) <- 0
115+ expect_equal(canonicalize_matrix(g1 []), A1 )
116+
117+ g2 <- make_empty_graph(n = 10 , directed = FALSE )
118+ A2 <- matrix (0 , 10 , 10 )
119+ A2 [1 : 5 , ] <- A2 [, 1 : 5 ] <- g2 [, 1 : 5 ] <- 1
120+ diag(A2 ) <- 0
121+ expect_equal(canonicalize_matrix(g2 []), A2 )
122+
123+ g3 <- make_empty_graph(n = 10 , directed = TRUE )
124+ A3 <- matrix (0 , 10 , 10 )
125+ A3 [1 : 5 , ] <- g3 [1 : 5 , ] <- 1
126+ diag(A3 ) <- 0
127+ expect_equal(canonicalize_matrix(g3 []), A3 )
128+
129+ g4 <- make_empty_graph(n = 10 , directed = TRUE )
130+ A4 <- matrix (0 , 10 , 10 )
131+ A4 [, 1 : 5 ] <- g4 [, 1 : 5 ] <- 1
132+ diag(A4 ) <- 0
133+ expect_equal(canonicalize_matrix(g4 []), A4 )
134+
135+ g5 <- make_empty_graph(n = 10 , directed = TRUE )
136+ A5 <- matrix (0 , 10 , 10 )
137+ g5 [1 , 2 ] <- g5 [2 , 1 ] <- A5 [1 , 2 ] <- A5 [2 , 1 ] <- 1
138+ expect_equal(canonicalize_matrix(g5 []), A5 )
139+
140+ g6 <- make_empty_graph(n = 10 , directed = FALSE )
141+ A6 <- matrix (0 , 10 , 10 )
142+ A6 [6 : 10 , 1 : 5 ] <- A6 [1 : 5 , 6 : 10 ] <- g6 [6 : 10 , 1 : 5 ] <- 1
143+ expect_equal(canonicalize_matrix(g6 []), A6 )
144+
145+ g7 <- make_empty_graph(n = 10 , directed = TRUE )
146+ A7 <- matrix (0 , 10 , 10 )
147+ g7 [6 : 10 , 1 : 5 ] <- A7 [6 : 10 , 1 : 5 ] <- 1
148+ diag(A7 ) <- 0
149+ expect_equal(canonicalize_matrix(g7 []), A7 )
150+
151+ g8 <- make_empty_graph(n = 10 , directed = TRUE )
152+ A8 <- matrix (0 , 10 , 10 )
153+ g8 [1 : 5 , 6 : 10 ] <- A8 [1 : 5 , 6 : 10 ] <- 1
154+ diag(A8 ) <- 0
155+ expect_equal(canonicalize_matrix(g8 []), A8 )
156+ })
157+
158+ test_that(" [ manipulation works as intended for weighted" , {
159+ # see issue https://github.com/igraph/rigraph/issues/1662
160+
161+ g1 <- make_empty_graph(n = 10 , directed = FALSE )
162+ A1 <- matrix (0 , 10 , 10 )
163+ A1 [1 : 5 , 1 : 5 ] <- g1 [1 : 5 , 1 : 5 , attr = " weight" ] <- 2
164+ diag(A1 ) <- 0
165+ expect_equal(canonicalize_matrix(g1 []), A1 )
166+
167+ g2 <- make_empty_graph(n = 10 , directed = FALSE )
168+ E(g2 )$ weight <- 1
169+ A2 <- matrix (0 , 10 , 10 )
170+ A2 [1 : 3 , 1 : 3 ] <- g2 [1 : 3 , 1 : 3 ] <- - 2
171+ diag(A2 ) <- 0
172+ expect_equal(canonicalize_matrix(g2 []), A2 )
173+ })
174+
175+ test_that(" [ manipulation handles errors properly" , {
176+ g1 <- make_empty_graph(n = 10 , directed = FALSE )
177+ expect_error(g1 [1 : 5 , ] <- 2 )
178+ })
179+
180+ test_that(" [ deletion works as intended" , {
181+ # see issue https://github.com/igraph/rigraph/issues/1662
182+ g1 <- make_full_graph(n = 10 , directed = FALSE )
183+ A1 <- matrix (1 , 10 , 10 )
184+ diag(A1 ) <- 0
185+ A1 [1 : 5 , ] <- A1 [, 1 : 5 ] <- g1 [1 : 5 , ] <- 0
186+ expect_equal(canonicalize_matrix(g1 []), A1 )
187+
188+ g2 <- make_full_graph(n = 10 , directed = FALSE )
189+ A2 <- matrix (1 , 10 , 10 )
190+ diag(A2 ) <- 0
191+ A2 [1 : 5 , ] <- A2 [, 1 : 5 ] <- g2 [, 1 : 5 ] <- 0
192+ expect_equal(canonicalize_matrix(g2 []), A2 )
193+
194+ g3 <- make_full_graph(n = 10 , directed = TRUE )
195+ A3 <- matrix (1 , 10 , 10 )
196+ diag(A3 ) <- 0
197+ A3 [1 : 5 , ] <- g3 [1 : 5 , ] <- 0
198+ expect_equal(canonicalize_matrix(g3 []), A3 )
199+
200+ g4 <- make_full_graph(n = 10 , directed = TRUE )
201+ A4 <- matrix (1 , 10 , 10 )
202+ diag(A4 ) <- 0
203+ A4 [, 1 : 5 ] <- g4 [, 1 : 5 ] <- 0
204+ expect_equal(canonicalize_matrix(g4 []), A4 )
205+
206+ g5 <- make_full_graph(n = 10 , directed = TRUE )
207+ A5 <- matrix (1 , 10 , 10 )
208+ diag(A5 ) <- 0
209+ g5 [1 , 2 ] <- g5 [2 , 1 ] <- A5 [1 , 2 ] <- A5 [2 , 1 ] <- 0
210+ expect_equal(canonicalize_matrix(g5 []), A5 )
211+
212+ g6 <- make_full_graph(n = 10 , directed = FALSE )
213+ A6 <- matrix (1 , 10 , 10 )
214+ diag(A6 ) <- 0
215+ A6 [6 : 10 , 1 : 5 ] <- A6 [1 : 5 , 6 : 10 ] <- g6 [6 : 10 , 1 : 5 ] <- 0
216+ expect_equal(canonicalize_matrix(g6 []), A6 )
217+
218+ g7 <- make_full_graph(n = 10 , directed = TRUE )
219+ A7 <- matrix (1 , 10 , 10 )
220+ diag(A7 ) <- 0
221+ g7 [6 : 10 , 1 : 5 ] <- A7 [6 : 10 , 1 : 5 ] <- 0
222+ expect_equal(canonicalize_matrix(g7 []), A7 )
223+
224+ g8 <- make_full_graph(n = 10 , directed = TRUE )
225+ A8 <- matrix (1 , 10 , 10 )
226+ diag(A8 ) <- 0
227+ g8 [1 : 5 , 6 : 10 ] <- A8 [1 : 5 , 6 : 10 ] <- 0
228+ expect_equal(canonicalize_matrix(g8 []), A8 )
229+ })
0 commit comments