From e6f3f7abd3d0f2655825e147296e7d202f6f8bb1 Mon Sep 17 00:00:00 2001 From: Liuxi Mei <liume102@student.liu.se> Date: Tue, 24 Sep 2024 12:18:29 +0200 Subject: [PATCH] update package --- .Rbuildignore | 2 ++ DESCRIPTION | 12 +++++++++--- R/data.R | 11 +++++------ {data => data-raw}/.gitkeep | 0 data-raw/wiki_graph.R | 12 ++++++++++++ data-raw/wiki_graph.csv | 19 +++++++++++++++++++ data/wiki_graph.rda | Bin 0 -> 240 bytes tests/testthat.R | 12 ++++++++++++ tests/testthat/test.dijkstra.R | 23 +++++++++++++++++++++++ tests/testthat/test_euclidean.R | 15 +++++++++++++++ 10 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 .Rbuildignore rename {data => data-raw}/.gitkeep (100%) create mode 100644 data-raw/wiki_graph.R create mode 100644 data-raw/wiki_graph.csv create mode 100644 data/wiki_graph.rda create mode 100644 tests/testthat.R create mode 100644 tests/testthat/test.dijkstra.R create mode 100644 tests/testthat/test_euclidean.R diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..91114bf --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/DESCRIPTION b/DESCRIPTION index 4d22655..d9a91b8 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 6d07512..f510d30 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 0000000..bf14777 --- /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 0000000..8a67382 --- /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 GIT binary patch literal 240 zcmV<M01y8{T4*^jL0KkKS%0b;I{*O;|H1xqTtpQGFaX2=5J0c*-GD#<00BS&umILD zX{jJ&Xwj1+MkYhl$TDp-4OIQA2nG{05YWLfFqj}nl{5eVXahh114e_BfTAf}Ldb|1 z9SI~5S7&1|7u1k0usuKpjm;{~_4{cEg9Nms0{c`^;)5k$XP%l!T-X!xfeSN0l-1^u z5-ZIbKxj>gg8)#{2yKBV4F>9v6A}s$Rs=2<Cn{~ODr1JBfJrC`0Te({L@VJc{<W+I q`(f0?^=okA{qiQ4pK+Kjm7L?4rLeh<Au0+7A$KHGg$W1xp`)<EwOm~Q literal 0 HcmV?d00001 diff --git a/tests/testthat.R b/tests/testthat.R new file mode 100644 index 0000000..c3aa518 --- /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 0000000..f49d110 --- /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 0000000..98138cd --- /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 -- GitLab