Added two utility functions and created unit test for them.
authorFuad Muhic <fmuhic@capeannenterprises.com>
Fri, 12 Jan 2018 15:25:51 +0000 (16:25 +0100)
committerFuad Muhic <fmuhic@capeannenterprises.com>
Fri, 12 Jan 2018 15:25:51 +0000 (16:25 +0100)
Arvados-DCO-1.1-Signed-off-by: Fuad Muhic <fmuhic@capeannenterprises.com>

sdk/R/R/CollectionTree.R
sdk/R/R/util.R [new file with mode: 0644]
sdk/R/tests/testthat/test-Subcollection.R [new file with mode: 0644]
sdk/R/tests/testthat/test-util.R [new file with mode: 0644]

index b95b797b93b0266fc001f9408e10ec14e32f929f..40cedef6b6eaa5a709264c24af20bc73cd1b45cd 100644 (file)
@@ -1,6 +1,6 @@
 source("./R/Subcollection.R")
-
 source("./R/ArvadosFile.R")
+source("./R/util.R")
 
 #' Arvados Collection Object
 #'
@@ -37,8 +37,8 @@ CollectionTree <- R6::R6Class(
 
         getElement = function(relativePath)
         {
-            if(startsWith(relativePath, "./"))
-                relativePath <- substr(relativePath, 3, nchar(relativePath))
+            relativePath <- trimFromStart(relativePath, "./")
+            relativePath <- trimFromEnd(relativePath, "/")
 
             if(endsWith(relativePath, "/"))
                 relativePath <- substr(relativePath, 0, nchar(relativePath) - 1)
diff --git a/sdk/R/R/util.R b/sdk/R/R/util.R
new file mode 100644 (file)
index 0000000..8d4bcc0
--- /dev/null
@@ -0,0 +1,15 @@
+trimFromStart <- function(sample, trimCharacters)
+{
+    if(startsWith(sample, trimCharacters))
+        sample <- substr(sample, nchar(trimCharacters) + 1, nchar(sample))
+
+    sample
+}
+
+trimFromEnd <- function(sample, trimCharacters)
+{
+    if(endsWith(sample, trimCharacters))
+        sample <- substr(sample, 0, nchar(sample) - nchar(trimCharacters))
+
+    sample
+}
diff --git a/sdk/R/tests/testthat/test-Subcollection.R b/sdk/R/tests/testthat/test-Subcollection.R
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/sdk/R/tests/testthat/test-util.R b/sdk/R/tests/testthat/test-util.R
new file mode 100644 (file)
index 0000000..a897860
--- /dev/null
@@ -0,0 +1,41 @@
+context("Utility function")
+
+test_that("trimFromStart trims string correctly if string starts with trimCharacters", {
+
+    sample <- "./something/random"
+    trimCharacters <- "./something/"
+
+    result <- trimFromStart(sample, trimCharacters)
+
+    expect_that(result, equals("random"))
+}) 
+
+test_that("trimFromStart returns original string if string doesn't starts with trimCharacters", {
+
+    sample <- "./something/random"
+    trimCharacters <- "./nothing/"
+
+    result <- trimFromStart(sample, trimCharacters)
+
+    expect_that(result, equals("./something/random"))
+}) 
+
+test_that("trimFromEnd trims string correctly if string ends with trimCharacters", {
+
+    sample <- "./something/random"
+    trimCharacters <- "/random"
+
+    result <- trimFromEnd(sample, trimCharacters)
+
+    expect_that(result, equals("./something"))
+}) 
+
+test_that("trimFromEnd returns original string if string doesn't end with trimCharacters", {
+
+    sample <- "./something/random"
+    trimCharacters <- "specific"
+
+    result <- trimFromStart(sample, trimCharacters)
+
+    expect_that(result, equals("./something/random"))
+})