Implement named data groups.
[erlang-x-plane-data.git] / test / x_plane_data_SUITE.erl
CommitLineData
cfe4f77b
SK
1-module(x_plane_data_SUITE).
2
84fa8ccb
SK
3-include_lib("x_plane_data_group_lat_lon_alt.hrl").
4-include_lib("x_plane_data_group_pitch_roll_heading.hrl").
5-include_lib("x_plane_data_group_speeds.hrl").
6
cfe4f77b
SK
7%% CT callbacks
8-export(
9 [ all/0
10 , groups/0
11 ]).
12
13%% Test cases
14-export(
84fa8ccb
SK
15 [ t_bin_to_raw/1
16 , t_bin_to_raw_to_named/1
cfe4f77b
SK
17 ]).
18
19-define(GROUP, x_plane_data).
20
21%% ============================================================================
22%% CT callbacks
23%% ============================================================================
24
25all() ->
26 [ {group, ?GROUP}
27 ].
28
29groups() ->
30 Tests =
84fa8ccb
SK
31 [ t_bin_to_raw
32 , t_bin_to_raw_to_named
cfe4f77b
SK
33 ],
34 Properties = [parallel],
35 [ {?GROUP, Properties, Tests}
36 ].
37
38
39%% =============================================================================
40%% Test cases
41%% =============================================================================
42
84fa8ccb 43t_bin_to_raw(_Cfg) ->
cfe4f77b
SK
44 Test =
45 fun (PacketBase64) ->
46 Packet = base64:decode(PacketBase64),
07ba60a5
SK
47 {error, packet_bad_header} =
48 x_plane_data_raw:of_bin(<<"bad-header", Packet/binary>>),
49 {error, packet_bad_length} =
50 x_plane_data_raw:of_bin(<<Packet/binary, "extra-stuff">>),
10d6d4c7 51 {ok, {Index, Groups}} =
07ba60a5 52 x_plane_data_raw:of_bin(<<Packet/binary>>),
10d6d4c7
SK
53 ct:log("Index: ~p", [Index]),
54 ct:log("Groups: ~p", [Groups]),
55 {some, Group3 } = kv_list_find(Groups, 3),
56 {some, Group17} = kv_list_find(Groups, 17),
57 {some, Group20} = kv_list_find(Groups, 20),
58 { 3.106105089187622
59 , 6.640225887298584
60 , 6.793502330780029
61 , 1.0040892448159866e-5
62 , -999.0
63 , 3.574441909790039
64 , 7.81782341003418
65 , 1.1554855518625118e-5
66 } = Group3,
67 { 2.3310465812683105
68 , 0.22457626461982727
69 , 120.6203384399414
70 , 133.51084899902344
71 , -999.0
72 , -999.0
73 , -999.0
74 , -999.0
75 } = Group17,
76 { 40.64827346801758
77 , -73.81651306152344
78 , 7.969515800476074
79 , 0.226793110370636
80 , 1.0
81 , -70.99662780761719
82 , 40.0
83 , -75.0
84 } = Group20,
cfe4f77b
SK
85 ok
86 end,
87 lists:foreach(Test, sample_packets_base64_encoded()).
88
84fa8ccb
SK
89t_bin_to_raw_to_named(_Cfg) ->
90 Test =
91 fun (PacketBase64) ->
92 Packet = base64:decode(PacketBase64),
93 {ok, DataRaw} = x_plane_data_raw:of_bin(Packet),
94 ct:log("DataRaw: ~p", [DataRaw]),
95 {64, _} = DataRaw,
96 {ok, DataNamed} = x_plane_data_named:of_raw(DataRaw),
97 ct:log("DataNamed: ~p", [DataNamed]),
98 {x_plane_data_v10, Groups} = DataNamed,
99 {some, #x_plane_data_group_speeds
100 { vind_kias = 3.106105089187622
101 , vind_keas = 6.640225887298584
102 , vtrue_ktas = 6.793502330780029
103 , vtrue_ktgs = 1.0040892448159866e-5
104 , vind_mph = 3.574441909790039
105 , vtrue_mphas = 7.81782341003418
106 , vtrue_mphgs = 1.1554855518625118e-5
107 }
108 } = kv_list_find(Groups, speeds),
109 {some, #x_plane_data_group_pitch_roll_heading
110 { pitch_deg = 2.3310465812683105
111 , roll_deg = 0.22457626461982727
112 , hding_true = 120.6203384399414
113 , hding_mag = 133.51084899902344
114 }
115 } = kv_list_find(Groups, pitch_roll_heading),
116 {some, #x_plane_data_group_lat_lon_alt
117 { lat_deg = 40.64827346801758
118 , lon_deg = -73.81651306152344
119 , alt_ftmsl = 7.969515800476074
120 , alt_ftagl = 0.226793110370636
121 , on_runwy = 1.0
122 , alt_ind = -70.99662780761719
123 , lat_south = 40.0
124 , lon_west = -75.0
125 }
126 } = kv_list_find(Groups, lat_lon_alt),
127 ok
128 end,
129 lists:foreach(Test, sample_packets_base64_encoded()).
130
cfe4f77b
SK
131%% =============================================================================
132%% Sample data
133%% =============================================================================
134
135sample_packets_base64_encoded() ->
136 [ <<"REFUQUADAAAAbcpGQLt81EBfZNlATnUoNwDAecSow2RAnCv6QLrbQTcRAAAA3i8VQFL3ZT6dPfFCx4IFQwDAecQAwHnEAMB5xADAecQUAAAA1ZciQg6ik8JGBv9AdDxoPgAAgD9G/o3CAAAgQgAAlsI=">>
137 ].
07ba60a5
SK
138
139
140%% =============================================================================
141%% Helpers
142%% =============================================================================
143
144kv_list_find(KVL, K) ->
145 case lists:keyfind(K, 1, KVL)
146 of false -> none
147 ; {K, V} -> {some, V}
148 end.
This page took 0.026807 seconds and 4 git commands to generate.