# Testing Documentation

In this section we describe the test suites included with the antenna
module that verify its correct functionality.

## Angles

The unit test suite `angles` verifies that the Angles class is
constructed properly by correct conversion from 3D cartesian
coordinates according to the available methods (construction from a
single vector and from a pair of vectors). For each method, several
test cases are provided that compare the values
determied by the constructor to known reference values. The test
passes if for each case the values are equal to the reference up to a
tolerance of which accounts for numerical errors.

## DegreesToRadians

The unit test suite `degrees-radians` verifies that the methods
`DegreesToRadians` and `RadiansToDegrees` work properly by
comparing with known reference values in a number of test
cases. Each test case passes if the comparison is equal up to a
tolerance of which accounts for numerical errors.

## IsotropicAntennaModel

The unit test suite `isotropic-antenna-model` checks that the
`IsotropicAntennaModel` class works properly, i.e., returns always a
0dB gain regardless of the direction.

## CosineAntennaModel

The unit test suite `cosine-antenna-model` checks that the
`CosineAntennaModel` class works properly. Several test cases are
provided that check for the antenna gain value calculated at different
directions and for different values of the orientation, the reference
gain and the beamwidth. The reference gain is calculated by hand. Each
test case passes if the reference gain in dB is equal to the value returned
by `CosineAntennaModel` within a tolerance of 0.001, which accounts
for the approximation done for the calculation of the reference
values.

## ParabolicAntennaModel

The unit test suite `parabolic-antenna-model` checks that the
`ParabolicAntennaModel` class works properly. Several test cases are
provided that check for the antenna gain value calculated at different
directions and for different values of the orientation, the maximum attenuation
and the beamwidth. The reference gain is calculated by hand. Each
test case passes if the reference gain in dB is equal to the value returned
by `ParabolicAntennaModel` within a tolerance of 0.001, which accounts
for the approximation done for the calculation of the reference
values.