tests/testthat/test_NMwriteSection.R

context("NMwriteSection")

test_that("basic",{

    fileRef <- "testReference/NMwriteSection_1.rds"
    
    outfile <- "testOutput/xgxr011_update1.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"
    NMwriteSection(files="testData/nonmem/xgxr011.mod"
                  ,section=section
                  ,newlines=newlines
                  ,newfile=outfile)
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})


test_that("$section",{
    fileRef <- "testReference/NMwriteSection_1.rds"
    outfile <- "testOutput/xgxr011_update1b.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "$input"
    NMwriteSection(files="testData/nonmem/xgxr011.mod"
                  ,section=section
                  ,newlines=newlines
                  ,newfile=outfile)
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

}) 



## same, with list approach
test_that("list.section",{

    fileRef <- "testReference/NMwriteSection_2.rds"

    outfile <- "testOutput/xgxr011_update2.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"
    NMwriteSection("testData/nonmem/xgxr011.mod"
                  ,list.section=list(input=newlines)
                  ,newfile=outfile
                   )
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})




test_that("Dependent on data.file",{

    fileRef <- "testReference/NMwriteSection_3.rds"
    
    outfile <- "testOutput/xgxr011_update3.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"

    NMwriteSection("testData/nonmem/xgxr011.mod"
                  ,section=section
                  ,data.file="../data/xgxr2.csv"
                  ,newlines=newlines
                  ,newfile=outfile)

    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})


test_that(".mod does not exist",{

    outfile <- "testOutput/xgxr011_update4.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"

    res <- NMwriteSection(files="doesNotExist.mod",
                         ,section=section
                         ,newlines=newlines
                         ,newfile=outfile)
    expect_equal(res,NULL)
    
})


test_that("No files matched",{

    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"

    res <- NMwriteSection(dir="testData/nonmem"
                         ,file.pattern="gerge"
                         ,section=section
                         ,data.file="../data/xgxr2.csv"
                         ,newlines=newlines
                         ,newfile=outfile)

    expect_equal(res,NULL)

})


test_that("basic - write file",{

    fileRef <- "testReference/NMwriteSection_4.rds"
    
    outfile <- "testOutput/xgxr011_update5.mod"
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"
    NMwriteSection("testData/nonmem/xgxr011.mod" 
                  ,section=section
                  ,newlines=newlines
                  ,newfile=outfile)
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})



test_that("update INPUT based on NMgenText",{
    fileRef <- "testReference/NMwriteSection_5.rds"

    text.nm <- NMgenText(NMreadCsv("testData/data/xgxr2.csv"),capitalize = T,width=95)
    res <- NMwriteSection("testData/nonmem/xgxr011.mod",
                          list.section=text.nm["INPUT"],
                          newfile=NULL
                          )

    ##input.new
    input.new <- NMreadSection(lines=res,section="input")
    
    expect_equal_to_reference(input.new,fileRef)
    
})


### I cant reproduce a problem on NMsim where a commented out $COV section gives an error
## test_that("Section not found",{

##     section <- "$simulation"
##     res <- NMwriteSection("testData/nonmem/xgxr011.mod",
##                           section=section,
##                           newlines=""
##                          ,newfile=NULL
##                           )

    
## })

test_that("Insert new section before another",{

    fileRef <- "testReference/NMwriteSection_6.rds"
    
    outfile <- "testOutput/xgxr011_update6.mod"
    newlines <- "$MSFI FILE=file.msf"
    section <- "TABLE"
    NMwriteSection("testData/nonmem/xgxr011.mod" 
                  ,section=section
                  ,newlines=newlines
                  ,newfile=outfile
                  ,location="before")
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})


test_that("No newfile supplied",{

    fileRef <- "testReference/NMwriteSection_07.rds"

    outfile <- "testOutput/NMwriteSection_07.mod"
    file.copy("testData/nonmem/xgxr011.mod",outfile)
    
    newlines <- "$INPUT ROW ID TIME EVID CMT AMT DV FLAG STUDY EFF0"
    section <- "input"
    NMwriteSection(files=outfile
                  ,section=section
                  ,newlines=newlines
                   )
    res <- readLines(outfile)
    expect_equal_to_reference(res,fileRef,version=2)

})

Try the NMdata package in your browser

Any scripts or data that you put into this service are public.

NMdata documentation built on Sept. 11, 2024, 6:16 p.m.