From c3fcce66692b782af6ca54b2b677538a8f709e0e Mon Sep 17 00:00:00 2001 From: zhaoming0 Date: Thu, 29 Sep 2016 17:16:59 +0800 Subject: [PATCH] Add test cases for widl-nan node module testing Impacted tests(approved): new 8, update 0, delete 0 Unit test result summary: pass 8, fail 0, block 0 --- test/test-node-module.js | 143 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 test/test-node-module.js diff --git a/test/test-node-module.js b/test/test-node-module.js new file mode 100644 index 0000000..d7250c2 --- /dev/null +++ b/test/test-node-module.js @@ -0,0 +1,143 @@ +// Copyright (c) 2016 Intel Corporation. All rights reserved. +// Use of this source code is governed by a MIT-style license that can be +// found in the LICENSE file. + +/* global describe, it */ +var widlParser = require('webidl2'); +var fs = require('fs'); +var assert = require('assert'); +var Util = require('./Util.js'); +var rimraf = require('rimraf'); +const g = require('widl-nan').generator; +const idlFile = './test/command-line/sample.widl'; + +describe('widl-nan modules test', function() { + it('addFile function exist', function() { + if (typeof g.addFile === 'function') { + assert.ok(true); + } else { + assert.ok(false); + } + }); + + it('compile function exist', function() { + if (typeof g.compile === 'function') { + assert.ok(true); + } else { + assert.ok(false); + } + }); + + it('writeToDir function exist', function() { + if (typeof g.writeToDir === 'function') { + assert.ok(true); + } else { + assert.ok(false); + } + }); + it('writeToDir /tmp', function(done) { + g.addFile(idlFile).then(function() { + g.compile(); + g.writeToDir('/tmp'); + // check files generated by interface name + var nodes = widlParser.parse(fs.readFileSync(idlFile, 'utf-8')); + for (var n in nodes) { + if (nodes[n].type === 'interface') { + assert.equal(Util.isFile('/tmp/nan__' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('/tmp/nan__' + + nodes[n].name.toLowerCase() + '.h'), true); + assert.equal(Util.isFile('/tmp/dont-build/' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('/tmp/dont-build/' + + nodes[n].name.toLowerCase() + '.h'), true); + } + } + // check impl files + assert.equal(Util.isFile('/tmp/dont-build/addon.cpp'), true); + assert.equal(Util.isFile('/tmp/dont-build/binding.gyp'), true); + done(); + }); + }); + + it('writeToDir null', function(done) { + var tmpdir = null; + g.addFile(idlFile).then(function() { + g.compile(); + g.writeToDir(tmpdir); + assert.ok(false); + done(); + }).catch(e => { + console.log(e); + done(); + }); + }); + + it('addFile one widl file', function(done) { + g.addFile(idlFile).then(function() { + g.compile(); + g.writeToDir('gen'); + // check files generated by interface name + var nodes = widlParser.parse(fs.readFileSync(idlFile, 'utf-8')); + for (var n in nodes) { + if (nodes[n].type === 'interface') { + assert.equal(Util.isFile('gen/nan__' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('gen/nan__' + + nodes[n].name.toLowerCase() + '.h'), true); + assert.equal(Util.isFile('gen/dont-build/' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('gen/dont-build/' + + nodes[n].name.toLowerCase() + '.h'), true); + } + } + // check impl files + assert.equal(Util.isFile('gen/dont-build/addon.cpp'), true); + assert.equal(Util.isFile('gen/dont-build/binding.gyp'), true); + rimraf.sync('gen'); + done(); + }); + }); + + it('addFile two widl files', function(done) { + var idlFile2 = './test/array/array.widl'; + Promise.all([ + g.addFile(idlFile), + g.addFile(idlFile2)]).then(function() { + g.compile(); + g.writeToDir('gen'); + // check files generated by interface name + var nodes = widlParser.parse(fs.readFileSync(idlFile, 'utf-8')); + for (var n in nodes) { + if (nodes[n].type === 'interface') { + assert.equal(Util.isFile('gen/nan__' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('gen/nan__' + + nodes[n].name.toLowerCase() + '.h'), true); + assert.equal(Util.isFile('gen/dont-build/' + + nodes[n].name.toLowerCase() + '.cpp'), true); + assert.equal(Util.isFile('gen/dont-build/' + + nodes[n].name.toLowerCase() + '.h'), true); + } + } + // check impl files + assert.equal(Util.isFile('gen/dont-build/addon.cpp'), true); + assert.equal(Util.isFile('gen/dont-build/binding.gyp'), true); + rimraf.sync('gen'); + done(); + }); + }); + + it('addFile invaild widl files', function(done) { + var idlFile = './test/test-array.js'; + g.addFile(idlFile).then(function() { + g.compile(); + g.writeToDir('gen'); + done(); + }).catch(e => { + console.log(e); + rimraf.sync('gen'); + done(); + }); + }); +});