agmission/Development/libs/shapefile/test/index-test.js

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));
}