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 June 27, 2024, 5:10 p.m.