const_hl_test.cpp
Go to the documentation of this file.
1 //=============================================================================
2 // Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
3 // Author: Gonzalo Mier
4 // BSD-3 License
5 //=============================================================================
6 
7 #include <gtest/gtest.h>
8 #include <fstream>
11 #include "fields2cover/types.h"
12 
13 TEST(fields2cover_hl_const_gen, empty_area) {
15  f2c::hg::ConstHL hl_gen;
16 
17  auto field = rand.generateRandField(1e3, 5);
18  EXPECT_NEAR(field.area(), 1e3, 1e-2);
19  auto no_hl = hl_gen.generateHeadlands(field.getField(), 1e2);
20  EXPECT_NEAR(no_hl.area(), 0, 1e-7);
21 }
22 
23 TEST(fields2cover_hl_const_gen, border_area) {
25  f2c::hg::ConstHL hl_gen;
26 
27  auto field = rand.generateRandField(1e5, 5);
28  auto no_hl = hl_gen.generateHeadlands(field.getField(), 1.0);
29  auto extra_hl = hl_gen.generateHeadlands(field.getField(), -1.0);
30 
31  EXPECT_GT(field.area(), 0);
32  EXPECT_NEAR(field.area(), 1e5, 1);
33  EXPECT_NEAR(no_hl.area(), 1e5 * 0.9, 1e4);
34  EXPECT_GT(no_hl.area() / field.area(), 0.9);
35  EXPECT_LT(no_hl.area() / field.area(), 0.999);
36  EXPECT_NEAR(extra_hl.area(), 1e5 * 1.1, 1e4);
37  EXPECT_LT(extra_hl.area() / field.area(), 1.1);
38  EXPECT_GT(extra_hl.area() / field.area(), 1.001);
39 }
40 
41 TEST(fields2cover_hl_const_gen, border_swaths) {
42  f2c::Random rand (4242);
43  f2c::hg::ConstHL hl_gen;
44 
45  F2CField field = rand.generateRandField(1e4, 5);
46  std::vector<F2CCells> hl_swaths = hl_gen.generateHeadlandSwaths(field.getField(), 3.0, 10);
47  F2CCells no_hl = hl_gen.generateHeadlandArea(field.getField(), 3.0, 10);
48 
49  EXPECT_NEAR(field.area(), 1e4, 1e-3);
50  EXPECT_EQ(hl_swaths.size(), 10);
51  for (size_t i = 0; i < hl_swaths.size()-1; ++i) {
52  if (i > 0) {
53  EXPECT_LT(hl_swaths[i + 1].area(), hl_swaths[i].area());
54  } else {
55  EXPECT_LT(hl_swaths[i].area(), field.area());
56  }
57  EXPECT_EQ(hl_swaths[i].size(), 1);
58  }
59  EXPECT_GT(hl_swaths.back().area(), no_hl.area());
60 }
61 
62 
f2c::hg::ConstHL
Class to generate headlands with equal width in each border.
Definition: constant_headland.h:18
TEST
TEST(fields2cover_hl_const_gen, empty_area)
Definition: const_hl_test.cpp:13
f2c::hg::ConstHL::generateHeadlandSwaths
std::vector< F2CCells > generateHeadlandSwaths(const F2CCells &field, double swath_width, int n_swaths, bool dir_out2in=true) override
Definition: constant_headland.cpp:22
types.h
f2c::types::Field
Definition: Field.h:18
3_headland_generator.rand
rand
Definition: 3_headland_generator.py:11
constant_headland.h
random.h
f2c::hg::ConstHL::generateHeadlands
F2CCells generateHeadlands(const F2CCells &field, double dist_headland) override
Definition: constant_headland.cpp:12
f2c::hg::ConstHL::generateHeadlandArea
F2CCells generateHeadlandArea(const F2CCells &field, double swath_width, int n_swaths) override
Definition: constant_headland.cpp:17
f2c::types::Cells
Definition: Cells.h:21
f2c::Random
Definition: random.h:23
3_headland_generator.no_hl
no_hl
Definition: 3_headland_generator.py:18
2_objective_functions.field
field
Definition: 2_objective_functions.py:16


fields2cover
Author(s):
autogenerated on Fri Apr 25 2025 02:18:31