File: ttimefrequencydata.cpp

package info (click to toggle)
aoflagger 3.4.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,960 kB
  • sloc: cpp: 83,076; python: 10,187; sh: 260; makefile: 178
file content (126 lines) | stat: -rw-r--r-- 5,670 bytes parent folder | download | duplicates (2)
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
#include "../../structures/timefrequencydata.h"
#include "../../structures/image2d.h"

#include <boost/test/unit_test.hpp>

using aocommon::Polarization;
using aocommon::PolarizationEnum;

BOOST_AUTO_TEST_SUITE(time_frequency_data,
                      *boost::unit_test::label("structures"))

BOOST_AUTO_TEST_CASE(construction) {
  TimeFrequencyData a;
  BOOST_CHECK_EQUAL(a.PolarizationCount(), size_t(0));

  Image2DPtr image = Image2D::CreateSetImagePtr(10, 10, 1.0);
  TimeFrequencyData b = TimeFrequencyData::FromLinear(
      image, image, image, image, image, image, image, image);
  BOOST_CHECK_EQUAL(b.PolarizationCount(), size_t(4));
  BOOST_CHECK_EQUAL(b.ComplexRepresentation(), TimeFrequencyData::ComplexParts);

  TimeFrequencyData c = TimeFrequencyData(Polarization::XX, image, image,
                                          Polarization::YY, image, image);
  BOOST_CHECK_EQUAL(c.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(c.ComplexRepresentation(), TimeFrequencyData::ComplexParts);

  TimeFrequencyData d =
      TimeFrequencyData(TimeFrequencyData::AmplitudePart, Polarization::XX,
                        image, Polarization::YY, image);
  BOOST_CHECK_EQUAL(d.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(d.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);

  TimeFrequencyData e = TimeFrequencyData(Polarization::RR, image, image,
                                          Polarization::LL, image, image);
  BOOST_CHECK_EQUAL(c.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(c.ComplexRepresentation(), TimeFrequencyData::ComplexParts);

  TimeFrequencyData f =
      TimeFrequencyData(TimeFrequencyData::AmplitudePart, Polarization::RR,
                        image, Polarization::LL, image);
  BOOST_CHECK_EQUAL(d.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(d.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);
}

// TODO
// BOOST_AUTO_TEST_CASE(assignment)
//{
//}

BOOST_AUTO_TEST_CASE(conversion) {
  Image2DPtr image = Image2D::CreateSetImagePtr(10, 10, 1.0);
  TimeFrequencyData data = TimeFrequencyData(Polarization::XX, image, image,
                                             Polarization::YY, image, image);
  TimeFrequencyData stokesI = data.Make(Polarization::StokesI);
  BOOST_CHECK_EQUAL(stokesI.PolarizationCount(), size_t(1));
  BOOST_CHECK_EQUAL(stokesI.ComplexRepresentation(),
                    TimeFrequencyData::ComplexParts);
  // Test whether this does not crash
  Image2DCPtr derivedImage = stokesI.GetSingleImage();

  data = TimeFrequencyData(TimeFrequencyData::AmplitudePart, Polarization::XX,
                           image, Polarization::YY, image);
  stokesI = data.Make(Polarization::StokesI);
  BOOST_CHECK_EQUAL(stokesI.PolarizationCount(), size_t(1));
  BOOST_CHECK_EQUAL(stokesI.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);
  // Test whether this does not crash
  derivedImage = stokesI.GetSingleImage();

  data = TimeFrequencyData(Polarization::RR, image, image, Polarization::LL,
                           image, image);
  stokesI = data.Make(Polarization::StokesI);
  BOOST_CHECK_EQUAL(stokesI.PolarizationCount(), size_t(1));
  BOOST_CHECK_EQUAL(stokesI.ComplexRepresentation(),
                    TimeFrequencyData::ComplexParts);
  // Test whether this does not crash
  derivedImage = stokesI.GetSingleImage();

  data = TimeFrequencyData(TimeFrequencyData::AmplitudePart, Polarization::RR,
                           image, Polarization::LL, image);
  stokesI = data.Make(Polarization::StokesI);
  BOOST_CHECK_EQUAL(stokesI.PolarizationCount(), size_t(1));
  BOOST_CHECK_EQUAL(stokesI.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);
  // Test whether this does not crash
  derivedImage = stokesI.GetSingleImage();

  TimeFrequencyData xx(TimeFrequencyData::AmplitudePart, Polarization::XX,
                       image);
  TimeFrequencyData yy(TimeFrequencyData::AmplitudePart, Polarization::YY,
                       image);
  data = TimeFrequencyData::MakeFromPolarizationCombination(xx, yy);
  BOOST_CHECK_EQUAL(data.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(data.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);

  xx = TimeFrequencyData(Polarization::XX, image, image);
  yy = TimeFrequencyData(Polarization::YY, image, image);
  data = TimeFrequencyData::MakeFromPolarizationCombination(xx, yy);
  BOOST_CHECK_EQUAL(data.PolarizationCount(), size_t(2));
  BOOST_CHECK_EQUAL(data.ComplexRepresentation(),
                    TimeFrequencyData::ComplexParts);

  TimeFrequencyData rr(TimeFrequencyData::AmplitudePart, Polarization::XX,
                       image);
  TimeFrequencyData rl(TimeFrequencyData::AmplitudePart, Polarization::YY,
                       image);
  TimeFrequencyData lr(TimeFrequencyData::AmplitudePart, Polarization::XX,
                       image);
  TimeFrequencyData ll(TimeFrequencyData::AmplitudePart, Polarization::YY,
                       image);
  data = TimeFrequencyData::MakeFromPolarizationCombination(
      TimeFrequencyData::MakeFromPolarizationCombination(rr, ll),
      TimeFrequencyData::MakeFromPolarizationCombination(rl, lr));
  BOOST_CHECK_EQUAL(data.PolarizationCount(), size_t(4));
  BOOST_CHECK_EQUAL(data.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);
  stokesI = data.Make(Polarization::StokesI);
  BOOST_CHECK_EQUAL(stokesI.PolarizationCount(), size_t(1));
  BOOST_CHECK_EQUAL(stokesI.ComplexRepresentation(),
                    TimeFrequencyData::AmplitudePart);
}

BOOST_AUTO_TEST_SUITE_END()