Skip to content
This repository was archived by the owner on Apr 13, 2021. It is now read-only.

Commit 621f40f

Browse files
committed
Merge pull request #197 from kovach/fix
fix loop error, add unit test
2 parents 5ac8188 + dbc33eb commit 621f40f

File tree

6 files changed

+50
-5
lines changed

6 files changed

+50
-5
lines changed

src/sats_management.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,17 @@ void set_reference_sat_of_prns(const u8 ref_prn, const u8 num_sats, u8 *prns)
9494
memcpy(old_prns, prns, num_sats * sizeof(u8));
9595
u8 set_old_yet = 0;
9696
prns[0] = ref_prn;
97-
for (u8 i=1; i<num_sats; ) {
97+
for (u8 i=1; i<num_sats; i++) {
9898
if (old_prns[i] != ref_prn) {
9999
if (old_prns[i]>old_ref && set_old_yet == 0) {
100100
prns[j] = old_ref;
101101
j++;
102+
i--;
102103
set_old_yet++;
103104
}
104105
else {
105106
prns[j] = old_prns[i];
106-
i++, j++;
107+
j++;
107108
}
108109
}
109110
}
@@ -135,16 +136,17 @@ static void set_reference_sat(const u8 ref_prn, sats_management_t *sats_manageme
135136
memcpy(old_prns, sats_management->prns, sats_management->num_sats * sizeof(u8));
136137
u8 set_old_yet = 0;
137138
sats_management->prns[0] = ref_prn;
138-
for (u8 i=1; i<sats_management->num_sats; ) {
139+
for (u8 i=1; i<sats_management->num_sats; i++) {
139140
if (old_prns[i] != ref_prn) {
140141
if (old_prns[i]>old_ref && set_old_yet == 0) {
141142
sats_management->prns[j] = old_ref;
142143
j++;
144+
i--;
143145
set_old_yet++;
144146
}
145147
else {
146148
sats_management->prns[j] = old_prns[i];
147-
i++, j++;
149+
j++;
148150
}
149151
}
150152
}

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ else (CMAKE_CROSSCOMPILING)
3636
check_rtcm3.c
3737
check_coord_system.c
3838
check_linear_algebra.c
39+
check_sats_management.c
3940
check_ambiguity_test.c
4041
check_filter_utils.c
4142
check_ephemeris.c

tests/check_ambiguity_test.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,12 @@ START_TEST(test_ambiguity_update_reference)
133133
.prns = {3,1,2,4}}};
134134
create_empty_ambiguity_test(&amb_test);
135135

136+
amb_test.sats.num_sats = 4;
137+
136138
sdiff_t sdiffs[4] = {{.prn = 1, .snr = 0},
137139
{.prn = 2, .snr = 0},
138140
{.prn = 4, .snr = 1}};
139-
u8 num_sdiffs = 4;
141+
u8 num_sdiffs = 3;
140142

141143
for (u32 i=0; i<3; i++) {
142144
hypothesis_t *hyp = (hypothesis_t *)memory_pool_add(amb_test.pool);

tests/check_main.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ int main(void)
1616
srunner_add_suite(sr, amb_kf_test_suite());
1717
srunner_add_suite(sr, observation_test_suite());
1818
srunner_add_suite(sr, pvt_test_suite());
19+
srunner_add_suite(sr, sats_management_test_suite());
1920
srunner_add_suite(sr, ambiguity_test_suite());
2021
srunner_add_suite(sr, rtcm3_suite());
2122
srunner_add_suite(sr, bits_suite());

tests/check_sats_management.c

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#include <check.h>
2+
#include <stdio.h>
3+
#include "linear_algebra.h"
4+
#include "check_utils.h"
5+
#include "sats_management.c"
6+
#include "amb_kf.h"
7+
8+
9+
START_TEST(test_rebase_1)
10+
{
11+
u8 prns[4] = {2,1,3,4};
12+
u8 num_sats = sizeof(prns);
13+
u8 new_ref = 3;
14+
15+
sats_management_t sats_management;
16+
sats_management.num_sats = 4;
17+
sats_management.prns[0] = 2;
18+
sats_management.prns[1] = 1;
19+
sats_management.prns[2] = 3;
20+
sats_management.prns[3] = 4;
21+
22+
set_reference_sat_of_prns(new_ref, num_sats, prns);
23+
/* Just check the sats_management prns update */
24+
set_reference_sat(new_ref, &sats_management, 0, 0, 0);
25+
/* TODO make a better test */
26+
}
27+
END_TEST
28+
29+
Suite* sats_management_test_suite(void)
30+
{
31+
Suite *s = suite_create("Sats Management");
32+
33+
TCase *tc_rebase = tcase_create("rebase");
34+
tcase_add_test(tc_rebase, test_rebase_1);
35+
suite_add_tcase(s, tc_rebase);
36+
37+
return s;
38+
}

tests/check_suites.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Suite* bits_suite(void);
1212
Suite* memory_pool_suite(void);
1313
Suite* edc_suite(void);
1414
Suite* linear_algebra_suite(void);
15+
Suite* sats_management_test_suite(void);
1516
Suite* ambiguity_test_suite(void);
1617
Suite* filter_utils_suite(void);
1718
Suite* ephemeris_suite(void);

0 commit comments

Comments
 (0)