Skip to content

Commit 94c063a

Browse files
committed
Add basic read tests of a small pbf file
1 parent f83f96f commit 94c063a

File tree

2 files changed

+116
-0
lines changed

2 files changed

+116
-0
lines changed

tests/clipperton.osm.pbf

42.6 KB
Binary file not shown.

tests/reader.rs

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
use osmpbfreader;
2+
use std::fs::File;
3+
4+
#[derive(Debug, Default, PartialEq)]
5+
struct Stats {
6+
num_nodes: i64,
7+
num_ways: i64,
8+
num_relations: i64,
9+
sum_nodes_ids: i64,
10+
sum_ways_ids: i64,
11+
sum_relations_ids: i64,
12+
}
13+
14+
const PBF: &str = "tests/clipperton.osm.pbf";
15+
const PBF_STATS_ALL: Stats = Stats {
16+
num_nodes: 3097,
17+
num_ways: 151,
18+
num_relations: 17,
19+
sum_nodes_ids: 22498900142500,
20+
sum_ways_ids: 155207265285,
21+
sum_relations_ids: 112821863,
22+
};
23+
const PBF_STATS_HIGHWAY: Stats = Stats {
24+
num_nodes: 9,
25+
num_ways: 3,
26+
num_relations: 0,
27+
sum_nodes_ids: 114394331047,
28+
sum_ways_ids: 4118264166,
29+
sum_relations_ids: 0,
30+
};
31+
32+
#[test]
33+
fn read_pbf() {
34+
let file = File::open(PBF).unwrap();
35+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
36+
let mut stats = Stats::default();
37+
38+
for obj in pbf.iter() {
39+
let obj = obj.unwrap();
40+
match obj {
41+
osmpbfreader::OsmObj::Node(n) => {
42+
stats.num_nodes += 1;
43+
stats.sum_nodes_ids += n.id.0;
44+
}
45+
osmpbfreader::OsmObj::Way(w) => {
46+
stats.num_ways += 1;
47+
stats.sum_ways_ids += w.id.0;
48+
}
49+
osmpbfreader::OsmObj::Relation(r) => {
50+
stats.num_relations += 1;
51+
stats.sum_relations_ids += r.id.0;
52+
}
53+
}
54+
}
55+
assert_eq!(stats, PBF_STATS_ALL);
56+
}
57+
58+
#[test]
59+
fn read_pbf_par_iter() {
60+
let file = File::open(PBF).unwrap();
61+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
62+
let mut stats = Stats::default();
63+
64+
for obj in pbf.par_iter() {
65+
let obj = obj.unwrap();
66+
match obj {
67+
osmpbfreader::OsmObj::Node(n) => {
68+
stats.num_nodes += 1;
69+
stats.sum_nodes_ids += n.id.0;
70+
}
71+
osmpbfreader::OsmObj::Way(w) => {
72+
stats.num_ways += 1;
73+
stats.sum_ways_ids += w.id.0;
74+
}
75+
osmpbfreader::OsmObj::Relation(r) => {
76+
stats.num_relations += 1;
77+
stats.sum_relations_ids += r.id.0;
78+
}
79+
}
80+
}
81+
assert_eq!(stats, PBF_STATS_ALL);
82+
}
83+
84+
#[test]
85+
fn read_pbf_highway() {
86+
let file = File::open(PBF).unwrap();
87+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
88+
let mut stats = Stats::default();
89+
let mut sum_ids = 0;
90+
91+
let objs = pbf
92+
.get_objs_and_deps(|obj| obj.is_way() && obj.tags().contains_key("highway"))
93+
.unwrap();
94+
for (id, obj) in &objs {
95+
sum_ids += id.inner_id();
96+
match obj {
97+
osmpbfreader::OsmObj::Node(n) => {
98+
stats.num_nodes += 1;
99+
stats.sum_nodes_ids += n.id.0;
100+
}
101+
osmpbfreader::OsmObj::Way(w) => {
102+
stats.num_ways += 1;
103+
stats.sum_ways_ids += w.id.0;
104+
}
105+
osmpbfreader::OsmObj::Relation(r) => {
106+
stats.num_relations += 1;
107+
stats.sum_relations_ids += r.id.0;
108+
}
109+
}
110+
}
111+
assert_eq!(stats, PBF_STATS_HIGHWAY);
112+
let exp_sum_ids = PBF_STATS_HIGHWAY.sum_nodes_ids
113+
+ PBF_STATS_HIGHWAY.sum_ways_ids
114+
+ PBF_STATS_HIGHWAY.sum_relations_ids;
115+
assert_eq!(sum_ids, exp_sum_ids);
116+
}

0 commit comments

Comments
 (0)