Skip to content

Commit e0312e0

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

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

tests/clipperton.osm.pbf

42.6 KB
Binary file not shown.

tests/reader.rs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
use osmpbfreader;
2+
use std::fs::File;
3+
4+
const PBF: &str = "tests/clipperton.osm.pbf";
5+
6+
#[test]
7+
fn read_pbf() {
8+
let file = File::open(PBF).unwrap();
9+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
10+
11+
let mut num_nodes = 0;
12+
let mut num_ways = 0;
13+
let mut num_relations = 0;
14+
15+
for obj in pbf.iter() {
16+
let obj = obj.unwrap();
17+
match obj {
18+
osmpbfreader::OsmObj::Node(_) => num_nodes += 1,
19+
osmpbfreader::OsmObj::Way(_) => num_ways += 1,
20+
osmpbfreader::OsmObj::Relation(_) => num_relations += 1,
21+
}
22+
}
23+
assert_eq!(num_nodes, 3097);
24+
assert_eq!(num_ways, 151);
25+
assert_eq!(num_relations, 17);
26+
}
27+
28+
#[test]
29+
fn read_pbf_par_iter() {
30+
let file = File::open(PBF).unwrap();
31+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
32+
33+
let mut num_nodes = 0;
34+
let mut num_ways = 0;
35+
let mut num_relations = 0;
36+
37+
for obj in pbf.par_iter() {
38+
let obj = obj.unwrap();
39+
match obj {
40+
osmpbfreader::OsmObj::Node(_) => num_nodes += 1,
41+
osmpbfreader::OsmObj::Way(_) => num_ways += 1,
42+
osmpbfreader::OsmObj::Relation(_) => num_relations += 1,
43+
}
44+
}
45+
assert_eq!(num_nodes, 3097);
46+
assert_eq!(num_ways, 151);
47+
assert_eq!(num_relations, 17);
48+
}
49+
50+
#[test]
51+
fn read_pbf_highway() {
52+
let file = File::open(PBF).unwrap();
53+
let mut pbf = osmpbfreader::OsmPbfReader::new(file);
54+
55+
let mut num_nodes = 0;
56+
let mut num_ways = 0;
57+
let mut num_relations = 0;
58+
let mut sum_ids = 0;
59+
60+
let objs = pbf
61+
.get_objs_and_deps(|obj| obj.is_way() && obj.tags().contains_key("highway"))
62+
.unwrap();
63+
for (id, obj) in &objs {
64+
sum_ids += id.inner_id();
65+
match obj {
66+
osmpbfreader::OsmObj::Node(_) => num_nodes += 1,
67+
osmpbfreader::OsmObj::Way(_) => num_ways += 1,
68+
osmpbfreader::OsmObj::Relation(_) => num_relations += 1,
69+
}
70+
}
71+
assert_eq!(num_nodes, 9);
72+
assert_eq!(num_ways, 3);
73+
assert_eq!(num_relations, 0);
74+
assert_eq!(sum_ids, 118512595213);
75+
}

0 commit comments

Comments
 (0)