tests/testthat/test-exchangesStack.R

context("exchangesStack")

test_that("no interactive", {

  mydata <- readAntares(links = "all", timeStep = "daily", showProgress = FALSE)
  # default parameters
  default_params <- exchangesStack(mydata, interactive = FALSE)
  expect_is(default_params, "htmlwidget")
  # TO DO : passer les arguments
  # passer plusieurs data
  # .compare
  # suivant les cas :
  # - tester les retours d'erreurs
})

test_that("exchangesStack, 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"),
                   allAreas = list(x = dta, interactive = FALSE, areas = "all"),
                   main = list(x = dta, interactive = FALSE, areas = "all", main = "Title"),
                   ylab = list(x = dta, interactive = FALSE, areas = "all", main = "Title", ylab = "Subt")
  )
  lapply(listArgs, function(X){
    re1 <- do.call(exchangesStack, X)
    expect_true(testClass(re1))
  })

})

test_that("exchangesStack, no interactive return error", {
  dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
  expect_error(exchangesStack(dta, interactive = FALSE, compare = "areas"))
})

test_that("exchangesStack, no interactive, x and refStudy are antaresDataTable", {
  myData1 <- readAntares(links = "all", showProgress = FALSE)
  myData2 <- readAntares(links = "all", showProgress = FALSE)
  myArea <- "a"
  DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
  exS1 <-  exchangesStack(x = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS1 <- .get_data_from_htmlwidget(exS1)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS1$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS1$nega_offshore[indexHour], 9)
  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData2 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1)
  expect_equal(dataExS21V1$nega_offshore[indexHour], 2500)
})

test_that("exchangesStack, no interactive, 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")
  exS1 <-  exchangesStack(x = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS1 <- .get_data_from_htmlwidget(exS1)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS1$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS1$nega_offshore[indexHour], 9)
  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData2 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2$links[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1)
  expect_equal(dataExS21V1$nega_offshore[indexHour], 2500)
  #ROW not null in myData1
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1500)]
  }
  #test if there is row
  exS1V2 <-  exchangesStack(x = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS1V2 <- .get_data_from_htmlwidget(exS1V2)
  expect_equal(dataExS1V2$ROW[indexHour], 1500)
  exS21V2 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V2 <- .get_data_from_htmlwidget(exS21V2)
  expect_equal(dataExS21V2$nega_offshore[indexHour], 2500)
  expect_equal(dataExS21V2$ROW[indexHour], 1500)
  #ROW not null in myData2
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1000)]
  }
  exS21V3 <-  exchangesStack(x = myData1, refStudy = myData2, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V3 <- .get_data_from_htmlwidget(exS21V3)
  expect_equal(dataExS21V3$nega_offshore[indexHour], 2500)
  expect_equal(dataExS21V3$ROW[indexHour], 500)
})

test_that("exchangesStack, no interactive, x is a list of antaresDataTable and refStudy an antaresDataTable", {
  myData1 <- readAntares(links = "all", showProgress = FALSE)
  myData2 <- readAntares(links = "all", showProgress = FALSE)
  myData3 <- readAntares(links = "all", showProgress = FALSE)
  myData4 <- readAntares(links = "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")
  exS2 <-  exchangesStack(x = myDataList, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  # compare with myData3
  idWidget <- 2
  dataExS2 <- .get_data_from_htmlwidget(exS2, widgetsNumber = idWidget)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS2$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS2$nega_offshore[indexHour], 9)
  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0, widgetsNumber = idWidget)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData3 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData3[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1, widgetsNumber = idWidget)
  expect_equal(dataExS21V1$a_offshore[indexHour], 2500)
})

