| Server IP : 185.11.201.71 / Your IP : 192.168.7.18 Web Server : Apache/2.4.29 (Ubuntu) System : Linux tech-virtual-machine 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 User : tech ( 1000) PHP Version : 7.4.28 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/wordpress/App/pages/dxf-parser/test/ |
Upload File : |
var DxfParser = require('../');
var fs = require('fs');
var should = require('should');
var path = require('path');
approvals = require('approvals');
describe('Parser', function() {
it('should parse the dxf header variables into an object', function(done) {
var file = fs.createReadStream(__dirname + '/data/header.dxf', { encoding: 'utf8' });
var parser = new DxfParser();
parser.parseStream(file, function(err, result) {
should.not.exist(err);
var expected = fs.readFileSync(__dirname + '/data/header.parser.out', {encoding: 'utf8'});
result.should.eql(JSON.parse(expected));
done();
});
});
var tables;
it('should parse the tables section without error', function(done) {
var file = fs.createReadStream(__dirname + '/data/tables.dxf', { encoding: 'utf8' });
var parser = new DxfParser();
parser.parseStream(file, function(err, result) {
var errMsg = err ? err.stack : undefined;
should.not.exist(err, errMsg);
tables = result.tables;
fs.writeFileSync(path.join(__dirname, 'data', 'layer-table.actual.json'), JSON.stringify(tables.layer, null, 2));
fs.writeFileSync(path.join(__dirname, 'data', 'ltype-table.actual.json'), JSON.stringify(tables.lineType, null, 2));
fs.writeFileSync(path.join(__dirname, 'data', 'viewport-table.actual.json'), JSON.stringify(tables.viewPort, null, 2));
done();
});
});
it('should parse the dxf layers', function() {
should.exist(tables);
tables.should.have.property('layer');
var expectedOutputFilePath = path.join(__dirname,'data','layer-table.expected.json');
var expected = fs.readFileSync(expectedOutputFilePath, {encoding: 'utf8'});
tables.layer.should.eql(JSON.parse(expected));
});
it('should parse the dxf ltype table', function() {
should.exist(tables);
tables.should.have.property('lineType');
var expectedOutputFilePath = path.join(__dirname,'data','ltype-table.expected.json');
var expected = fs.readFileSync(expectedOutputFilePath, {encoding: 'utf8'});
tables.lineType.should.eql(JSON.parse(expected));
});
it('should parse the dxf viewPort table', function() {
should.exist(tables);
tables.should.have.property('viewPort');
var expectedOutputFilePath = path.join(__dirname,'data','viewport-table.expected.json');
var expected = fs.readFileSync(expectedOutputFilePath, {encoding: 'utf8'});
tables.viewPort.should.eql(JSON.parse(expected));
});
it('should parse a complex BLOCKS section', function() {
verifyDxf(path.join(__dirname, 'data', 'blocks.dxf'))
});
it('should parse a simple BLOCKS section', function() {
var file = fs.readFileSync(path.join(__dirname, 'data', 'blocks2.dxf'), 'utf8');
var parser = new DxfParser();
var dxf;
try {
dxf = parser.parseSync(file);
fs.writeFileSync(path.join(__dirname, 'data', 'blocks2.actual.json'), JSON.stringify(dxf, null, 2));
}catch(err) {
should.not.exist(err);
}
should.exist(dxf);
var expected = fs.readFileSync(path.join(__dirname, 'data', 'blocks2.expected.json'), {encoding: 'utf8'});
dxf.should.eql(JSON.parse(expected));
});
it('should parse POLYLINES', function() {
var file = fs.readFileSync(path.join(__dirname, 'data', 'polylines.dxf'), 'utf8');
var parser = new DxfParser();
var dxf;
try {
dxf = parser.parseSync(file);
fs.writeFileSync(path.join(__dirname, 'data', 'polylines.actual.json'), JSON.stringify(dxf, null, 2));
}catch(err) {
should.not.exist(err);
}
should.exist(dxf);
var expected = fs.readFileSync(path.join(__dirname, 'data', 'polylines.expected.json'), {encoding: 'utf8'});
dxf.should.eql(JSON.parse(expected));
});
it('should parse ELLIPSE entities', function() {
var file = fs.readFileSync(path.join(__dirname, 'data', 'ellipse.dxf'), 'utf8');
var parser = new DxfParser();
var dxf;
try {
dxf = parser.parseSync(file);
fs.writeFileSync(path.join(__dirname, 'data', 'ellipse.actual.json'), JSON.stringify(dxf, null, 2));
}catch(err) {
should.not.exist(err);
}
should.exist(dxf);
var expected = fs.readFileSync(path.join(__dirname, 'data', 'ellipse.expected.json'), {encoding: 'utf8'});
dxf.should.eql(JSON.parse(expected));
});
it('should parse SPLINE entities', function() {
var file = fs.readFileSync(path.join(__dirname, 'data', 'splines.dxf'), 'utf8');
var parser = new DxfParser();
var dxf;
try {
dxf = parser.parseSync(file);
fs.writeFileSync(path.join(__dirname, 'data', 'splines.actual.json'), JSON.stringify(dxf, null, 2));
}catch(err) {
should.not.exist(err);
}
should.exist(dxf);
var expected = fs.readFileSync(path.join(__dirname, 'data', 'splines.expected.json'), {encoding: 'utf8'});
dxf.should.eql(JSON.parse(expected));
});
it('should parse EXTENDED DATA', function() {
var file = fs.readFileSync(path.join(__dirname, 'data', 'extendeddata.dxf'), 'utf8');
var parser = new DxfParser();
var dxf;
try {
dxf = parser.parseSync(file);
fs.writeFileSync(path.join(__dirname, 'data', 'extendeddata.actual.json'), JSON.stringify(dxf, null, 2));
}catch(err) {
should.not.exist(err);
}
should.exist(dxf);
var expected = fs.readFileSync(path.join(__dirname, 'data', 'extendeddata.expected.json'), {encoding: 'utf8'});
dxf.should.eql(JSON.parse(expected));
});
it('should parse SPLINE entities that are like arcs and circles', function() {
verifyDxf(path.join(__dirname, 'data', 'arcs-as-splines.dxf'));
});
it('should parse ARC entities (1)', function() {
verifyDxf(path.join(__dirname, 'data', 'arc1.dxf'));
});
});
function verifyDxf(sourceFilePath) {
var baseName = path.basename(sourceFilePath, '.dxf');
var sourceDirectory = path.dirname(sourceFilePath);
var parser = new DxfParser();
var file = fs.readFileSync(sourceFilePath, 'utf8');
var dxf = parser.parseSync(file);
approvals.verifyAsJSON(sourceDirectory, baseName, dxf);
}