File: GEOSGeoJSONWriterTest.cpp

package info (click to toggle)
geos 3.14.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 31,212 kB
  • sloc: cpp: 199,103; xml: 56,065; ansic: 6,162; sh: 287; makefile: 26
file content (79 lines) | stat: -rw-r--r-- 2,095 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <tut/tut.hpp>
// geos
#include <geos_c.h>

#include "capi_test_utils.h"

namespace tut {
//
// Test Group
//

struct test_geosgeojsonwriter_data : public capitest::utility {

    test_geosgeojsonwriter_data() :
        geojsonwriter_(GEOSGeoJSONWriter_create()),
        geojson_(nullptr)
    {}

    ~test_geosgeojsonwriter_data() {
        GEOSGeoJSONWriter_destroy(geojsonwriter_);
        GEOSFree(geojson_);
    }

    void
    test_writer_geojson(std::string const& geojson)
    {
        test_writer_geojson(geojson, geojson);
    }

    void
    test_writer_geojson(std::string const& geojson, std::string const& expected)
    {
        GEOSGeoJSONReader* reader = GEOSGeoJSONReader_create();
        GEOSGeometry* geom1 = GEOSGeoJSONReader_readGeometry(reader, &geojson[0]);
        ensure(nullptr != geom1);

        char* wkt_c = GEOSGeoJSONWriter_writeGeometry(geojsonwriter_, geom1, -1);
        std::string out(wkt_c);
        free(wkt_c);
        GEOSGeom_destroy(geom1);
        GEOSGeoJSONReader_destroy(reader);

        ensure_equals(out, expected);
    }

    GEOSGeoJSONWriter* geojsonwriter_;
    char* geojson_;
};

typedef test_group<test_geosgeojsonwriter_data> group;
typedef group::object object;

group test_geosgeojsonwriter("capi::GEOSGeoJSONWriter");

// Check default output dimension 3
template<>
template<>
void object::test<1>()
{
    ensure_equals(GEOSGeoJSONWriter_getOutputDimension(geojsonwriter_), 3);

    test_writer_geojson("{\"type\":\"Point\",\"coordinates\":[10.0,13.0]}");
    test_writer_geojson("{\"type\":\"Point\",\"coordinates\":[10.0,13.0,3.0]}");
}

// Check writer with output dimension 2
template<>
template<>
void object::test<2>()
{
    GEOSGeoJSONWriter_setOutputDimension(geojsonwriter_, 2);
    ensure_equals("getOutputDimension_2", GEOSGeoJSONWriter_getOutputDimension(geojsonwriter_), 2);

    test_writer_geojson("{\"type\":\"Point\",\"coordinates\":[10.0,13.0]}");
    test_writer_geojson("{\"type\":\"Point\",\"coordinates\":[10.0,13.0,3.0]}", "{\"type\":\"Point\",\"coordinates\":[10.0,13.0]}");
}

} // namespace tut