test_that("exchangesStack, no interactive, 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(myData2, myData3, myData4)
  myArea <- "a"
  DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
  exS2 <-  exchangesStack(x = myDataList, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  # compare with myData3
  idWidget <- 2
  dataExS2 <- .get_data_from_htmlwidget(exS2, widgetsNumber = idWidget)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS2$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS2$nega_offshore[indexHour], 9)
  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0, widgetsNumber = idWidget)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData3 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData3$links[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1, widgetsNumber = idWidget)
  expect_equal(dataExS21V1$a_offshore[indexHour], 2500)
  #ROW not null in myData4
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData4$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1500)]
  }
  #test if there is row
  exList <-  exchangesStack(x = myDataList, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExList <- .get_data_from_htmlwidget(exList, widgetsNumber = idWidget)
  expect_equal(dataExList$a_offshore[indexHour], 2500 - 9)
  idRowNotNull <- 3
  dataExListRow <- .get_data_from_htmlwidget(exList, widgetsNumber = idRowNotNull)
  expect_equal(dataExListRow$ROW[indexHour], 1500)
  #with a refStudy
  exListListV2 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExListV2 <- .get_data_from_htmlwidget(exListListV2, widgetsNumber = idWidget)
  expect_equal(dataExListV2$a_offshore[indexHour], 2500)
  expect_equal(dataExListV2$ROW[indexHour], 0)
  dataExListV2Row <- .get_data_from_htmlwidget(exListListV2, widgetsNumber = idRowNotNull)
  expect_equal(dataExListV2Row$a_offshore[indexHour], 0)
  expect_equal(dataExListV2Row$ROW[indexHour], 1500)
  #ROW not null in refStudy myData1
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1000)]
  }
  exListListV3 <-  exchangesStack(x = myDataList, refStudy = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExListV3 <- .get_data_from_htmlwidget(exListListV3, widgetsNumber = idRowNotNull)
  expect_equal(dataExListV3$nega_offshore[indexHour], 0)
  expect_equal(dataExListV3$ROW[indexHour], 500)
  dataExListV3g2 <- .get_data_from_htmlwidget(exListListV3, widgetsNumber = idWidget)
  expect_equal(dataExListV3g2$a_offshore[indexHour], 2500)
  expect_equal(dataExListV3g2$negROW[indexHour], 1000)
})

test_that("exchangesStack, interactive, x and refStudy are antaresDataTable", {
  skip_if_not(.runExchangesStackTest)
  myData1 <- readAntares(links = "all", showProgress = FALSE)
  myData2 <- readAntares(links = "all", showProgress = FALSE)
  myArea <- "a"
  DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
  #no interactive
  exS1 <-  exchangesStack(x = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS1 <- .get_data_from_htmlwidget(exS1)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS1$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS1$nega_offshore[indexHour], 9)
  # interactive
  exS1 <-  exchangesStack(x = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS1 <- exS1$init()
  expect_true(is(exS1, "MWController"))
  expect_equal(exS1$ncharts, 1)
  expect_equal(exS1$ncol, 1)
  expect_equal(exS1$nrow, 1)
  dataExS1 <- .get_data_from_htmlwidget(exS1)
  expect_equal(dataExS1$nega_offshore[indexHour], 9)

  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myData1, refStudy = myData2, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  resExS1V0 <- exS21V0$init()
  expect_true(is(exS21V0, "MWController"))
  expect_equal(exS21V0$ncharts, 1)
  expect_equal(exS21V0$ncol, 1)
  expect_equal(exS21V0$nrow, 1)
  #get the data
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData2 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myData1, refStudy = myData2, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  resExS1V0 <- exS21V1$init()
  expect_true(is(exS21V1, "MWController"))
  expect_equal(exS21V1$ncharts, 1)
  expect_equal(exS21V1$ncol, 1)
  expect_equal(exS21V1$nrow, 1)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1)
  expect_equal(dataExS21V1$nega_offshore[indexHour], 2500)
})

