Skip to content

Commit

Permalink
test: add tests for empty mbtiles (#1218)
Browse files Browse the repository at this point in the history
They all seem to pass, but good to ensure we test the usecase of empty
mbtiles
  • Loading branch information
nyurik committed Feb 27, 2024
1 parent 16a54e1 commit e0c960a
Show file tree
Hide file tree
Showing 7 changed files with 309 additions and 0 deletions.
23 changes: 23 additions & 0 deletions mbtiles/tests/copy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,29 @@ fn databases() -> Databases {
let mut result = Databases::default();
for &mbt_typ in &[Flat, FlatWithHash, Normalized] {
let typ = shorten(mbt_typ);

let (raw_empty_mbt, mut raw_empty_cn) =
new_file_no_hash!(databases, mbt_typ, "", "", "{typ}__empty-no-hash");
let dmp = dump(&mut raw_empty_cn).await.unwrap();
assert_snapshot!(&dmp, "{typ}__empty-no-hash");
result.add("empty_no_hash", mbt_typ, dmp, raw_empty_mbt, raw_empty_cn);

let (empty_mbt, mut empty_cn) = open!(databases, "{typ}__empty");
let raw_empty_mbt = result.mbtiles("empty_no_hash", mbt_typ);
let opt = MbtilesCopier {
src_file: path(raw_empty_mbt),
dst_file: path(&empty_mbt),
..Default::default()
};
opt.run().await.unwrap();
let dmp = dump(&mut empty_cn).await.unwrap();
assert_snapshot!(&dmp, "{typ}__empty");
let hash = empty_mbt.validate(Off, Verify).await.unwrap();
allow_duplicates! {
assert_display_snapshot!(hash, @"D41D8CD98F00B204E9800998ECF8427E");
}
result.add("empty", mbt_typ, dmp, empty_mbt, empty_cn);

let (raw_mbt, mut raw_cn) = new_file_no_hash!(
databases,
mbt_typ,
Expand Down
32 changes: 32 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@flat__empty-no-hash.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = []

[[]]
type = 'table'
tbl_name = 'tiles'
sql = '''
CREATE TABLE tiles (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_data blob,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'index'
tbl_name = 'tiles'
32 changes: 32 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@flat__empty.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = ['( "agg_tiles_hash", "D41D8CD98F00B204E9800998ECF8427E" )']

[[]]
type = 'table'
tbl_name = 'tiles'
sql = '''
CREATE TABLE tiles (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_data blob,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'index'
tbl_name = 'tiles'
40 changes: 40 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@hash__empty-no-hash.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = []

[[]]
type = 'table'
tbl_name = 'tiles_with_hash'
sql = '''
CREATE TABLE tiles_with_hash (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_data blob,
tile_hash text,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'index'
tbl_name = 'tiles_with_hash'

[[]]
type = 'view'
tbl_name = 'tiles'
sql = '''
CREATE VIEW tiles AS
SELECT zoom_level, tile_column, tile_row, tile_data FROM tiles_with_hash'''
40 changes: 40 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@hash__empty.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = ['( "agg_tiles_hash", "D41D8CD98F00B204E9800998ECF8427E" )']

[[]]
type = 'table'
tbl_name = 'tiles_with_hash'
sql = '''
CREATE TABLE tiles_with_hash (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_data blob,
tile_hash text,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'index'
tbl_name = 'tiles_with_hash'

[[]]
type = 'view'
tbl_name = 'tiles'
sql = '''
CREATE VIEW tiles AS
SELECT zoom_level, tile_column, tile_row, tile_data FROM tiles_with_hash'''
71 changes: 71 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@norm__empty-no-hash.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'images'
sql = '''
CREATE TABLE images (
tile_id text NOT NULL PRIMARY KEY,
tile_data blob)'''
values = []

[[]]
type = 'table'
tbl_name = 'map'
sql = '''
CREATE TABLE map (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_id text,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = []

[[]]
type = 'index'
tbl_name = 'images'

[[]]
type = 'index'
tbl_name = 'map'

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'view'
tbl_name = 'tiles'
sql = '''
CREATE VIEW tiles AS
SELECT map.zoom_level AS zoom_level,
map.tile_column AS tile_column,
map.tile_row AS tile_row,
images.tile_data AS tile_data
FROM map
JOIN images ON images.tile_id = map.tile_id'''
[[]]
type = 'view'
tbl_name = 'tiles_with_hash'
sql = '''
CREATE VIEW tiles_with_hash AS
SELECT
map.zoom_level AS zoom_level,
map.tile_column AS tile_column,
map.tile_row AS tile_row,
images.tile_data AS tile_data,
images.tile_id AS tile_hash
FROM map
JOIN images ON images.tile_id = map.tile_id'''
71 changes: 71 additions & 0 deletions mbtiles/tests/snapshots/copy__databases@norm__empty.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
source: mbtiles/tests/copy.rs
expression: actual_value
---
[[]]
type = 'table'
tbl_name = 'images'
sql = '''
CREATE TABLE images (
tile_id text NOT NULL PRIMARY KEY,
tile_data blob)'''
values = []

[[]]
type = 'table'
tbl_name = 'map'
sql = '''
CREATE TABLE map (
zoom_level integer NOT NULL,
tile_column integer NOT NULL,
tile_row integer NOT NULL,
tile_id text,
PRIMARY KEY(zoom_level, tile_column, tile_row))'''
values = []

[[]]
type = 'table'
tbl_name = 'metadata'
sql = '''
CREATE TABLE metadata (
name text NOT NULL PRIMARY KEY,
value text)'''
values = ['( "agg_tiles_hash", "D41D8CD98F00B204E9800998ECF8427E" )']

[[]]
type = 'index'
tbl_name = 'images'

[[]]
type = 'index'
tbl_name = 'map'

[[]]
type = 'index'
tbl_name = 'metadata'

[[]]
type = 'view'
tbl_name = 'tiles'
sql = '''
CREATE VIEW tiles AS
SELECT map.zoom_level AS zoom_level,
map.tile_column AS tile_column,
map.tile_row AS tile_row,
images.tile_data AS tile_data
FROM map
JOIN images ON images.tile_id = map.tile_id'''
[[]]
type = 'view'
tbl_name = 'tiles_with_hash'
sql = '''
CREATE VIEW tiles_with_hash AS
SELECT
map.zoom_level AS zoom_level,
map.tile_column AS tile_column,
map.tile_row AS tile_row,
images.tile_data AS tile_data,
images.tile_id AS tile_hash
FROM map
JOIN images ON images.tile_id = map.tile_id'''

0 comments on commit e0c960a

Please sign in to comment.