tests/testthat/test_shear_stress.R

library(fluvgeo)
context("shear_stress")

# Calculate cross section dimensions
xs_dims <- cross_section_dimensions_L2(xs = fluvgeo::sin_riffle_channel_sf,
                                    xs_points = fluvgeo::sin_riffle_channel_points_sf,
                                    bankfull_elevation = 103,
                                    lead_n = 1,
                                    use_smoothing = TRUE,
                                    loess_span = 0.5,
                                    vert_units = "ft")
# Calculate shear stress
xs_dims_ss <- shear_stress(xs_dims)

test_that("check fields exist by name", {
  expect_true("Seq"                   %in% colnames(xs_dims_ss))
  expect_true("Z_smooth"              %in% colnames(xs_dims_ss))
  expect_true("upstream_x"            %in% colnames(xs_dims_ss))
  expect_true("upstream_y"            %in% colnames(xs_dims_ss))
  expect_true("downstream_x"          %in% colnames(xs_dims_ss))
  expect_true("downstream_y"          %in% colnames(xs_dims_ss))
  expect_true("upstream_z"            %in% colnames(xs_dims_ss))
  expect_true("downstream_z"          %in% colnames(xs_dims_ss))
  expect_true("upstream_m"            %in% colnames(xs_dims_ss))
  expect_true("downstream_m"          %in% colnames(xs_dims_ss))
  expect_true("rise"                  %in% colnames(xs_dims_ss))
  expect_true("run"                   %in% colnames(xs_dims_ss))
  expect_true("stream_length"         %in% colnames(xs_dims_ss))
  expect_true("valley_length"         %in% colnames(xs_dims_ss))
  expect_true("sinuosity"             %in% colnames(xs_dims_ss))
  expect_true("slope"                 %in% colnames(xs_dims_ss))
  expect_true("bankfull_elevation"    %in% colnames(xs_dims_ss))
  expect_true("drainage_area"         %in% colnames(xs_dims_ss))
  expect_true("xs_area"               %in% colnames(xs_dims_ss))
  expect_true("xs_width"              %in% colnames(xs_dims_ss))
  expect_true("xs_depth"              %in% colnames(xs_dims_ss))
  expect_true("discharge"             %in% colnames(xs_dims_ss))
  expect_true("fp_area"               %in% colnames(xs_dims_ss))
  expect_true("fp_width"              %in% colnames(xs_dims_ss))
  expect_true("fp_depth"              %in% colnames(xs_dims_ss))
  expect_true("xs_width_depth_ratio"  %in% colnames(xs_dims_ss))
  expect_true("xs_entrenchment_ratio" %in% colnames(xs_dims_ss))
  expect_true("watersurface_elev"     %in% colnames(xs_dims_ss))
  expect_true("bankfull_elev"         %in% colnames(xs_dims_ss))
  expect_true("floodprone_elev"       %in% colnames(xs_dims_ss))
  expect_true("shear_stress_density"           %in% colnames(xs_dims_ss))
  expect_true("shear_stress_density_gte_zero"  %in% colnames(xs_dims_ss))
  expect_true("shear_stress_weight"            %in% colnames(xs_dims_ss))
  expect_true("shear_stress_weight_gte_zero"   %in% colnames(xs_dims_ss))
  expect_true("shear_stress_lane"              %in% colnames(xs_dims_ss))
  expect_true("shear_stress_lane_gte_zero"     %in% colnames(xs_dims_ss))
})

test_that("check field data type", {
  expect_true(is.numeric(xs_dims_ss$Seq))
  expect_true(is.numeric(xs_dims_ss$Z_smooth))
  expect_true(is.numeric(xs_dims_ss$upstream_x))
  expect_true(is.numeric(xs_dims_ss$upstream_y))
  expect_true(is.numeric(xs_dims_ss$downstream_x))
  expect_true(is.numeric(xs_dims_ss$downstream_y))
  expect_true(is.numeric(xs_dims_ss$upstream_z))
  expect_true(is.numeric(xs_dims_ss$downstream_z))
  expect_true(is.numeric(xs_dims_ss$upstream_m))
  expect_true(is.numeric(xs_dims_ss$downstream_m))
  expect_true(is.numeric(xs_dims_ss$rise))
  expect_true(is.numeric(xs_dims_ss$run))
  expect_true(is.numeric(xs_dims_ss$stream_length))
  expect_true(is.numeric(xs_dims_ss$valley_length))
  expect_true(is.numeric(xs_dims_ss$sinuosity))
  expect_true(is.numeric(xs_dims_ss$slope))
  expect_true(is.numeric(xs_dims_ss$bankfull_elevation))
  expect_true(is.numeric(xs_dims_ss$drainage_area))
  expect_true(is.numeric(xs_dims_ss$xs_area))
  expect_true(is.numeric(xs_dims_ss$xs_width))
  expect_true(is.numeric(xs_dims_ss$xs_depth))
  expect_true(is.numeric(xs_dims_ss$discharge))
  expect_true(is.numeric(xs_dims_ss$fp_area))
  expect_true(is.numeric(xs_dims_ss$fp_width))
  expect_true(is.numeric(xs_dims_ss$fp_depth))
  expect_true(is.numeric(xs_dims_ss$xs_width_depth_ratio))
  expect_true(is.numeric(xs_dims_ss$xs_entrenchment_ratio))
  expect_true(is.numeric(xs_dims_ss$watersurface_elev))
  expect_true(is.numeric(xs_dims_ss$bankfull_elev))
  expect_true(is.numeric(xs_dims_ss$floodprone_elev))
  expect_true(is.numeric(xs_dims_ss$shear_stress_density))
  expect_true(is.numeric(xs_dims_ss$shear_stress_density_gte_zero))
  expect_true(is.numeric(xs_dims_ss$shear_stress_weight))
  expect_true(is.numeric(xs_dims_ss$shear_stress_weight_gte_zero))
  expect_true(is.numeric(xs_dims_ss$shear_stress_lane))
  expect_true(is.numeric(xs_dims_ss$shear_stress_lane_gte_zero))
})

test_that("check data structure", {
  expect_true(check_cross_section_dimensions(xs_dims_ss, "shear_stress"))
})

test_that("check values", {
  expect_true(all(na.omit(xs_dims_ss$shear_stress_density_gte_zero) >= 0))
  expect_true(all(na.omit(xs_dims_ss$shear_stress_weight_gte_zero) >= 0))
  expect_true(all(na.omit(xs_dims_ss$shear_stress_lane_gte_zero) >= 0))
})
FluvialGeomorph/fluvgeo documentation built on Feb. 19, 2025, 4:24 p.m.