test_that("exchangesStack, interactive, x and refStudy are antaresDataList", {
  skip_if_not(.runExchangesStackTest)
  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")
  #no interactive
  exS1 <-  exchangesStack(x = myData1, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  dataExS1 <- .get_data_from_htmlwidget(exS1)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS1$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS1$nega_offshore[indexHour], 9)
  # interactive no interactive
  exS1I <-  exchangesStack(x = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  resExS1 <- exS1I$init()
  expect_true(is(exS1I, "MWController"))
  expect_equal(exS1I$ncharts, 1)
  expect_equal(exS1I$ncol, 1)
  expect_equal(exS1I$nrow, 1)
  dataExS1I <- .get_data_from_htmlwidget(exS1I)
  expect_equal(dataExS1I$nega_offshore[indexHour], 9)

  # interactive with refStudy but myData1 =myData2
  exS21V0 <- exchangesStack(x = myData1, refStudy = myData2, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V0 <- exS21V0$init()
  expect_true(is(exS21V0, "MWController"))
  expect_equal(exS21V0$ncharts, 1)
  expect_equal(exS21V0$ncol, 1)
  expect_equal(exS21V0$nrow, 1)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData2 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2$links[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myData1, refStudy = myData2, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V1 <- exS21V1$init()
  expect_true(is(exS21V1, "MWController"))
  expect_equal(exS21V1$ncharts, 1)
  expect_equal(exS21V1$ncol, 1)
  expect_equal(exS21V1$nrow, 1)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1)
  expect_equal(dataExS21V1$nega_offshore[indexHour], 2500)
  #ROW not null in myData1
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1500)]
  }
  #test if there is row
  exS1V2 <-  exchangesStack(x = myData1,  .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS1V2 <- exS1V2$init()
  expect_true(is(exS1V2, "MWController"))
  expect_equal(exS1V2$ncharts, 1)
  expect_equal(exS1V2$ncol, 1)
  expect_equal(exS1V2$nrow, 1)
  dataExS1V2 <- .get_data_from_htmlwidget(exS1V2)
  expect_equal(dataExS1V2$ROW[indexHour], 1500)
  exS21V2 <-  exchangesStack(x = myData1, refStudy = myData2, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V2 <- exS21V2$init()
  expect_true(is(exS21V2, "MWController"))
  expect_equal(exS21V2$ncharts, 1)
  expect_equal(exS21V2$ncol, 1)
  expect_equal(exS21V2$nrow, 1)
  dataExS21V2 <- .get_data_from_htmlwidget(exS21V2)
  expect_equal(dataExS21V2$nega_offshore[indexHour], 2500)
  expect_equal(dataExS21V2$ROW[indexHour], 1500)
  #ROW not null in myData2
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1000)]
  }
  exS21V3 <-  exchangesStack(x = myData1, refStudy = myData2,  .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V3 <- exS21V3$init()
  expect_true(is(exS21V3, "MWController"))
  expect_equal(exS21V3$ncharts, 1)
  expect_equal(exS21V3$ncol, 1)
  expect_equal(exS21V3$nrow, 1)
  dataExS21V3 <- .get_data_from_htmlwidget(exS21V3)
  expect_equal(dataExS21V3$nega_offshore[indexHour], 2500)
  expect_equal(dataExS21V3$ROW[indexHour], 500)
})

test_that("exchangesStack, interactive, x is a list of antaresDataTable and refStudy an antaresDataTable", {
  skip_if_not(.runExchangesStackTest)
  myData1 <- readAntares(links = "all", showProgress = FALSE)
  myData2 <- readAntares(links = "all", showProgress = FALSE)
  myData3 <- readAntares(links = "all", showProgress = FALSE)
  myData4 <- readAntares(links = "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")
  # no interactive
  exS2 <-  exchangesStack(x = myDataList, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  # compare with myData3
  idWidget <- 2
  dataExS2 <- .get_data_from_htmlwidget(exS2, widgetsNumber = idWidget)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS2$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS2$nega_offshore[indexHour], 9)
  # interactive
  exSList1 <-  exchangesStack(x = myDataList, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exSList1 <- exSList1$init()
  expect_true(is(exSList1, "MWController"))
  expect_equal(exSList1$ncharts, 3)
  expect_equal(exSList1$ncol, 2)
  expect_equal(exSList1$nrow, 2)
  dataExS1I <- .get_data_from_htmlwidget(exSList1, widgetsNumber = idWidget)
  expect_equal(dataExS1I$nega_offshore[indexHour], 9)
  #identical myData, diff == 0 always
  exS21V0 <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V0 <- exS21V0$init()
  expect_true(is(exS21V0, "MWController"))
  expect_equal(exS21V0$ncharts, 3)
  expect_equal(exS21V0$ncol, 2)
  expect_equal(exS21V0$nrow, 2)
  dataExS21V0 <- .get_data_from_htmlwidget(exS21V0, widgetsNumber = idWidget)
  expect_equal(dataExS21V0$nega_offshore[indexHour], 0)
  # edit myData3 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData3[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V1 <- exS21V1$init()
  expect_true(is(exS21V1, "MWController"))
  expect_equal(exS21V1$ncharts, 3)
  expect_equal(exS21V1$ncol, 2)
  expect_equal(exS21V1$nrow, 2)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1, widgetsNumber = idWidget)
  expect_equal(dataExS21V1$a_offshore[indexHour], 2500)
})

