diff --git a/DESCRIPTION b/DESCRIPTION
index e8e6d1b3626d42f850235f16ae9989fc4f161bef..1ef27165bd496bca050531b9845619c1e21c7fc5 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -10,7 +10,13 @@ License: What license is it under?
Encoding: UTF-8
LazyData: true
Suggests:
+ R.utils,
+ RandomFields,
testthat (>= 3.0.0)
Config/testthat/edition: 3
Depends:
R (>= 2.10)
+RoxygenNote: 7.1.1
+Roxygen: list(markdown = TRUE)
+Imports:
+ terra
diff --git a/NAMESPACE b/NAMESPACE
new file mode 100644
index 0000000000000000000000000000000000000000..d4e57ad55f6f3c6fd45a5032f39676d915a9a529
--- /dev/null
+++ b/NAMESPACE
@@ -0,0 +1,3 @@
+# Generated by roxygen2: do not edit by hand
+
+export(loadConfig)
diff --git a/inst/config.yml b/inst/config.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ebdfcb2ef40a6684f722607bdfe12731c7a64598
--- /dev/null
+++ b/inst/config.yml
@@ -0,0 +1,13 @@
+default:
+ sic:
+ path: "*** The path of your installation of SIC should be defined ***"
+ edisic: "exe/EdiSIC.exe"
+ talweg: "exe/TALWEG.exe"
+ fluvia: "exe/FLUVIA.exe"
+ sirene: "exe/SIRENE.exe"
+ export: "exe/SicExport.exe"
+ fortran:
+ prms:
+ INTERF: "0"
+ project:
+ path: "*** The path of your XML project file should be defined ***"
diff --git a/man/loadConfig.Rd b/man/loadConfig.Rd
new file mode 100644
index 0000000000000000000000000000000000000000..a441095a16de72f3d0101ca913f6d82632338218
--- /dev/null
+++ b/man/loadConfig.Rd
@@ -0,0 +1,55 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/loadConfig.R
+\name{loadConfig}
+\alias{loadConfig}
+\title{Read default configuration of the package and complete it with eventual user config}
+\usage{
+loadConfig(
+ sic_path = NULL,
+ xml_path = NULL,
+ userFile = "config.yml",
+ pathDefaultCfg = system.file("config.yml", package = "rsic2")
+)
+}
+\arguments{
+\item{userFile}{location of the user config YML file}
+
+\item{pathDefaultCfg}{The location of the default configuration (located in "inst/config.yml" of the package by default)}
+}
+\value{
+A configuration as it is returned by \link[config:get]{config::get}.
+
+Configuration of RSIC2 as the following structure:
+\itemize{
+\item sic
+\itemize{
+\item path: Path of local SIC installation (should be defined by \code{sic_path} parameter or in the user config file)
+\item edisic: sub-path to EdiSIC program
+\item talweg: sub-path to TALWEG program
+\item fluvia: sub-path to FLUVIA program
+\item sirene: sub-path to SIRENE program
+\item export: sub-path to SicExport program
+\item fortran:
+\itemize{
+\item prms:
+\itemize{
+\item INTERF: default \code{INTERF} parameter injected in command line arguments of TALWEG, FLUVIA, SIRENE
+}
+}
+}
+\item project
+\itemize{
+\item path: Path to the XML project file (should be defined by \code{xml_path} parameter or in the user config file)
+}
+}
+}
+\description{
+Read default configuration of the package and complete it with eventual user config
+}
+\examples{
+library(sic2)
+sic_path <- tempdir(check = TRUE)
+xml_path <- R.utils::tmpfile()
+cfg <- loadConfig(sic_path, xml_path)
+str(cfg)
+}
diff --git a/rsic2.Rproj b/rsic2.Rproj
index 497f8bfcfb9d13ad61d14d79963641e9aeab41b0..270314b87d171300f76501b32e8a0354926d9c84 100644
--- a/rsic2.Rproj
+++ b/rsic2.Rproj
@@ -18,3 +18,4 @@ StripTrailingWhitespace: Yes
BuildType: Package
PackageUseDevtools: Yes
PackageInstallArgs: --no-multiarch --with-keep.source
+PackageRoxygenize: rd,collate,namespace
diff --git a/tests/testthat.R b/tests/testthat.R
new file mode 100644
index 0000000000000000000000000000000000000000..184d06695f282b11f9707a4497ccde669332e5dc
--- /dev/null
+++ b/tests/testthat.R
@@ -0,0 +1,4 @@
+library(testthat)
+library(rsic2)
+
+test_check("rsic2")
diff --git a/tests/testthat/test-loadConfig.R b/tests/testthat/test-loadConfig.R
new file mode 100644
index 0000000000000000000000000000000000000000..1828a28d496233d58e4c8d7b2a2267329af86675
--- /dev/null
+++ b/tests/testthat/test-loadConfig.R
@@ -0,0 +1,33 @@
+test_that("incomplete config throw an error", {
+ expect_error(loadConfig())
+})
+
+sic_path <- tempdir(check = TRUE)
+xml_path <- tempfile(fileext = ".xml")
+writeLines("<XML>Fake project</XML>", xml_path)
+
+test_that("Wrong SIC path throw an error", {
+ expect_error(loadConfig(file.path(sic_path, "fake"), xml_path))
+})
+
+test_that("Wrong XML path throw an error", {
+ expect_error(loadConfig(sic_path, file.path(xml_path, "fake.xml")))
+})
+
+test_that("SIC and XML paths injected by parameters should be provided in cfg", {
+ cfg <- loadConfig(sic_path, xml_path)
+ expect_equal(cfg$sic$path, sic_path)
+ expect_equal(cfg$project$path, xml_path)
+})
+
+test_that("SIC and XML paths injected by user yml file should be provided in cfg", {
+ tmpCfgPath <- tempfile(fileext = ".yml")
+ ymlCfg <- list(default = list(
+ sic = list(path = sic_path),
+ project = list(path = xml_path)
+ ))
+ yaml::write_yaml(ymlCfg, tmpCfgPath)
+ cfg <- loadConfig(userFile = tmpCfgPath)
+ expect_equal(cfg$sic$path, sic_path)
+ expect_equal(cfg$project$path, xml_path)
+})