48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
var fs = require("fs"),
|
|
tape = require("tape"),
|
|
shapefile = require("../");
|
|
|
|
testConversion("empty");
|
|
testConversion("boolean-property");
|
|
testConversion("number-property");
|
|
testConversion("number-null-property");
|
|
testConversion("string-property");
|
|
testConversion("mixed-properties");
|
|
testConversion("date-property");
|
|
testConversion("utf8-property", {encoding: "utf8"});
|
|
testConversion("latin1-property");
|
|
testConversion("points");
|
|
testConversion("multipoints");
|
|
testConversion("polylines");
|
|
testConversion("polygons");
|
|
testConversion("null");
|
|
testConversion("ignore-properties", {ignoreProperties: true});
|
|
|
|
function testConversion(name, options) {
|
|
tape("shapefile.read(" + name + ")", function(test) {
|
|
shapefile.read("test/" + name + ".shp", undefined, options)
|
|
.then(actual => {
|
|
var expected = JSON.parse(fs.readFileSync("test/" + name + ".json", "utf8"));
|
|
actual.features.forEach(fixActualProperties);
|
|
expected.features.forEach(fixExpectedProperties);
|
|
test.deepEqual(actual, expected);
|
|
test.end();
|
|
})
|
|
.catch(error => test.end(error));
|
|
});
|
|
}
|
|
|
|
function fixActualProperties(feature) {
|
|
for (var key in feature.properties) {
|
|
if (feature.properties[key] == null) {
|
|
delete feature.properties[key];
|
|
}
|
|
}
|
|
delete feature.properties.FID; // ogr2ogr built-in?
|
|
}
|
|
|
|
function fixExpectedProperties(feature) {
|
|
var d = feature.properties.date;
|
|
if (d) feature.properties.date = new Date(+d.substring(0, 4), d.substring(4, 6) - 1, +d.substring(6, 8));
|
|
}
|