test_that("exchangesStack, interactive, x is a list of antaresDataList and refStudy an antaresDataList", {
  skip_if_not(.runExchangesStackTest)
  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(myData2, myData3, myData4)
  myArea <- "a"
  DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
  # no interactive
  exS2 <-  exchangesStack(x = myDataList, interactive = FALSE, area = myArea, dateRange = DR, stepPlot = TRUE)
  # compare with myData3
  idWidget <- 2
  dataExS2 <- .get_data_from_htmlwidget(exS2, widgetsNumber = idWidget)
  timeEditValue <- "2018-04-25T00:00:00.000Z"
  indexHour <- grep(timeEditValue, dataExS2$hour)
  expect_gt(indexHour, 2)
  expect_equal(dataExS2$nega_offshore[indexHour], 9)
  # interactive
  exSList1 <-  exchangesStack(x = myDataList, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exSList1 <- exSList1$init()
  expect_true(is(exSList1, "MWController"))
  expect_equal(exSList1$ncharts, 3)
  expect_equal(exSList1$ncol, 2)
  expect_equal(exSList1$nrow, 2)
  dataExS1I <- .get_data_from_htmlwidget(exSList1, widgetsNumber = idWidget)
  expect_equal(dataExS1I$nega_offshore[indexHour], 9)

  #identical myData, diff == 0 always
  exSList1Ref <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exSList1Ref <- exSList1Ref$init()
  expect_true(is(exSList1Ref, "MWController"))
  expect_equal(exSList1Ref$ncharts, 3)
  expect_equal(exSList1Ref$ncol, 2)
  expect_equal(exSList1Ref$nrow, 2)
  dataExS21V0Ref <- .get_data_from_htmlwidget(exSList1Ref, widgetsNumber = idWidget)
  expect_equal(dataExS21V0Ref$nega_offshore[indexHour], 0)
  # edit myData3 to have a diff != 0
  #pb timeZone local (PC, Travis, etc)
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData3$links[ (time == timeEditMinus | time == timeEditPlus) & link == "a - a_offshore", `FLOW LIN.` := as.integer(`FLOW LIN.` + 2500)]
  }
  exS21V1 <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exS21V1 <- exS21V1$init()
  expect_true(is(exS21V1, "MWController"))
  expect_equal(exS21V1$ncharts, 3)
  expect_equal(exS21V1$ncol, 2)
  expect_equal(exS21V1$nrow, 2)
  dataExS21V1 <- .get_data_from_htmlwidget(exS21V1, widgetsNumber = idWidget)
  expect_equal(dataExS21V1$a_offshore[indexHour], 2500)
  #ROW not null in myData4
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData4$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1500)]
  }
  #test if there is row
  exList <-  exchangesStack(x = myDataList, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exList <- exList$init()
  expect_true(is(exList, "MWController"))
  expect_equal(exList$ncharts, 3)
  expect_equal(exList$ncol, 2)
  expect_equal(exList$nrow, 2)
  dataExList <- .get_data_from_htmlwidget(exList, widgetsNumber = idWidget)
  expect_equal(dataExList$a_offshore[indexHour], 2500 - 9)
  idRowNotNull <- 3
  dataExListRow <- .get_data_from_htmlwidget(exList, widgetsNumber = idRowNotNull)
  expect_equal(dataExListRow$ROW[indexHour], 1500)
  #with a refStudy
  exListListV2 <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exListListV2 <- exListListV2$init()
  expect_true(is(exListListV2, "MWController"))
  expect_equal(exListListV2$ncharts, 3)
  expect_equal(exListListV2$ncol, 2)
  expect_equal(exListListV2$nrow, 2)
  dataExListV2 <- .get_data_from_htmlwidget(exListListV2, widgetsNumber = idWidget)
  expect_equal(dataExListV2$a_offshore[indexHour], 2500)
  expect_equal(dataExListV2$ROW[indexHour], 0)
  dataExListV2Row <- .get_data_from_htmlwidget(exListListV2, widgetsNumber = idRowNotNull)
  expect_equal(dataExListV2Row$a_offshore[indexHour], 0)
  expect_equal(dataExListV2Row$ROW[indexHour], 1500)
  #ROW not null in refStudy myData1
  for (i in 0:5){
    timeEditShift <- lubridate::hours(i)
    timeEditMinus <- as.Date(timeEditValue) - timeEditShift
    timeEditPlus <- as.Date(timeEditValue) + timeEditShift
    myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, `ROW BAL.` := as.integer(`ROW BAL.` - 1000)]
  }
  exListListV3 <-  exchangesStack(x = myDataList, refStudy = myData1, .runApp = FALSE, interactive = TRUE, area = myArea, dateRange = DR, stepPlot = TRUE)
  exListListV3 <- exListListV3$init()
  expect_true(is(exListListV3, "MWController"))
  expect_equal(exListListV3$ncharts, 3)
  expect_equal(exListListV3$ncol, 2)
  expect_equal(exListListV3$nrow, 2)
  dataExListV3 <- .get_data_from_htmlwidget(exListListV3, widgetsNumber = idRowNotNull)
  expect_equal(dataExListV3$nega_offshore[indexHour], 0)
  expect_equal(dataExListV3$ROW[indexHour], 500)
  dataExListV3g2 <- .get_data_from_htmlwidget(exListListV3, widgetsNumber = idWidget)
  expect_equal(dataExListV3g2$a_offshore[indexHour], 2500)
  expect_equal(dataExListV3g2$negROW[indexHour], 1000)
})

