diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000000000000000000000000000000000000..91114bf2f2bba5e0c5252e75018da19b869776f1 --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/DESCRIPTION b/DESCRIPTION index 4d2265534907fc3be8826e5893e23a012a97571f..d9a91b821f13b83cd645e990eddef9e085a159fe 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,11 +1,17 @@ -Package: exercise +Package: Advanced_R_Group_Cooperation Type: Package Title: Lab 3 exercise Version: 1.0 Date: 2024-09-12 -Author:Liuxi Mei +Author: Liuxi Mei Maintainer: Liuxi Mei <liume102@student.liu.se> -Description: This is a exercise for lab 3. +Description: This is a exercise package for advanced R . License: GPL (>= 2) RoxygenNote: 7.3.2 Encoding: UTF-8 +Depends: + R (>= 2.10) +LazyData: true +Suggests: + testthat (>= 3.0.0) +Config/testthat/edition: 3 diff --git a/R/data.R b/R/data.R index 6d075125761ec161464c76da5399398145bf4627..f510d303d09849090bac87bdaeb87753f33c3b79 100644 --- a/R/data.R +++ b/R/data.R @@ -1,11 +1,10 @@ -#' -#' @format ## `who` -#' A data frame with 7,240 rows and 60 columns: +#' graph +#' @format A data frame with 18 rows and 3 columns: #' \describe{ -#' \item{country}{Country name} -#' \item{iso2, iso3}{2 & 3 letter ISO country codes} -#' \item{year}{Year} +#' \item{v1}{node name} +#' \item{v2}{node name} +#' \item{w}{the weight between node v1 and node v2} #' ... #' } wiki_graph \ No newline at end of file diff --git a/data/.gitkeep b/data-raw/.gitkeep similarity index 100% rename from data/.gitkeep rename to data-raw/.gitkeep diff --git a/data-raw/wiki_graph.R b/data-raw/wiki_graph.R new file mode 100644 index 0000000000000000000000000000000000000000..bf14777b4f98387ad5a98acfd0e823013850c113 --- /dev/null +++ b/data-raw/wiki_graph.R @@ -0,0 +1,12 @@ +library(dplyr, warn.conflicts = FALSE) +library(rvest) +library(tidyr) +library(readr) +library(usethis) + +wiki_graph <-data.frame(v1=c(1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,6,6,6), + v2=c(2,3,6,1,3,4,1,2,4,6,2,3,5,4,6,1,3,5), + w=c(7,9,14,7,10,15,9,10,11,2,15,11,6,6,9,14,2,9)) + +write_csv(wiki_graph, "data-raw/wiki_graph.csv") +usethis::use_data(wiki_graph, overwrite = TRUE) \ No newline at end of file diff --git a/data-raw/wiki_graph.csv b/data-raw/wiki_graph.csv new file mode 100644 index 0000000000000000000000000000000000000000..8a673824f7bdf1b61c863af9ee966ea1349e84bc --- /dev/null +++ b/data-raw/wiki_graph.csv @@ -0,0 +1,19 @@ +v1,v2,w +1,2,7 +1,3,9 +1,6,14 +2,1,7 +2,3,10 +2,4,15 +3,1,9 +3,2,10 +3,4,11 +3,6,2 +4,2,15 +4,3,11 +4,5,6 +5,4,6 +5,6,9 +6,1,14 +6,3,2 +6,5,9 diff --git a/data/wiki_graph.rda b/data/wiki_graph.rda new file mode 100644 index 0000000000000000000000000000000000000000..b9513341241f425a3aece1bb3c043a2cb7efc6f4 Binary files /dev/null and b/data/wiki_graph.rda differ diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 0000000000000000000000000000000000000000..c3aa5188bc93dfddf3114ad0901d006c2256315a --- /dev/null +++ b/tests/testthat.R @@ -0,0 +1,12 @@ +# This file is part of the standard setup for testthat. +# It is recommended that you do not modify it. +# +# Where should you do additional test configuration? +# Learn more about the roles of various files in: +# * https://r-pkgs.org/testing-design.html#sec-tests-files-overview +# * https://testthat.r-lib.org/articles/special-files.html + +library(testthat) +library(Advanced_R_Group_Cooperation) + +test_check("Advanced_R_Group_Cooperation") diff --git a/tests/testthat/test.dijkstra.R b/tests/testthat/test.dijkstra.R new file mode 100644 index 0000000000000000000000000000000000000000..f49d110330679e06c1302dc3b1d70be5155ec0ef --- /dev/null +++ b/tests/testthat/test.dijkstra.R @@ -0,0 +1,23 @@ +# context("dijkstra") +library(testthat) + +wiki_graph <- + data.frame(v1=c(1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,6,6,6), + v2=c(2,3,6,1,3,4,1,2,4,6,2,3,5,4,6,1,3,5), + w=c(7,9,14,7,10,15,9,10,11,2,15,11,6,6,9,14,2,9)) + +test_that("outputs are correct in the Dijkstra algorithm.", { + expect_equal(dijkstra(wiki_graph,1), c(0,7,9,20,20,11)) + expect_equal(dijkstra(wiki_graph,3), c(9,10,0,11,11,2)) +}) + + +test_that("Error messages are returned for erronous input in the Dijkstra algorithm.", { + wiki_wrong_graph <- wiki_graph + names(wiki_wrong_graph) <- c("v1, v3, w") + expect_error(dijkstra(wiki_wrong_graph, 3)) + wiki_wrong_graph <- wiki_graph[1:2] + expect_error(dijkstra(wiki_wrong_graph, 3)) + expect_error(dijkstra(wiki_graph, 7)) + expect_error(dijkstra(as.matrix(wiki_graph), 3)) +}) diff --git a/tests/testthat/test_euclidean.R b/tests/testthat/test_euclidean.R new file mode 100644 index 0000000000000000000000000000000000000000..98138cdf3d88b3dae8f2683bde6ca94d40d1a319 --- /dev/null +++ b/tests/testthat/test_euclidean.R @@ -0,0 +1,15 @@ +library(testthat) + + +test_that("GDC is calculated correctly.", { + expect_equal(euclidean(123612, 13892347912), 4) + expect_equal(euclidean(100, 1000), 100) + expect_equal(euclidean(-100, 1000), 100) +}) + + +test_that("Wrong input throws an error.", { + expect_error(euclidean("100", 1000)) + expect_error(euclidean(100, "1000")) + expect_error(euclidean(TRUE, "1000")) +}) \ No newline at end of file