diff --git a/karma.conf.js b/karma.conf.js index fee17e7..fad0277 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,20 +1,40 @@ -module.exports = function(config) { - config.set({ - frameworks: ['jasmine'], - - files: [ - 'src.old/js/core/core.js', - 'src.old/js/core/is.js', - 'src.old/js/core/di.js', - 'src.old/js/core/should.js', - 'src.old/js/core/htmlBuilder.js', - 'src.old/js/core/should.js', - 'src.old/js/core/appShell.js', - 'src.old/js/core/observable.js', - 'src.old/js/app.js', - 'src.old/js/components/*.js', - 'src.old/js/app/**/*.js', - 'tests/unit/**/*.js' - ] - }); -}; +module.exports = function (config) { + config.set({ + browsers: [ 'Chrome' ], + // karma only needs to know about the test bundle + files: [ + './tests/unit/**/*.js' + ], + frameworks: [ 'jasmine' ], + plugins: [ + 'karma-chrome-launcher', + 'karma-jasmine', + 'karma-webpack', + ], + // run the bundle through the webpack and sourcemap plugins + preprocessors: { + './tests/unit/**/*.js': [ 'webpack'] + }, + reporters: [ 'dots' ], + singleRun: true, + // webpack config object + webpack: { + module: { + loaders: [ + { + exclude: /node_modules/, + loader: 'babel-loader', + test: /\.jsx?$/, + query: { + presets: [require.resolve('babel-preset-es2015'), require.resolve('babel-preset-react')], + plugins: [require.resolve('babel-plugin-transform-class-properties')] + }, + } + ], + } + }, + webpackMiddleware: { + noInfo: true, + } + }); +}; \ No newline at end of file diff --git a/package.json b/package.json index eca0b92..665b987 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "serv": "webpack-dev-server --content-base ./src", "e2e": "protractor ./tests/e2e.chrome.js --params.appUrl='http://localhost:8080/#clear'", "e2e_build": "protractor ./tests/e2e.chrome.js --params.appUrl='http://localhost:3000/#clear'", - "e2e_remote": "protractor ./tests/e2e.chrome.js --params.appUrl='http://bitwisecmd.com/react/#clear'" + "e2e_remote": "protractor ./tests/e2e.chrome.js --params.appUrl='http://bitwisecmd.com/react/#clear'", + "test": "karma start" }, "repository": { "type": "git", @@ -35,6 +36,7 @@ "jasmine": "latest", "karma": "latest", "karma-jasmine": "latest", + "karma-webpack": "latest", "source-map-loader": "^0.1.5", "ts-loader": "^1.0.0" }, diff --git a/src/app/expression.js b/src/app/expression.js index 4149d5f..dac14c6 100644 --- a/src/app/expression.js +++ b/src/app/expression.js @@ -34,11 +34,7 @@ var expression = { }, addFactory: function(factory) { this.factories.push(factory); - }, - Operand:Operand, - SingleOperandExpression: SingleOperandExpression, - ListOfNumbersExpression: ListOfNumbersExpression, - MultipleOperandsExpression: MultipleOperandsExpression + } }; // List of numbers diff --git a/src/app/hash.js b/src/app/hash.js index d36ce94..4faa5de 100644 --- a/src/app/hash.js +++ b/src/app/hash.js @@ -8,15 +8,16 @@ export default { getArgs: function (hashValue) { var decodedHash = this.decodeHash(hashValue), - args = []; + args = { commands: [] }; splitHashList(decodedHash).forEach(function(value) { + // Support for -debur or -notrack properties if(/^\-[a-zA-Z]+$/.test(value)) { args[value.substr(1)] = true; return; } - args.push(value); + args.commands.push(value); }); return Object.freeze(args); diff --git a/src/app/index.jsx b/src/app/index.jsx index 22b37b4..80dd390 100644 --- a/src/app/index.jsx +++ b/src/app/index.jsx @@ -20,8 +20,9 @@ console.log("appState", appState); var hashArgs = hash.getArgs(window.location.hash); var startupCommands = ['help', '1|2&6','1<<0x2a','2 4 8 16 32']; -if(hashArgs.length > 0) { - startupCommands = hashArgs; + +if(hashArgs.commands.length > 0) { + startupCommands = hashArgs.commands; } startupCommands.forEach(cmd.execute.bind(cmd)); diff --git a/stage.bat b/stage.bat deleted file mode 100644 index fd26fd0..0000000 --- a/stage.bat +++ /dev/null @@ -1,4 +0,0 @@ -rem /S Copy folders and subfolders -rem /Y Suppress prompt to confirm overwriting a file. - -xcopy .\build\*.* ..\BitwiseCmdPages\ /S /Y \ No newline at end of file diff --git a/tests/unit/domain/expressionSpec.js b/tests/unit/expressionSpec.js similarity index 87% rename from tests/unit/domain/expressionSpec.js rename to tests/unit/expressionSpec.js index 1fdbdea..ca14c39 100644 --- a/tests/unit/domain/expressionSpec.js +++ b/tests/unit/expressionSpec.js @@ -1,13 +1,12 @@ -var app = window.app; -var expression = app.get('expression'); +var expression = require('../../src/app/expression'); +var parser = expression.parser; -describe("expression parse", function() { +describe("expression parser", function() { var shouldParse = ['0x2>>1', '1 2 3', '0x1 1 2 3 5', '0x1>>0x2', '1|2', '-9', '-1|-2', '~3']; - it("should be able to parse", function() { shouldParse.forEach(function(expr) { - expect(expression.canParse(expr)).toBe(true, 'expr: ' + expr); + expect(parser.canParse(expr)).toBe(true, 'expr: ' + expr); }) }); @@ -29,7 +28,7 @@ describe("expression parse", function() { for(input in expressionCases) { console.log('case: ' + input); - var actual = expression.parse(input); + var actual = parser.parse(input); var expected = expressionCases[input]; expect(actual).toBeDefined(); expect(actual).not.toBe(null); @@ -58,7 +57,7 @@ describe("expression parse", function() { it("should parse hexadecimal expressions", function() { var input, i; for(input in listCases) { - var actual = expression.parse(input); + var actual = parser.parse(input); var expected = listCases[input]; for(i =0; i