# test_that("exchangesStack, no interactive, x and refStudy are optsH5 ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runExchangesStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     myArea <- "a"
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     ES1 <-  exchangesStack(x = optsH5, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ES1)
#     timeEditValue <- "2018-04-25T00:00:00.000Z"
#     indexHour <- grep(timeEditValue, dataHtmlWidgetES1$hour)
#     expect_gt(indexHour, 2)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[indexHour], 9)
#     # with refStudy
#     ESRef <-  exchangesStack(x = optsH5, refStudy = optsH5, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ESRef)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[indexHour], 0)
#     # 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))
#     myLink <- getLinks()[1]
#     .h5Antares_edit_variable(
#       pathH5 = pathNewH5File,
#       link = myLink,
#       timeId = 1:40,
#       antVar = "FLOW LIN.",
#       newValue = 15000
#     )
# 
#     optsH5New <- setSimulationPath(path = pathNewH5File)
#     ES1New <-  exchangesStack(x = optsH5New, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ES1New)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[indexHour], 9)
#     expect_equal(dataHtmlWidgetES1$a_offshore[2], 15000)
#     ES1NewRef <-  exchangesStack(x = optsH5New, refStudy = optsH5, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES1Ref <- .get_data_from_htmlwidget(ES1NewRef)
#     expect_equal(dataHtmlWidgetES1Ref$nega_offshore[indexHour], 0)
#     expect_gt(dataHtmlWidgetES1Ref$a_offshore[2], 15000)
#   }
# })

