Update the license of OpenStreetMap
[libchamplain:potyl-perl.git] / bindings / perl / Champlain / t / ChamplainMapSourceDesc.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Clutter::TestHelper tests => 22;
7 use Test::Exception;
8
9 use Champlain ':maps';
10
11 exit tests();
12
13 sub tests {
14         test_get_set();
15         return 0;
16 }
17
18
19 sub test_get_set {
20         my $factory = Champlain::MapSourceFactory->dup_default();
21         isa_ok($factory, 'Champlain::MapSourceFactory');
22         
23         # Get the maps available
24         my @maps = $factory->dup_list();
25         ok(@maps >= 5, "Maps factory has the default maps");
26         
27         # Find the OAM map and check that the it's properly described
28         my @found = grep { $_->id eq Champlain::MapSourceFactory->OSM_MAPNIK } @maps;
29         is(scalar(@found), 1, "Found a single map matching OAM");
30         if (! @found) {
31                 fail("Can't test a Champlain::MapSourceDesc without a map description") for 1 .. 22;
32                 return;
33         }
34
35         # Getters
36         my ($source) = @found;
37         isa_ok($source, 'Champlain::MapSourceDesc');
38         is($source->id, Champlain::MapSourceFactory->OSM_MAPNIK, "get id()");
39         is($source->name, 'OpenStreetMap Mapnik', "get name()");
40         is($source->license, "CC-BY-SA 2.0 OpenStreetMap contributors", "get license()");
41         is($source->license_uri, 'http://creativecommons.org/licenses/by-sa/2.0/', "get license_uri()");
42         is($source->min_zoom_level, 0, "get min_zoom_level()");
43         is($source->max_zoom_level, 18, "get max_zoom_level()");
44         is($source->projection, 'mercator', "get projection()");
45         is($source->uri_format, 'http://tile.openstreetmap.org/#Z#/#X#/#Y#.png', "get uri_format()");
46         
47         # Setters
48         $source->id('test');
49         is($source->id, 'test', "set id()");
50         
51         $source->name("new name");
52         is($source->name, "new name", "set name()");
53         
54         $source->license("free for all");
55         is($source->license, "free for all", "set license()");
56         
57         $source->license_uri('file:///tmp/free.txt');
58         is($source->license_uri, 'file:///tmp/free.txt', "set license_uri()");
59         
60         $source->min_zoom_level(2);
61         is($source->min_zoom_level, 2, "set min_zoom_level()");
62         
63         $source->max_zoom_level(4);
64         is($source->max_zoom_level, 4, "set max_zoom_level()");
65         
66         # There are no other projections now, we have to trust that the setter works
67         $source->projection('mercator');
68         is($source->projection, 'mercator', "set projection()");
69
70         $source->uri_format('http://tile.oam.org/tiles/#Z#/#X#/#Y#.jpg');
71         is($source->uri_format, 'http://tile.oam.org/tiles/#Z#/#X#/#Y#.jpg', "set uri_format()");
72         
73         
74         # The constructor is not yet available in the perl bindings
75         throws_ok { $source->constructor } qr/\Qdesc->constructor() isn't implemented yet/, "get constructor() isn't implemented";
76         throws_ok { $source->constructor(sub{}) } qr/\Qdesc->constructor(\&code_ref)/, "set constructor() isn't implemented";
77 }