Nothing
## Tests for source_network(), country_network(), institution_network(), conetwork()
## All should return bibnets_network S3 objects.
## Extended test data with countries and affiliations
make_extended_data <- function() {
d <- make_test_data()
d$countries <- list(
c("USA", "UK"),
c("USA", "DE"),
c("UK", "DE")
)
d$affiliations <- list(
c("MIT", "Oxford"),
c("MIT", "TU Berlin"),
c("Oxford", "TU Berlin")
)
d
}
## ── source_network ──────────────────────────────────────────────────────────
test_that("source_network coupling returns bibnets_network", {
d <- make_test_data()
edges <- source_network(d, type = "coupling")
expect_s3_class(edges, "bibnets_network")
expect_true(all(c("from", "to", "weight") %in% names(edges)))
expect_equal(attr(edges, "network_type"), "source_coupling")
})
test_that("source_network coupling produces journal nodes", {
d <- make_test_data()
edges <- source_network(d, type = "coupling")
## J1 and J2 both cite shared refs — should be linked
all_nodes <- unique(c(edges$from, edges$to))
expect_true(all(all_nodes %in% c("J1", "J2")))
})
test_that("source_network coupling applies min_occur to aggregated sources", {
d <- make_test_data()
edges <- source_network(d, type = "coupling", min_occur = 2)
all_nodes <- unique(c(edges$from, edges$to))
expect_true(all(all_nodes %in% "J1"))
expect_equal(nrow(edges), 0L)
})
test_that("source_network equivalence returns bibnets_network", {
d <- make_test_data()
edges <- source_network(d, type = "equivalence")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "source_equivalence")
})
test_that("source_network co_citation stops without cited_journals", {
d <- make_test_data()
expect_error(source_network(d, type = "co_citation"))
})
test_that("source_network co_citation works with cited_journals column", {
d <- make_test_data()
d$cited_journals <- list(
c("J1", "J2"),
c("J1", "J3"),
c("J2", "J3")
)
edges <- source_network(d, type = "co_citation")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "source_co_citation")
})
test_that("source_network coupling requires journal column", {
d <- make_test_data()
d$journal <- NULL
expect_error(source_network(d, type = "coupling"))
})
## ── country_network ─────────────────────────────────────────────────────────
test_that("country_network collaboration returns bibnets_network", {
d <- make_extended_data()
edges <- country_network(d, type = "collaboration")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "country_collaboration")
})
test_that("country_network collaboration has correct country nodes", {
d <- make_extended_data()
edges <- country_network(d, type = "collaboration")
all_nodes <- unique(c(edges$from, edges$to))
expect_true(all(all_nodes %in% c("USA", "UK", "DE")))
})
test_that("country_network collaboration edge counts are correct", {
d <- make_extended_data()
edges <- country_network(d, type = "collaboration")
get_w <- function(a, b) {
row <- edges[(edges$from == a & edges$to == b) |
(edges$from == b & edges$to == a), ]
if (nrow(row) == 0) return(0)
row$weight[1]
}
## USA-UK: W1; USA-DE: W2; UK-DE: W3
expect_equal(get_w("USA", "UK"), 1)
expect_equal(get_w("USA", "DE"), 1)
expect_equal(get_w("UK", "DE"), 1)
})
test_that("country_network coupling returns bibnets_network", {
d <- make_extended_data()
edges <- country_network(d, type = "coupling")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "country_coupling")
})
test_that("country_network equivalence returns bibnets_network", {
d <- make_extended_data()
edges <- country_network(d, type = "equivalence")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "country_equivalence")
})
## ── institution_network ─────────────────────────────────────────────────────
test_that("institution_network collaboration returns bibnets_network", {
d <- make_extended_data()
edges <- institution_network(d, type = "collaboration")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "institution_collaboration")
})
test_that("institution_network collaboration has correct nodes", {
d <- make_extended_data()
edges <- institution_network(d, type = "collaboration")
all_nodes <- unique(c(edges$from, edges$to))
## build_bipartite uppercases all entity names
expect_true(all(all_nodes %in% c("MIT", "OXFORD", "TU BERLIN")))
})
test_that("institution_network coupling returns bibnets_network", {
d <- make_extended_data()
edges <- institution_network(d, type = "coupling")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "institution_coupling")
})
test_that("institution_network equivalence returns bibnets_network", {
d <- make_extended_data()
edges <- institution_network(d, type = "equivalence")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "institution_equivalence")
})
## ── conetwork ───────────────────────────────────────────────────────────────
test_that("conetwork co-occurrence returns bibnets_network", {
d <- make_test_data()
edges <- conetwork(d, "keywords")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "keywords_co_occurrence")
})
test_that("conetwork co-occurrence has correct keyword nodes", {
d <- make_test_data()
edges <- conetwork(d, "keywords")
all_nodes <- unique(c(edges$from, edges$to))
## build_bipartite uppercases all entity names
expect_true(all(all_nodes %in% c("ML", "DL", "NLP", "CV")))
})
test_that("conetwork by= returns bibnets_network with by_ label", {
d <- make_test_data()
edges <- conetwork(d, "authors", by = "keywords")
expect_s3_class(edges, "bibnets_network")
expect_equal(attr(edges, "network_type"), "authors_by_keywords")
})
test_that("conetwork by= links entities through shared values", {
d <- make_test_data()
## Authors sharing a keyword are linked
edges <- conetwork(d, "authors", by = "keywords")
## Alice and Carol both use nlp (via W2)
all_nodes <- unique(c(edges$from, edges$to))
## At least some authors should be linked
expect_true(nrow(edges) > 0)
})
test_that("conetwork by= normalizes field labels before aggregation", {
d <- data.frame(
id = c("W1", "W2", "W3"),
tags = c("ml; dl", "ML; cv", "dl; CV"),
topics = c("x; y", "x", "y"),
stringsAsFactors = FALSE
)
edges <- conetwork(d, "tags", by = "topics")
all_nodes <- unique(c(edges$from, edges$to))
expect_false(any(all_nodes %in% c("ml", "dl", "cv")))
expect_true(all(all_nodes %in% c("ML", "DL", "CV")))
})
test_that("conetwork splits string columns on sep", {
d <- data.frame(
id = c("W1", "W2", "W3"),
tags = c("ml; dl", "ml; nlp", "dl; nlp"),
stringsAsFactors = FALSE
)
edges <- conetwork(d, "tags")
expect_true(is.data.frame(edges))
expect_true(nrow(edges) > 0)
all_nodes <- unique(c(edges$from, edges$to))
## build_bipartite uppercases entity names
expect_true(any(grepl("ML|DL|NLP", all_nodes)))
})
test_that("conetwork counting attribute is preserved", {
d <- make_test_data()
edges <- conetwork(d, "keywords", counting = "fractional")
expect_equal(attr(edges, "counting"), "fractional")
})
test_that("conetwork similarity attribute is preserved", {
d <- make_test_data()
edges <- conetwork(d, "keywords", similarity = "association")
expect_equal(attr(edges, "similarity"), "association")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.