# test_that("exchangesStack, no interactive, x is a list of optH5 and refStudy are optsH5 ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runExchangesStackTest)
#     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)
#       )
#     }
#     idWidgetToEdit <- 2
#     pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[idWidgetToEdit]])
#     pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
#     newValueFlow <- 15000
#     myLink <- getLinks()[1]
#     .h5Antares_edit_variable(
#       pathH5 = pathH5FileToEdit,
#       link = myLink,
#       timeId = 1:40,
#       antVar = "FLOW LIN.",
#       newValue = newValueFlow
#     )
# 
#     optsList <- list()
#     antaresDataListH5 <- list()
#     for (i in 1:length(listFolderToCreate)){
#       pathOptsI <- file.path(pathInitial, listFolderToCreate[[i]])
#       optsList[[i]] <- setSimulationPath(path = pathOptsI)
#       antaresDataListH5[[i]] <- readAntares(links = myLink)
#     }
#     #test the data from h5
#     #get the data from the h5 file
#     antaresDataRef <- readAntares(opts = optsH5, links = myLink)
#     expect_equal(max(antaresDataListH5[[idWidgetToEdit]]$`FLOW LIN.`), newValueFlow)
#     expect_equal(max(antaresDataListH5[[1]]$`FLOW LIN.`), max(antaresDataRef$`FLOW LIN.`))
#     expect_equal(max(antaresDataListH5[[3]]$`FLOW LIN.`), max(antaresDataRef$`FLOW LIN.`))
#     # get the data from htmlwidget
#     myArea <- "a"
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     ESList <-  exchangesStack(x = optsList, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES2 <- .get_data_from_htmlwidget(ESList, widgetsNumber = idWidgetToEdit)
#     expect_equal(dataHtmlWidgetES2$a_offshore[3], newValueFlow)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ESList, widgetsNumber = 1)
#     expect_equal(dataHtmlWidgetES1$a_offshore[3], 0)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[3], 6)
#     # with refStudy
#     ESListRef <-  exchangesStack(x = optsList, refStudy = optsH5, interactive = FALSE, area = myArea, dateRange = DR)
#     dataHtmlWidgetES2Ref <- .get_data_from_htmlwidget(ESListRef, widgetsNumber = idWidgetToEdit)
#     expect_equal(dataHtmlWidgetES2Ref$a_offshore[3] - dataHtmlWidgetES1$nega_offshore[3], newValueFlow)
#     dataHtmlWidgetES1Ref <- .get_data_from_htmlwidget(ESListRef, widgetsNumber = 1)
#     expect_equal(dataHtmlWidgetES1Ref$a_offshore[3], 0)
#     expect_equal(dataHtmlWidgetES1Ref$nega_offshore[3], 0)
#   }
# })

# test_that("exchangesStack, interactive, x and refStudy are optsH5 ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runExchangesStackTest)
#     suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
#     optsH5 <- setSimulationPath(pathtemp)
#     myArea <- "a"
#     DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#     # no interactive
#     ES1 <-  exchangesStack(x = optsH5,
#                            interactive = FALSE,
#                            area = myArea,
#                            dateRange = DR,
#                            mcYearh5 = 1)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ES1)
#     timeEditValue <- "2018-04-24T23:00:00.000Z"
#     indexHour <- grep(timeEditValue, dataHtmlWidgetES1$hour)
#     expect_gt(indexHour, 2)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[indexHour], 10)
#     # with interactive
#     #FOR DEBUG
#     #ES1I <-  exchangesStack(x = optsH5,
#     #                       interactive = TRUE)
# 
#     ES1I <-  exchangesStack(x = optsH5,
#                             .runApp = FALSE,
#                             interactive = TRUE,
#                             dateRange = DR)
#     ES1I <- ES1I$init()
#     expect_true(is(ES1I, "MWController"))
#     expect_equal(ES1I$ncharts, 1)
#     expect_equal(ES1I$ncol, 1)
#     expect_equal(ES1I$nrow, 1)
#     dataHtmlWidgetES1I <- .get_data_from_htmlwidget(ES1I)
#     expect_equal(dataHtmlWidgetES1I$nega_offshore[indexHour], 10)
#     # with refStudy no interactive
#     ESRef <-  exchangesStack(x = optsH5,
#                              refStudy = optsH5,
#                              interactive = FALSE,
#                              area = myArea,
#                              dateRange = DR,
#                              mcYearh5 = 1)
#     dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ESRef)
#     expect_equal(dataHtmlWidgetES1$nega_offshore[indexHour], 0)
#     # refStudy with interactive
#     ESRefI <-  exchangesStack(x = optsH5,
#                               refStudy = optsH5,
#                               interactive = TRUE,
#                               .runApp = FALSE,
#                               area = myArea,
#                               dateRange = DR)
#     ESRefI <- ESRefI$init()
#     expect_true(is(ESRefI, "MWController"))
#     expect_equal(ESRefI$ncharts, 1)
#     expect_equal(ESRefI$ncol, 1)
#     expect_equal(ESRefI$nrow, 1)
#     dataHtmlWidgetESRefI <- .get_data_from_htmlwidget(ESRefI)
#     expect_equal(dataHtmlWidgetESRefI$nega_offshore[indexHour], 0)
#     # 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))
#     myLink <- getLinks()[1]
#     .h5Antares_edit_variable(
#       pathH5 = pathNewH5File,
#       link = myLink,
#       timeId = 1:40,
#       antVar = "FLOW LIN.",
#       newValue = 15000,
#       mcYear = 1
#     )
# 
#     optsH5New <- setSimulationPath(path = pathNewH5File)
#     #no interactive
#     ES1New <-  exchangesStack(x = optsH5New,
#                               interactive = FALSE,
#                               area = myArea,
#                               dateRange = DR,
#                               mcYearh5 = 1)
#     dataHtmlWidgetES1New <- .get_data_from_htmlwidget(ES1New)
#     expect_equal(dataHtmlWidgetES1New$nega_offshore[indexHour], 10)
#     expect_equal(dataHtmlWidgetES1New$a_offshore[2], 15000)
#     # with interactive
#     ES1NewI <-  exchangesStack(x = optsH5New,
#                                interactive = TRUE,
#                                .runApp = FALSE,
#                                area = myArea,
#                                dateRange = DR)
#     ES1NewI <- ES1NewI$init()
#     expect_true(is(ES1NewI, "MWController"))
#     expect_equal(ES1NewI$ncharts, 1)
#     expect_equal(ES1NewI$ncol, 1)
#     expect_equal(ES1NewI$nrow, 1)
#     dataHtmlWidgetES1New <- .get_data_from_htmlwidget(ES1NewI)
#     expect_equal(dataHtmlWidgetES1New$nega_offshore[indexHour], 10)
#     expect_equal(dataHtmlWidgetES1New$a_offshore[2], 15000)
#     # no interactive, refStudy,
#     ES1NewRef <-  exchangesStack(x = optsH5New,
#                                  refStudy = optsH5,
#                                  interactive = FALSE,
#                                  area = myArea,
#                                  dateRange = DR,
#                                  mcYearh5 = 1)
#     dataHtmlWidgetES1Ref <- .get_data_from_htmlwidget(ES1NewRef)
#     expect_equal(dataHtmlWidgetES1Ref$nega_offshore[indexHour], 0)
#     expect_gt(dataHtmlWidgetES1Ref$a_offshore[2], 15000)
#     # interactive, refStudy,
#     ES1NewRefI <-  exchangesStack(x = optsH5New,
#                                   refStudy = optsH5,
#                                   interactive = TRUE,
#                                   .runApp = FALSE,
#                                   area = myArea,
#                                   dateRange = DR,
#                                   mcYearh5 = 1)
#     ES1NewRefI <- ES1NewRefI$init()
#     expect_true(is(ES1NewRefI, "MWController"))
#     expect_equal(ES1NewRefI$ncharts, 1)
#     expect_equal(ES1NewRefI$ncol, 1)
#     expect_equal(ES1NewRefI$nrow, 1)
#     dataHtmlWidgetES1RefI <- .get_data_from_htmlwidget(ES1NewRefI)
#     expect_equal(dataHtmlWidgetES1RefI$nega_offshore[indexHour], 0)
#     expect_gt(dataHtmlWidgetES1RefI$a_offshore[2], 15000)
#   }
# })

# test_that("exchangesStack, interactive, x is a list of optsH5 and refStudy optsH5  , ", {
#   if (.requireRhdf5_Antares(stopP = FALSE)){
#     skip_if_not(.runExchangesStackTest)
#     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)
#       )
#     }
#     pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[2]])
#     pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
#     myLink <- getLinks()[1]
#     newValueFlow <- 50000
#     mcYearToTestList <- c(2, NULL)
#     for (mcYearToTest in mcYearToTestList){
#       .h5Antares_edit_variable(
#         pathH5 = pathH5FileToEdit,
#         link = myLink,
#         timeId = 1:40,
#         antVar = "FLOW LIN.",
#         newValue = newValueFlow,
#         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(links = myLink, mcYear = mcYearToTest)
#       }
# 
#       DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#       #try without refStudy and interactive == FALSE
#       myArea <- "a"
#       ESListNoInt <-  exchangesStack(x = optsList,
#                                      dateRange = DR,
#                                      area = myArea,
#                                      interactive = FALSE,
#                                      mcYearh5 = mcYearToTest)
#       dataHtmlWidgetESNoInt <- .get_data_from_htmlwidget(ESListNoInt, widgetsNumber = 2)
#       expect_equal(max(dataHtmlWidgetESNoInt$a_offshore, na.rm = TRUE), 50000)
# 
#       # try with refStudy
#       ESListNoInt <-  exchangesStack(x = optsList,
#                                      refStudy = optsH5,
#                                      interactive = FALSE,
#                                      areas = myArea,
#                                      dateRange = DR,
#                                      mcYearh5 = mcYearToTest)
#       ## get the data from htmlwidget
#       dataHtmlWidgetES1 <- .get_data_from_htmlwidget(ESListNoInt, widgetsNumber = 1)
#       dataHtmlWidgetES2 <- .get_data_from_htmlwidget(ESListNoInt, widgetsNumber = 2)
# 
#       ## get the data from the h5 file
#       antaresDataRef <- readAntares(opts = optsH5, links = myLink, mcYears = mcYearToTest)
#       expect_equal(max(antaresDataListH5[[2]]$`FLOW LIN.`), newValueFlow)
#       expect_equal(max(antaresDataListH5[[1]]$`FLOW LIN.`), max(antaresDataRef$`FLOW LIN.`))
#       expect_equal(max(antaresDataListH5[[3]]$`FLOW LIN.`), max(antaresDataRef$`FLOW LIN.`))
#       expect_equal(antaresDataListH5[[2]]$`OV. COST`, antaresDataRef$`OV. COST`)
# 
#       ## 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], `FLOW LIN.`], -dataHtmlWidgetES1$nega_offshore[[2]])
#       expect_gt(resCompareData2_ref[timeId == timeId[40], `FLOW LIN.`], newValueFlow)
# 
#       # interactive == TRUE
#       ## DEBUG
#       # PSWORef <-  prodStack(x = optsList,
#       #                       dateRange = DR,
#       #                       h5requestFiltering = list(areas = myArea,
#       #                                                 mcYears = mcYearToTest),
#       #                       .runApp = FALSE,
#       #                       interactive = TRUE)
#       # PSWORef <- PSWORef$init()
#       # ESWORef <-  exchangesStack(x = antaresDataListH5[[2]])
#       # ESWORef <-  exchangesStack(x = optsList)
#       # ESWORef <-  exchangesStack(x = antaresDataListH5[[2]],
#       #                            dateRange = DR)
#       # ESWORef <-  exchangesStack(x = optsList,
#       #                            dateRange = DR)
# 
#       ESWORef <-  exchangesStack(
#         x = optsList,
#         dateRange = DR,
#         .runApp = FALSE,
#         interactive = TRUE,
#         h5requestFiltering = list(
#           areas = getAreas(select = "a"),
#           links = getLinks(areas = myArea),
#           mcYears = mcYearToTest))
#       ESWORef <- ESWORef$init()
#       expect_true(is(ESWORef, "MWController"))
#       expect_equal(ESWORef$ncharts, 3)
#       expect_equal(ESWORef$ncol, 2)
#       expect_equal(ESWORef$nrow, 2)
#       ## get the data from htmlwidget
#       dataHtmlWidgetESWORef <- .get_data_from_htmlwidget(ESWORef, widgetsNumber = 2)
#       expect_equal(dataHtmlWidgetESWORef$a_offshore[[2]], 50000)
#       expect_equal(dataHtmlWidgetESWORef$nega_offshore[[2]], 0)
#       dataHtmlWidgetESWORef1 <- .get_data_from_htmlwidget(ESWORef, widgetsNumber = 1)
#       expect_equal(dataHtmlWidgetESWORef1$a_offshore[[2]], 0)
#       expect_gt(dataHtmlWidgetESWORef1$nega_offshore[[2]], 0)
# 
#       # fourth, MWController with refStudy and interactive == TRUE
#       ESWORefListI <-  exchangesStack(
#         x = optsList,
#         refStudy  = optsH5,
#         dateRange = DR,
#         .runApp = FALSE,
#         interactive = TRUE,
#         h5requestFiltering = list(
#           areas = getAreas(select = "a"),
#           links = getLinks(areas = myArea),
#           mcYears = mcYearToTest))
#       ESWORefListI <- ESWORefListI$init()
#       expect_true(is(ESWORefListI, "MWController"))
#       expect_equal(ESWORefListI$ncharts, 3)
#       expect_equal(ESWORefListI$ncol, 2)
#       expect_equal(ESWORefListI$nrow, 2)
#       #check data from htmlwidgets
#       dataHtmlWidgetES31 <- .get_data_from_htmlwidget(ESWORefListI, widgetsNumber = 2)
#       expect_gt(dataHtmlWidgetES31$a_offshore[[2]], 50000)
#       expect_equal(dataHtmlWidgetES31$nega_offshore[[2]], 0)
#       dataHtmlWidgetES21 <- .get_data_from_htmlwidget(ESWORefListI, widgetsNumber = 1)
#       expect_equal(dataHtmlWidgetES21$a_offshore[[2]], 0)
#       expect_equal(dataHtmlWidgetES21$nega_offshore[[2]], 0)
# 
#       resOptsH5Old <- readAntares(opts = optsH5, links = myLink, showProgress = FALSE, mcYears = mcYearToTest)
#       resOptsH5New <- readAntares(opts = optsList[[2]], links = myLink, showProgress = FALSE, mcYears = mcYearToTest)
#       #timeId for time = "2018-04-24 00:00:00 UTC" ? timeId = 2713
#       timeIdVal <- 2713
#       expect_equal(resOptsH5New[timeId == timeIdVal, `FLOW LIN.`], newValueFlow)
#       expect_lt(resOptsH5Old[timeId == timeIdVal, `FLOW LIN.`], 0)
# 
#       resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
#       expect_gt(resCompareData[timeId == timeIdVal, `FLOW LIN.`], newValueFlow)
#       expect_equal(resCompareData[timeId == timeIdVal, `FLOW LIN.`], dataHtmlWidgetES31$a_offshore[[1]])
#       #no change after timeID > 40
#       expect_equal(resCompareData[timeId == (timeIdVal + 90), `FLOW LIN.`], dataHtmlWidgetES31$a_offshore[[50]])
#       expect_equal(dataHtmlWidgetES21$a_offshore[[1]], 0)
#       expect_equal(dataHtmlWidgetES21$nega_offshore[[1]], 0)
#     }
#   }
# 
# })

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.