upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/tests/unit/test_geohash.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test_geohash.c')
-rw-r--r--tests/unit/test_geohash.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/unit/test_geohash.c b/tests/unit/test_geohash.c
new file mode 100644
index 0000000..0da81fa
--- /dev/null
+++ b/tests/unit/test_geohash.c
@@ -0,0 +1,40 @@
1#include "test_framework.h"
2#include "../../main/geohash.h"
3#include <string.h>
4
5int main(void)
6{
7 char buf[16];
8
9 printf("=== test_geohash ===\n");
10
11 geohash_encode(48.1351, 11.5820, 9, buf);
12 ASSERT_EQ_STR("u281zd9z2", buf, "Munich (48.1351, 11.5820) precision 9");
13
14 geohash_encode(40.7128, -74.0060, 6, buf);
15 ASSERT(buf[0] == 'd', "NYC starts with 'd'");
16 ASSERT(buf[1] == 'r', "NYC second char 'r'");
17 ASSERT_EQ_INT(6, (int)strlen(buf), "NYC precision 6 has length 6");
18
19 geohash_encode(0.0, 0.0, 8, buf);
20 ASSERT_EQ_STR("s0000000", buf, "Origin (0,0) precision 8");
21
22 geohash_encode(90.0, 180.0, 5, buf);
23 ASSERT_EQ_INT(5, (int)strlen(buf), "North pole max lon precision 5");
24
25 geohash_encode(-90.0, -180.0, 5, buf);
26 ASSERT_EQ_INT(5, (int)strlen(buf), "South pole min lon precision 5");
27
28 geohash_encode(48.1351, 11.5820, 1, buf);
29 ASSERT_EQ_INT(1, (int)strlen(buf), "Precision 1 produces 1 char");
30 ASSERT(buf[0] == 'u', "Munich precision 1 = 'u'");
31
32 geohash_encode(48.1351, 11.5820, 4, buf);
33 ASSERT_EQ_STR("u281", buf, "Munich precision 4");
34
35 char buf2[16];
36 geohash_encode(48.1351, 11.5820, 9, buf2);
37 ASSERT_EQ_STR("u281zd9z2", buf2, "Munich determinism check");
38
39 TEST_SUMMARY();
40}