tests/testthat/test-opt_grab.r

library(magrittr)

context("opt_grab")

flags <- c( "-f", "--flag", "--long-flag" )

# No options # 
#  Opt Stings that contain neither values or flags

for( f in flags ) {
  t <- opt_grab( f, opts=optigrab:::str_to_opts() )
  expect_identical( t, NA )
}

for( f in flags ) {
  t <- opt_grab( f, opts=optigrab:::str_to_opts("") )
  expect_identical( t, NA )
}


# Value(s) #
#  Opt Strings that do not contain any flags
#  These should not produce any values since there are no flags.
opt_strings <- c( 'v', 'value', 'val1 val2', 'val1 val2 val3' )
opts = optigrab:::str_to_opts(opt_strings)

for( str in opt_strings ) {
  for ( f in flags ) {
    t <- opt_grab( f, opts=opts )
    expect_identical( t, NA )
  } 
}

# Flag (BOOLEAN) #
context("boolean flags")
opt_string <- c( '-f --flag --long-flag' )
opts <- optigrab:::str_to_opts(opt_string)

for ( opt in opts  ) {
  # cat( "...", str, "\n")
  # expect_error( opt_grab( "-f", opts=opts ) )
  expect_true( opt_grab( opt, n=0, opts=opts ) )
}

# Flag Value 

for( str in opt_strings ) {
  t <- opt_grab( flags, opts=optigrab:::str_to_opts( "-f value") )
  expect_equal( t, "value" )
}



# HERE IS A TYPICAL RScirpt command
opts <- '/opt/r/R-2.13.0-default/lib/R/bin/exec/R --slave --no-restore  
         --file=./test.r --args --args --name fred --date 2011-05-17 -b=1 
         --end-date=2011-05-20 -a'

opts <- optigrab:::str_to_opts( opts )

# [1] "/opt/r/R-2.13.0-default/lib/R/bin/exec/R" "--slave"                                 
# [3] "--no-restore"                             "--file=./test.r"                         
# [5] "--args"                                   "--args"                                  
# [7] "--name"                                   "fred"                                    
# [9] "--date"                                   "2011-05-17"                              
# [11] "-b=1"                                     "--end-date=2011-05-20"                   
# [13] "-a"                                      

# TEST: Simple
opt_grab("--args", n=0, opts=opts)         %>% expect_true
# opt_grab("--args", n=1, opts=opts) # FAIL
opt_grab("--name", opts=opts)              %>% expect_equal('fred') 
opt_grab("--date", opts=opts)              %>% expect_equal('2011-05-17') 
opt_grab("-b", opts=opts)                  %>% equals("1") 
opt_grab("--end-date", opts=opts)          %>% equals('2011-05-20') 
expect_error( opt_grab("-a", opts=opts) )


# TEST: MISSING VALUES
opt_grab("--missing", opts=opts)               %>% expect_equal(NA)
# opt_grab("--missing", default=NULL, opts=opts) %>% expect_equal(NULL) 
# opt_grab("--missing", default=NA, opts=opts)   %>% expect_equal(NA) 
# opt_grab("--missing", default=0, opts=opts)    %>% expect_equal(0) 


# TEST: logical

expect_error( opt_grab( "-a", opts=opts ) )      # Error: No argument supplied. 
opt_grab( "-a", n=0, opts=opts )            %>% expect_true() 
expect_error( opt_grab( "-a", n=1, opts=opts ) )

opt_grab( "-b", opts=opts )             %>% equals("1")         
opt_grab( "-b", n=0, opts=opts )        %>% expect_true
# opt_grab( "-b", n=1, opts=opts, coerce=as.logical.character )  %>% expect_true #FAIL.
opt_grab( "-b", n=1, opts=opts )        %>% equals("1" ) 
decisionpatterns/optigrab documentation built on Jan. 8, 2019, 3:28 a.m.