aboutsummaryrefslogtreecommitdiff
path: root/tests/testthat/test_step_1.R
blob: 2a65f36691c50af35d9e18464570a192005ebfb6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
context("FOCUS Step 1 and 2 calculations")

test_txt <- readLines(
  system.file("testdata/Steps_12_pesticide.txt", package = "pfm")
)

# Define test compounds as in pesticide.txt
dummy_1 <- chent_focus_sw("Dummy 1", cwsat = 6000, DT50_ws = 6, DT50_soil = 6, Koc = 344.8,
                          DT50_water = 6, DT50_sediment = 6)
dummy_2 <- chent_focus_sw("Dummy 2", cwsat = 30, DT50_ws = 26, Koc = 110)
dummy_4 <- chent_focus_sw("Dummy 4", cwsat = 2e-3, DT50_ws = 4, Koc = 970)
dummy_5 <- chent_focus_sw("Dummy 5", cwsat = 1.15, DT50_ws = 118, Koc = 860)
dummy_7 <- chent_focus_sw("Dummy 7", cwsat = 2.60, DT50_ws = 28, Koc = 500)
new_dummy <- chent_focus_sw("New Dummy", mw = 250, Koc = 100)
M1 <- chent_focus_sw("M1", mw = 100, cwsat = 100, DT50_ws = 100,
                     Koc = 50, max_ws = 0, max_soil = 0.5)
M2 <- chent_focus_sw("M2", mw = 100, cwsat = 100, DT50_ws = 100,
                     Koc = 50, max_ws = 0.5, max_soil = 0)

# When we compare the generated input file with the test file,
# we can ignore some fields
field_index <- c(ai = 1, compound = 2, comment = 3,
  mw_ai = 4, mw_met = 5,
  cwsat = 6, Koc_assessed = 7,
  Koc_parent = 8,
  DT50_ws = 9,
  max_ws = 10, max_soil = 11,
  rate = 12, n = 13, i = 14, app_type = 15,
  DT50_soil_parent = 16, DT50_soil = 17, DT50_water = 18, DT50_sediment = 19,
  reg_sea = 20, int_class = 21)
field_index_parent <- field_index[-c(4:5, 8, 10:11, 16)]

t_out_1 <- c(0, 1, 2, 4) # Checking the first four days is sufficient for Step 1
PEC_template_1 <- matrix(NA, nrow = length(t_out_1), ncol = 4,
    dimnames = list(Time = t_out_1, type = c("PECsw", "TWAECsw", "PECsed", "TWAECsed")))

t_out_2 <- c(0, 1, 2, 4, 7, 14, 21, 28, 42, 50, 100) # We read in text from rtf reports for Step 2

