tests/testthat/test-prodStack.R

# context("prodStack")
# 
# test_that("prodStack, no interactive", {
#   dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   testClass <- function(obj){
#     class(obj)[1] == "combineWidgets"
#   }
#   listArgs <- list(noarg = list(x = dta, interactive = FALSE, areas = "a"),
#                    areas2 = list(x = dta, interactive = FALSE, areas = c("a", "b"))
#   )
#   
#   lapply(listArgs, function(X){
#     re1 <- do.call(prodStack, X)
#     expect_true(testClass(re1))
#   })
#   
# })
# 
# test_that("prodStack, no interactive return error", {
#   
#   dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   expect_error(prodStack(dta, interactive = FALSE, compare = "areas"))
#   
# })
# 
# test_that("prodStack, interactive", {
#   dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   VV <- prodStack(dta, interactive = FALSE)
#   expect_true("htmlwidget" %in% class(VV))
# })
# 
# test_that("prodStack must work with refStudy, if x and refStudy are antaresDataList, ", {
#   myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   
#   myArea <- "a"
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   PS3 <-  prodStack(x = myData2, refStudy  = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
#   
#   resCompare <- antaresProcessing::compare(myData2, myData1, method = "diff")
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#   
#   expect_true(isTRUE(max(resCompare$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#   
#   #pb timeZine local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
#   
#   PS3 <-  prodStack(x = myData2, refStudy  = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#   resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
#   expect_true(all.equal(resCompare$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#   #after DR + 5 hours (no change)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
# })
# 
# test_that("prodStack must work with refStudy, if x is a list of antaresDataList and refStudy an antaresDataList, ", {
#   myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData3 <- readAntares(areas = c("a", "b", "c"), links = "all", showProgress = FALSE)
#   myData4 <- readAntares(areas = c("a", "b"), links = "all", showProgress = FALSE)
#   myArea <- "a"
#   myDataList <- list(myData4, myData3, myData2)
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   PS1_list <-  prodStack(x = myDataList, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
#   resCompare <- antaresProcessing::compare(myDataList[[3]], myData1, method = "diff")
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 3)
#   all.equal(max(resCompare$areas$GAS), max(dataHtmlWidgetPS$neggas, na.rm = TRUE))
#   #pb timeZone local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#     myData4$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#     myData3$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData3$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
#   
#   PS1_list <-  prodStack(x = myDataList, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 3)
#   resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
#   expect_true(all.equal(resCompare$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#   #after DR + 5 hours (no edit)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
#   
#   #no change for myData3
#   resCompare3 <- antaresProcessing::compare(myData3, myData1, method = "diff")
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 2)
#   expect_true(all.equal(resCompare3$areas[ time == as.Date(DR)[1] & area == myArea, GAS], dataHtmlWidgetPS$neggas[[2]]))
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
#   
# })
# 
# test_that("prodStack must work with refStudy, if x and refStudy are optsH5, ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runProdStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     
#     myArea <- "b"
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     PS3 <-  prodStack(x = optsH5, 
#                       refStudy = optsH5, 
#                       interactive = FALSE, 
#                       areas = myArea, 
#                       dateRange = DR)
#     
#     #check that PS1 == PS2 or PS3 == 0
#     dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#     expect_equal(0, max(dataHtmlWidgetPS$totalProduction, na.rm = TRUE))
#     expect_equal(0, max(dataHtmlWidgetPS$gas, na.rm = TRUE))
#     
#     # with a new Study H5 test if compare prodStack works
#     ## create a new folder h5
#     pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
#     pathNewH5 <- file.path(pathInitial, "testH5")
#     if (!dir.exists(pathNewH5)){
#       dir.create(pathNewH5)
#     }
#     #write the study
#     #windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
#     optsData <- antaresRead::setSimulationPath(path = studyPath)
#     suppressWarnings(writeAntaresH5(path = pathNewH5, opts = optsData, 
#                                     overwrite = TRUE, supressMessages = TRUE))
#     
#     
#     pathNewH5File <- file.path(pathNewH5, list.files(pathNewH5))
#     .h5Antares_edit_variable(
#       pathH5 = pathNewH5File, 
#       area = myArea, 
#       timeId = 1:40, 
#       antVar = "LIGNITE", 
#       newValue = 15000
#     )
#     
#     optsH5New <- setSimulationPath(path = pathNewH5)
#     PS3 <-  prodStack(x = optsH5New, refStudy = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
#     
#     resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE)
#     resOptsH5New <- readAntares(opts = optsH5New, areas = myArea, showProgress = FALSE)
#     expect_equal(resOptsH5New[time == as.Date(DR)[1], LIGNITE], 15000)
#     
#     resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
#     expect_equal(resCompareData[timeId == timeId[40], LIGNITE], -24000)
#     
#     dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#     expect_equal(resCompareData[timeId == timeId[40], LIGNITE], -dataHtmlWidgetPS$neglignite[[2]])
#     #no change after timeID > 40
#     expect_equal(resCompareData[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS$neglignite[[50]])
#   }
#   
# })
# 
# test_that("prodStack must work with refStudy, if x is a list of optsH5 and refStudy an optsH5, ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runProdStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     
#     # with new Studies H5 test if compare prodStack works
#     ## create new folders h5
#     pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
#     
#     listFolderToCreate <- c("testH5v2", "testH5v3", "testH5v4")
#     for (folder in listFolderToCreate){
#       pathNewH5 <- file.path(pathInitial, folder)
#       if (!dir.exists(pathNewH5)){
#         dir.create(pathNewH5)
#       }
#       
#       #write the study
#       #windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
#       optsData <- antaresRead::setSimulationPath(path = studyPath)
#       suppressWarnings(
#         writeAntaresH5(
#           path = pathNewH5, 
#           opts = optsData, 
#           overwrite = TRUE,
#           supressMessages = TRUE)
#       )
#     }
#     myArea <- "b"
#     pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[2]])
#     pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
#     newValueLignite <- 100000
#     .h5Antares_edit_variable(
#       pathH5 = pathH5FileToEdit, 
#       area = myArea, 
#       timeId = 1:40, 
#       antVar = "LIGNITE", 
#       newValue = newValueLignite
#     )
#     
#     optsList <- list()
#     antaresDataListH5 <- list()
#     for (i in 1:length(listFolderToCreate)){
#       pathOptsI <- file.path(pathInitial, listFolderToCreate[[i]])
#       optsList[[i]] <- setSimulationPath(path = pathOptsI)
#       antaresDataListH5[[i]] <- readAntares(areas = myArea)
#     }
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     PS1 <- prodStack(x = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
#     PS2 <- prodStack(x = optsList, interactive = FALSE, areas = myArea, dateRange = DR)
#     PS_List <-  prodStack(x = optsList, refStudy = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
#     #get the data from the h5 file
#     antaresDataRef <- readAntares(opts = optsH5, areas = myArea)
#     expect_equal(max(antaresDataListH5[[2]]$LIGNITE), newValueLignite) 
#     expect_equal(max(antaresDataListH5[[1]]$LIGNITE), max(antaresDataRef$LIGNITE)) 
#     expect_equal(max(antaresDataListH5[[3]]$LIGNITE), max(antaresDataRef$LIGNITE)) 
#     #get the data from htmlwidget
#     dataHtmlWidgetPS1 <- .get_data_from_htmlwidget(PS_List, widgetsNumber = 1)
#     dataHtmlWidgetPS2 <- .get_data_from_htmlwidget(PS_List, widgetsNumber = 2)
#     #compare data  
#     resCompareData1_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[1]])
#     resCompareData2_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[2]])
#     expect_equal(resCompareData1_ref[timeId == timeId[40], LIGNITE], -dataHtmlWidgetPS1$lignite[[2]])
#     expect_equal(resCompareData2_ref[timeId == timeId[40], LIGNITE], dataHtmlWidgetPS2$lignite[[2]])
#     #no change after timeID > 40
#     expect_equal(resCompareData1_ref[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS1$lignite[[50]])
#     expect_equal(resCompareData2_ref[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS2$lignite[[50]])
#     
#   }
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x and refStudy are antaresData, ", {
#   myData1 <- readAntares(areas = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", showProgress = FALSE)
#   
#   myArea <- "a"
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   
#   #for debug, dont compare
#   # PS3 <-  prodStack(
#   #   x = myData2, 
#   #   dateRange = DR, 
#   #   .runApp = FALSE, 
#   #   interactive = TRUE,
#   #   h5requestFiltering = list(areas = myArea))
#   # res <- PS3$init()
#   # PS3 
#   # #for debug, refStudy but not interactive 
#   # PS3 <-  prodStack(
#   #   x = myData2, 
#   #   refStudy = myData1,
#   #   dateRange = DR, 
#   #   .runApp = FALSE, 
#   #   interactive = FALSE,
#   #   areas = myArea)
#   # PS3
#   
#   #MWController 
#   PS3 <-  prodStack(
#     x = myData2, 
#     refStudy  = myData1, 
#     dateRange = DR, 
#     .runApp = FALSE, 
#     interactive = TRUE,
#     h5requestFiltering = list(areas = myArea))
#   res <- PS3$init()
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 1)
#   expect_equal(PS3$ncol, 1)
#   expect_equal(PS3$nrow, 1)
#   
#   #get the data from antaresData
#   resCompare <- antaresProcessing::compare(myData2, myData1, method = "diff")
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#   expect_true(isTRUE(max(resCompare$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#   
#   #pb timeZine local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData1[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
#   
#   PS3 <-  prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 1)
#   expect_equal(PS3$ncol, 1)
#   expect_equal(PS3$nrow, 1)
#   
#   resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
#   
#   PS3$init()
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#   expect_true(all.equal(resCompare[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#   #after DR + 5 hours (no change)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))   
#   
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x a list of antaresData and refStudy an antaresData, ", {
#   myData1 <- readAntares(areas = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", showProgress = FALSE)
#   myData3 <- readAntares(areas = "all", showProgress = FALSE)
#   myData4 <- readAntares(areas = "all", showProgress = FALSE)
#   
#   myDataList <- list(myData2, myData3, myData4)
#   
#   myArea <- "a"
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   #MWController 
#   PS3 <-  prodStack(x = myDataList, refStudy  = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   #PS3 <-  prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR)
#   res <- PS3$init()
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 3)
#   expect_equal(PS3$ncol, 2)
#   expect_equal(PS3$nrow, 2)
#   
#   #get the data from antaresData
#   resCompare3_1 <- antaresProcessing::compare(myDataList[[2]], myData1, method = "diff")
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
#   expect_true(isTRUE(max(resCompare3_1$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#   
#   #pb timeZine local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData3[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData3[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
#   
#   PS3 <-  prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 3)
#   expect_equal(PS3$ncol, 2)
#   expect_equal(PS3$nrow, 2)
#   
#   resCompare3_1 <- antaresProcessing::compare(myDataList[[2]], myData2, method = "diff")
#   
#   PS3$init()
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
#   expect_true(all.equal(resCompare3_1[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$gas[[2]])))
#   #after DR + 5 hours (no change)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))   
#   
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is an antaresDataList and refStudy an antaresDataList, ", {
#   myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   
#   myArea <- "a"
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   #MWController 
#   PS3 <-  prodStack(x = myData2, refStudy  = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   res <- PS3$init()
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 1)
#   expect_equal(PS3$ncol, 1)
#   expect_equal(PS3$nrow, 1)
#   
#   #get the data from antaresData
#   resCompare2_1 <- antaresProcessing::compare(myData2, myData1, method = "diff")
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 1)
#   expect_true(isTRUE(max(resCompare2_1$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#   
#   #pb timeZine local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
#   
#   PS3 <-  prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 1)
#   expect_equal(PS3$ncol, 1)
#   expect_equal(PS3$nrow, 1)
#   
#   resCompare2_1 <- antaresProcessing::compare(myData1, myData2, method = "diff")
#   
#   PS3$init()
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 1)
#   expect_true(all.equal(resCompare2_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS$gas[[2]])))
#   #after DR + 5 hours (no change)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))   
#   
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is a list of antaresDataList and refStudy an antaresDataList , ", {
#   myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData3 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myData4 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   
#   myDataList <- list(myData4, myData3, myData2)
#   
#   myArea <- "a"
#   DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#   #MWController 
#   PS3 <-  prodStack(x = myDataList, refStudy  = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   res <- PS3$init()
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 3)
#   expect_equal(PS3$ncol, 2)
#   expect_equal(PS3$nrow, 2)
#   
#   #get the data from antaresData
#   resCompare2_1 <- antaresProcessing::compare(myDataList[[3]], myData1, method = "diff")
#   
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 3)
#   expect_true(isTRUE(max(resCompare2_1$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#   
#   #pb timeZine local (PC, Travis, etc)
#   for (i in 0:5){
#     timeEditShift <- lubridate::hours(i)
#     timeEditMinus <- as.Date(DR[1]) - timeEditShift
#     timeEditPlus <- as.Date(DR[1]) + timeEditShift
#     myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
#   }
#   #check console
#   #myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   #myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#   
#   expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
#   
#   PS3 <-  prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#   
#   expect_true(is(PS3, "MWController"))
#   expect_equal(PS3$ncharts, 3)
#   expect_equal(PS3$ncol, 2)
#   expect_equal(PS3$nrow, 2)
#   
#   resCompare2_1 <- antaresProcessing::compare(myData1, myData2, method = "diff")
#   resCompare3_1 <- antaresProcessing::compare(myData1, myData3, method = "diff")
#   
#   PS3$init()
#   dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 3)
#   expect_true(all.equal(resCompare2_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS$gas[[2]])))
#   #no change for myData3
#   dataHtmlWidgetPS3 <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
#   expect_true(all.equal(resCompare3_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS3$gas[[2]])))
#   #after DR + 5 hours (no change)
#   expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))   
#   
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x, refStudy are optsH5 , ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runProdStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     
#     myArea <- "b"
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     #MWController 
#     # test debug prodStack(x = optsH5, refStudy  = optsH5, dateRange = DR, h5requestFiltering = list(areas = myArea, mcYears = 2))
#     PS3 <-  prodStack(x = optsH5, 
#                       refStudy  = optsH5, 
#                       dateRange = DR, 
#                       h5requestFiltering = list(areas = myArea, mcYears = 2),
#                       .runApp = FALSE, 
#                       interactive = TRUE)
#     
#     res <- PS3$init()
#     expect_true(is(PS3, "MWController"))
#     expect_equal(PS3$ncharts, 1)
#     expect_equal(PS3$ncol, 1)
#     expect_equal(PS3$nrow, 1)
#     
#     #check that PS1 == PS2 or PS3 == 0
#     dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#     expect_equal(0, max(dataHtmlWidgetPS$totalProduction, na.rm = TRUE))
#     expect_equal(0, max(dataHtmlWidgetPS$gas, na.rm = TRUE))
#     
#     # with a new Study H5 test if compare prodStack works
#     ## create a new folder h5
#     pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
#     
#     pathNewH5 <- file.path(pathInitial, "testH5")
#     if (!dir.exists(pathNewH5)){
#       dir.create(pathNewH5)
#     }
#     #write the study
#     #windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
#     optsData <- antaresRead::setSimulationPath(path = studyPath)
#     suppressWarnings(writeAntaresH5(path = pathNewH5, opts = optsData, 
#                                     overwrite = TRUE, supressMessages = TRUE))
#     
#     
#     pathNewH5File <- file.path(pathNewH5, list.files(pathNewH5))
#     .h5Antares_edit_variable(
#       pathH5 = pathNewH5File, 
#       area = myArea, 
#       timeId = 1:40, 
#       antVar = "LIGNITE", 
#       newValue = 15000,
#       mcYear = 2
#     )
#     
#     optsH5New <- setSimulationPath(path = pathNewH5File)
#     PS3 <-  prodStack(x = optsH5New, 
#                       refStudy  = optsH5, 
#                       dateRange = DR, 
#                       h5requestFiltering = list(areas = myArea, mcYears = 2),
#                       .runApp = FALSE, 
#                       interactive = TRUE)
#     res <- PS3$init()
#     
#     #TEST non interactive for debug 
#     PS_FInt <-  prodStack(x = optsH5New, 
#                           refStudy = optsH5, 
#                           mcYearh5 = 2,
#                           interactive = FALSE, 
#                           areas = myArea, 
#                           dateRange = DR)
#     dataHtmlWidgetPSFint <- .get_data_from_htmlwidget(PS_FInt)
#     expect_equal(-23000, min(dataHtmlWidgetPSFint$totalProduction, na.rm = TRUE))
#     expect_equal(0, max(dataHtmlWidgetPSFint$neggas, na.rm = TRUE))
#     expect_equal(23000, max(dataHtmlWidgetPSFint$neglignite, na.rm = TRUE))
#     
#     res <- PS3$init()
#     expect_true(is(PS3, "MWController"))
#     expect_equal(PS3$ncharts, 1)
#     expect_equal(PS3$ncol, 1)
#     expect_equal(PS3$nrow, 1)
#     
#     resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE, mcYears = 2)
#     resOptsH5New <- readAntares(opts = optsH5New, areas = myArea, showProgress = FALSE, mcYears = 2)
#     #timeId for time = "2018-04-24 00:00:00 UTC" ? timeId = 2713
#     timeIdVal <- 2713
#     expect_equal(resOptsH5New[timeId == timeIdVal, LIGNITE], 15000)
#     expect_equal(resOptsH5Old[timeId == timeIdVal, LIGNITE], 38000)
#     
#     resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
#     expect_equal(resCompareData[timeId == timeIdVal, LIGNITE], -23000)
#     
#     dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
#     expect_equal(resCompareData[timeId == timeIdVal, LIGNITE], -dataHtmlWidgetPS$neglignite[[1]])
#     #no change after timeID > 40
#     expect_equal(resCompareData[timeId == (timeIdVal + 90), LIGNITE], -dataHtmlWidgetPS$neglignite[[50]])
#   }
#   
# })
# 
# test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is a list of optsH5 and refStudy optsH5  , ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runProdStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     
#     # with new Studies H5 test if compare prodStack works
#     ## create new folders h5
#     pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
#     
#     listFolderToCreate <- c("testH5v2", "testH5v3", "testH5v4")
#     for (folder in listFolderToCreate){
#       pathNewH5 <- file.path(pathInitial, folder)
#       if (!dir.exists(pathNewH5)){
#         dir.create(pathNewH5)
#       }
#       
#       #write the study
#       #windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
#       optsData <- antaresRead::setSimulationPath(path = studyPath)
#       suppressWarnings(
#         writeAntaresH5(
#           path = pathNewH5, 
#           opts = optsData, 
#           overwrite = TRUE,
#           supressMessages = TRUE)
#       )
#     }
#     myArea <- "b"
#     pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[2]])
#     pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
#     newValueGAS <- 50000
#     mcYearToTestList <- c(2, NULL)
#     for (mcYearToTest in mcYearToTestList){
#       .h5Antares_edit_variable(
#         pathH5 = pathH5FileToEdit, 
#         area = myArea, 
#         timeId = 1:40, 
#         antVar = "GAS", 
#         newValue = newValueGAS,
#         mcYear = mcYearToTest
#       )
#       
#       optsList <- list()
#       antaresDataListH5 <- list()
#       for (i in 1:length(listFolderToCreate)){
#         pathOptsI <- file.path(pathInitial, listFolderToCreate[[i]])
#         optsList[[i]] <- setSimulationPath(path = pathOptsI)
#         antaresDataListH5[[i]] <- readAntares(areas = myArea, mcYear = mcYearToTest)
#       }
#       
#       DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#       #first, try with interactive == FALSE
#       PSListNoInt <-  prodStack(x = optsList, 
#                                 refStudy = optsH5, 
#                                 interactive = FALSE, 
#                                 areas = myArea, 
#                                 dateRange = DR,
#                                 mcYearh5 = mcYearToTest)
#       
#       #get the data from the h5 file
#       antaresDataRef <- readAntares(opts = optsH5, areas = myArea, mcYears = mcYearToTest)
#       expect_equal(max(antaresDataListH5[[2]]$GAS), newValueGAS) 
#       expect_equal(max(antaresDataListH5[[1]]$GAS), max(antaresDataRef$GAS)) 
#       expect_equal(max(antaresDataListH5[[3]]$GAS), max(antaresDataRef$GAS)) 
#       expect_equal(antaresDataListH5[[2]]$`OV. COST`, antaresDataRef$`OV. COST`)
#       
#       #get the data from htmlwidget
#       dataHtmlWidgetPS1 <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 1)
#       dataHtmlWidgetPS2 <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 2)
#       #compare data  
#       resCompareData1_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[1]])
#       resCompareData2_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[2]])
#       expect_equal(resCompareData1_ref[timeId == timeId[40], GAS], -dataHtmlWidgetPS1$gas[[2]])
#       expect_equal(resCompareData2_ref[timeId == timeId[40], GAS], dataHtmlWidgetPS2$gas[[2]])
#       
#       #second, try without refStudy and interactive == FALSE
#       PSListNoInt <-  prodStack(x = optsList,
#                                 dateRange = DR,
#                                 areas = myArea,
#                                 interactive = FALSE,
#                                 mcYearh5 = mcYearToTest)
#       
#       dataHtmlWidgetPSNoInt <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 2)
#       expect_gt(max(dataHtmlWidgetPSNoInt$totalProduction, na.rm = TRUE), 100000)
#       expect_equal(max(dataHtmlWidgetPSNoInt$gas, na.rm = TRUE), 50000)
#       
#       #thirdly, try without refStudy and interactive == TRUE
#       PSWORef <-  prodStack(x = optsList,
#                             dateRange = DR,
#                             h5requestFiltering = list(areas = myArea, 
#                                                       mcYears = mcYearToTest),
#                             .runApp = FALSE,
#                             interactive = TRUE)
#       
#       res <- PSWORef$init()
#       expect_true(is(PSWORef, "MWController"))
#       expect_equal(PSWORef$ncharts, 3)
#       expect_equal(PSWORef$ncol, 2)
#       expect_equal(PSWORef$nrow, 2)    
#       
#       #fourth, MWController with refStudy and interactive == TRUE
#       # test debug prodStack(x = optsH5, refStudy  = optsH5, dateRange = DR, h5requestFiltering = list(areas = myArea, mcYears = 2))
#       PSWRefI <-  prodStack(x = optsList,
#                             refStudy  = optsH5,
#                             dateRange = DR,
#                             h5requestFiltering = list(areas = myArea,
#                                                       mcYears = mcYearToTest),
#                             .runApp = FALSE,
#                             interactive = TRUE)
#       
#       res <- PSWRefI$init()
#       expect_true(is(PSWRefI, "MWController"))
#       expect_equal(PSWRefI$ncharts, 3)
#       expect_equal(PSWRefI$ncol, 2)
#       expect_equal(PSWRefI$nrow, 2)
#       
#       #check that PS1 == PS2 or PSWRefI == 0
#       dataHtmlWidgetPS31 <- .get_data_from_htmlwidget(PSWRefI, widgetsNumber = 2)
#       expect_equal(newValueGAS, max(dataHtmlWidgetPS31$totalProduction, na.rm = TRUE))
#       expect_equal(newValueGAS, max(dataHtmlWidgetPS31$gas, na.rm = TRUE))
#       
#       dataHtmlWidgetPS21 <- .get_data_from_htmlwidget(PSWRefI, widgetsNumber = 1)
#       expect_equal(0, max(dataHtmlWidgetPS21$totalProduction, na.rm = TRUE))
#       expect_equal(0, max(dataHtmlWidgetPS21$gas, na.rm = TRUE))
#       
#       resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE, mcYears = mcYearToTest)
#       resOptsH5New <- readAntares(opts = optsList[[2]], areas = myArea, showProgress = FALSE, mcYears = mcYearToTest)
#       #timeId for time = "2018-04-24 00:00:00 UTC" ? timeId = 2713
#       timeIdVal <- 2713
#       expect_equal(resOptsH5New[timeId == timeIdVal, GAS], newValueGAS)
#       expect_equal(resOptsH5Old[timeId == timeIdVal, GAS], 0)
#       
#       resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
#       expect_equal(resCompareData[timeId == timeIdVal, GAS], newValueGAS)
#       
#       expect_equal(resCompareData[timeId == timeIdVal, GAS], dataHtmlWidgetPS31$gas[[1]])
#       #no change after timeID > 40
#       expect_equal(resCompareData[timeId == (timeIdVal + 90), GAS], dataHtmlWidgetPS31$gas[[50]])
#       expect_equal(0, dataHtmlWidgetPS21$gas[[1]])
#       expect_equal(0, dataHtmlWidgetPS21$gas[[50]])
#     }
#   }
#   
# })
# 
# test_that("prodStack, no interactive, ne error with compare main", {
#   myData <- readAntares(areas = "all", links = "all", showProgress = FALSE)
#   myApplica <- prodStack(x = myData, 
#                          interactive = TRUE, 
#                          compare = "main",
#                          .runApp = FALSE)
#   myApplica$init()
#   expect_true(is(myApplica, "MWController"))
# })

Try the antaresViz package in your browser

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

antaresViz documentation built on Sept. 25, 2023, 5:06 p.m.