## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ---- eval=FALSE--------------------------------------------------------------
#  # Load library
#  library(assertions)
#  
#  # Create a function that asserts input is numeric
#  assert_numeric_2 <- assert_create(
#    func = is.numeric, # Returns TRUE/FALSE for assertion PASS/FAIL
#    default_error_msg = "'{arg_name}' must be of type numeric, not {class(arg_value)}"
#    )
#  
#  # Assertion passes if input is numeric
#  assert_numeric_2(123)
#  
#  # But throws the expected error if input is not numeric
#  assert_numeric_2("abc")
#  

## ---- eval=FALSE--------------------------------------------------------------
#  assert_string <- assert_create_chain(
#    assert_create(is.character, '{arg_name} must be a character, not {class(arg_value)}'),
#    assert_create(function(s){ length(s)==1 }, '{arg_name} must be length 1, not {arg_value}')
#  )
#  
#  # Assert String
#  assert_string("String")
#  
#  assert_string(3)
#  # Output: Error: '3' must be a character

## ---- eval=FALSE--------------------------------------------------------------
#  # Define Function
#  is_a_string <- function(object){
#   if(!is.character(object))
#     return("{arg_name} must be a character, not class({arg_value})")
#  
#    if(length(object) != 1){
#      return("{arg_name} must be length 1, not {length(object)}")
#    }
#  
#    return(TRUE)
#  }
#  
#  # Create Assertion
#  assert_is_string <- assert_create(
#   is_a_string
#  )
#  
#  # Test assertion works
#  assert_is_string("String")
#  
#  assert_is_string(3)
#  # 3 must be a character, not numeric
#  
#  assert_is_string(c("A", "B"))