test_that("Results of Steps 1/2 calculator for Dummy 1 are reproduced", {
  res_step_1_1 <- PEC_sw_focus(dummy_1, 3000,
    comment = "Potatoes, Southern Europe, spring, 1 app/season, soil incorporation",
    scenario = "no drift (incorp or seed trtmt)",
    region = "s", season = "mm",
    append = FALSE, overwrite = TRUE)

  pest_txt <- readLines("pesticide.txt")
  expect_equal(test_txt[1], pest_txt[1]) # Header
  test_1 <- strsplit(test_txt[2], "\t")[[1]][field_index_parent]
  pest_1 <- strsplit(pest_txt[2], "\t")[[1]][field_index_parent]
  expect_equal(test_1, pest_1) # Parent fields

  PEC_step_1_1 <- PEC_template_1
  PEC_step_1_1[, "PECsw"]  = c(685.06, 610.32, 543.73, 431.56)
  PEC_step_1_1[, "TWAECsw"]  = c(NA, 647.69, 612.03, 548.76)
  PEC_step_1_1[, "PECsed"]  = c(2.36, 2.1, 1.87, 1.49) * 1e3
  PEC_step_1_1[, "TWAECsed"]  = c(NA, 2.23e3, 2.11e3, 1.89e3)

  expect_equal(res_step_1_1$PEC[1:4, c(1, 2)], PEC_step_1_1[, c(1, 2)], tolerance = 0.01, scale = 1)
  expect_equal(res_step_1_1$PEC[1:4, c(3, 4)], PEC_step_1_1[, c(3, 4)], tolerance = 10, scale = 1)

  # This is pasted from the file "Dummy 1 step 2.rtf" generated with Steps12 version 3.2 from 15/05/2017
  PEC_step_2_1_raw <- read.table(text = "0 172.6235  NA 595.2057  NA
1 153.7900  163.2067  530.2680  562.7368
2 137.0113  154.3037  472.4151  532.0392
4 108.7460  138.3873  374.9561  477.1595
7  76.8950  118.5090  265.1340  408.6191
14   34.2528   85.6494  118.1038  295.3191
21   15.2579   64.9380   52.6092  223.9062
28    6.7966   51.3222   23.4348  176.9589
42    1.3486   35.3389    4.6500  121.8484
50    0.5352   29.8256    1.8454  102.8388
100   0.0017   14.9591    0.0057   51.5788")
  PEC_step_2_1 = PEC_step_2_1_raw[, 2:5]
  dimnames(PEC_step_2_1) = list(Time = t_out_2,
    type = c("PECsw", "TWAECsw", "PECsed", "TWAECsed"))

  # Step 2 is not implemented.
})

test_that("Results of Steps 1/2 calculator for Dummy 2 are reproduced", {
  res_dummy_2 <- PEC_sw_focus(dummy_2, 1000)

  PEC_step_1_2 = PEC_template_1

  PEC_step_1_2[, "PECsw"]  = c(299.89, 290.86, 283.21, 268.50)
  PEC_step_1_2[, "TWAECsw"]  = c(NA, 295.38, 291.20, 283.49)
  PEC_step_1_2[, "PECsed"]  = c(319.77, 319.95, 311.53, 295.35)
  PEC_step_1_2[, "TWAECsed"]  = c(NA, 319.86, 317.79, 310.58)

  expect_equal(res_dummy_2$PEC[1:4, ], PEC_step_1_2[, ], tolerance = 0.01, scale = 1)
})

test_that("Results of Steps 1/2 calculator for Dummy 4 are reproduced", {
  res_dummy_4 <- PEC_sw_focus(dummy_4, 7.5, n = 3, i = 14,
                              scenario = "pome / stone fruit, early")

  PEC_step_1_4 = PEC_template_1

  PEC_step_1_4[, "PECsw"]  = c(1.82, 1.18, 1.00, 0.70)
  PEC_step_1_4[, "TWAECsw"]  = c(NA, 1.50, 1.29, 1.07)
  PEC_step_1_4[, "PECsed"]  = c(10.57, 11.49, 9.66, 6.83)
  PEC_step_1_4[, "TWAECsed"]  = c(NA, 11.03, 10.79, 9.48)

  expect_equal(res_dummy_4$PEC[1:4, ], PEC_step_1_4[, ], tolerance = 0.01, scale = 1)
})

test_that("Results of Steps 1/2 calculator for Dummy 5 are reproduced", {
  res_dummy_5 <- PEC_sw_focus(dummy_5, 75, n = 5, i = 14,
                              scenario = "vines, early")

  PEC_step_1_5 = PEC_template_1

  PEC_step_1_5[, "PECsw"]  = c(61.60, 59.45, 59.10, 58.41)
  PEC_step_1_5[, "TWAECsw"]  = c(NA, 60.53, 59.90, 59.33)
  PEC_step_1_5[, "PECsed"]  = c(500.78, 511.28, 508.29, 502.35)
  PEC_step_1_5[, "TWAECsed"]  = c(NA, 506.03, 507.90, 506.61)

  expect_equal(res_dummy_5$PEC[1:4, ], PEC_step_1_5[, ], tolerance = 0.01, scale = 1)
})

test_that("Results of Steps 1/2 calculator for Dummy 7 are reproduced", {
  res_dummy_7 <- PEC_sw_focus(dummy_7, 750, n = 4, i = 14,
                              scenario = "vines, early")

  PEC_step_1_7 = PEC_template_1

  PEC_step_1_7[, "PECsw"]  = c(626.99, 601.13, 586.43, 558.10)
  PEC_step_1_7[, "TWAECsw"]  = c(NA, 614.06, 603.90, 588.03)
  PEC_step_1_7[, "PECsed"]  = c(3.0, 3.01, 2.93, 2.79) * 1e3
  PEC_step_1_7[, "TWAECsed"]  = c(NA, 3.01e3, 2.99e3, 2.92e3)

  expect_equal(res_dummy_7$PEC[1:4, c(1, 2)], PEC_step_1_7[, c(1, 2)], tolerance = 0.01, scale = 1)
  expect_equal(res_dummy_7$PEC[1:4, c(3, 4)], PEC_step_1_7[, c(3, 4)], tolerance = 10, scale = 1)
})

test_that("Results of Steps 1/2 calculator for New Dummy (M1-M3) are reproduced", {
  res_M1 <- PEC_sw_focus(new_dummy, 1000, scenario = "cereals, winter",
                         met = M1)

  PEC_step_1_M1 = PEC_template_1

  PEC_step_1_M1[, "PECsw"]  = c(62.5, 62.07, 61.64, 60.79)
  PEC_step_1_M1[, "TWAECsw"]  = c(NA, 62.28, 62.07, 61.64)
  PEC_step_1_M1[, "PECsed"]  = c(31.25, 31.03, 30.82, 30.40)
  PEC_step_1_M1[, "TWAECsed"]  = c(NA, 31.14, 31.03, 30.82)

  expect_equal(res_M1$PEC[1:4, ], PEC_step_1_M1[, ], tolerance = 0.01, scale = 1)

  res_M2 <- PEC_sw_focus(new_dummy, 1000, scenario = "cereals, winter",
                         met = M2)

  PEC_step_1_M2 = PEC_template_1

  PEC_step_1_M2[, "PECsw"]  = c(64.34, 63.78, 63.34, 62.47)
  PEC_step_1_M2[, "TWAECsw"]  = c(NA, 64.06, 63.81, 63.36)
  PEC_step_1_M2[, "PECsed"]  = c(31.25, 31.89, 31.67, 31.23)
  PEC_step_1_M2[, "TWAECsed"]  = c(NA, 31.57, 31.68, 31.56)

  expect_equal(res_M2$PEC[1:4, ], PEC_step_1_M2[, ], tolerance = 0.01, scale = 1)
})
unlink("pesticide.txt")

Contact - Imprint