46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
var fs = require("fs"),
|
|
tape = require("tape"),
|
|
shapefile = require("../");
|
|
|
|
testConversion("number-null-property");
|
|
testConversion("string-property");
|
|
testConversion("mixed-properties");
|
|
testConversion("date-property");
|
|
testConversion("utf8-property", {encoding: "utf8"});
|
|
|
|
function testConversion(name, options) {
|
|
tape("shapefile.openDbf(" + name + ")", function(test) {
|
|
shapefile.openDbf("test/" + name + ".dbf", options)
|
|
.then(source => {
|
|
var values = [];
|
|
return source.read().then(function read(result) {
|
|
if (result.done) return values;
|
|
fixActualProperties(result.value);
|
|
values.push(result.value);
|
|
return source.read().then(read);
|
|
});
|
|
})
|
|
.then(values => (test.deepEqual(values, JSON.parse(fs.readFileSync("test/" + name + ".json", "utf8")).features.map(properties)), test.end()))
|
|
.catch(error => test.end(error));
|
|
});
|
|
}
|
|
|
|
function properties(feature) {
|
|
fixExpectedProperties(feature.properties);
|
|
return feature.properties;
|
|
}
|
|
|
|
function fixActualProperties(properties) {
|
|
for (var key in properties) {
|
|
if (properties[key] == null) {
|
|
delete properties[key];
|
|
}
|
|
}
|
|
delete properties.FID; // ogr2ogr built-in?
|
|
}
|
|
|
|
function fixExpectedProperties(properties) {
|
|
var d = properties.date;
|
|
if (d) properties.date = new Date(+d.substring(0, 4), d.substring(4, 6) - 1, +d.substring(6, 8));
|
|
}
|