## Swift MAVLink library test project ##

`MAVLinkTests` target covers `DataExtensions` with unit tests (conversion between raw data and typed values). Also it contains some integration tests for `MAVLink` class.

To quickly generate MAVLink classes and enums for Swift you can use following script:

```bash
./ardugen.sh
```
It will generate Swift files for `ardupilotmega.xml` definitions into `MAVLink/MAVLink/Swift` folder and C headers for the same xml file into `MAVLinkTest/MAVLink/C` folder. C headers are used to check Swift library compatibility with C/C++ implementations.

Please keep in mind that you will probably need to re-add generated MAVLink swift files to the project as complete list of files depends on specific declarations in xml file. C headers will be compiled as Clang module, so there is no need to add them into Xcode project.

Test suite consists of:
- `DataExtensionsTests.swift` contains unit tests that cover raw-to-typed values transformations and vise versa (with informative erroring)
- `MAVLinkTests.swift` covers some edge cases of parsing state machine 
- `CompareWithCImpTests.swift` tests which compare output of Swift library with C on the same raw data input (attached tlog file)

Test tlog file was downloaded from [DroneKit LA testdata](https://github.com/dronekit/dronekit-la-testdata) repository.