Skip to content

Commit

Permalink
Fix tests, fetch broken line from json
Browse files Browse the repository at this point in the history
  • Loading branch information
msfeldstein committed May 12, 2017
1 parent f53a98d commit 1225563
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/ISFParser.js
Expand Up @@ -47,12 +47,12 @@ ISFParser.prototype.parse = function parse(rawFragmentShader, rawVertexShader) {
this.inferFilterType();
this.isfVersion = this.inferISFVersion();
} catch (e) {
console.log("Error", e)
this.valid = false;
this.error = e;
this.inputs = [];
this.categories = [];
this.credit = '';
this.errorLine = e.lineNumber;
}
};

Expand Down
12 changes: 11 additions & 1 deletion src/MetadataExtractor.js
Expand Up @@ -14,7 +14,17 @@ module.exports = function MetadataExtractor(rawFragmentShader) {
try {
metadata = JSON.parse(metadataString);
} catch (e) {
throw new Error('Something is wrong with your metadata');
const tokens = e.message.split(' ');
const position = parseInt(tokens[tokens.length - 1], 10);
let lineNumber = 0;
for (let i = 0; i < position; i++) {
if (metadataString[i] === '\n') {
lineNumber++;
}
}
const lineError = new Error('Something is wrong with your metadata at position ' + position + ' and line ' + lineNumber);
lineError.lineNumber = lineNumber;
throw lineError;
}

const startIndex = rawFragmentShader.indexOf('/*');
Expand Down
1 change: 1 addition & 0 deletions src/main.js
@@ -1,3 +1,4 @@
exports.Renderer = require('./ISFRenderer');
exports.Parser = require('./ISFParser');
exports.Upgrader = require('./ISFUpgrader');
exports.MetadataExtractor = require('./MetadataExtractor');
28 changes: 28 additions & 0 deletions tests/assets/bad-metadata.fs
@@ -0,0 +1,28 @@
/*{
"DESCRIPTION": "Error on line 6/7, missing comma",
"CREDIT": "by VIDVOX",
"CATEGORIES": [
"Glitch"
]
"INPUTS": [
{
"TYPE": "float",
"NAME": "xPos",
"MIN": 0,
"MAX": 1
}
],
}*/



void main()
{
if (PASSINDEX == 0) {
float val = 1.0 - abs(xPos - isf_FragNormCoord.x) * 13.0;
val = max(val, 0.0);
gl_FragColor = vec4(val, val, val, val) + IMG_NORM_PIXEL(buffer1, isf_FragNormCoord.xy);
} else {
gl_FragColor = IMG_NORM_PIXEL(buffer1, isf_FragNormCoord.xy);
}
}
12 changes: 11 additions & 1 deletion tests/parser-test.js
@@ -1,6 +1,6 @@
var test = require('tape')
var fs = require('fs')
var ISFParser = require('../lib/ISFParser')
var ISFParser = require('../src/ISFParser')

function assetLoad(name) {
return fs.readFileSync('./tests/assets/' + name).toString()
Expand Down Expand Up @@ -41,3 +41,13 @@ test('Buffers correctly marked as persistent', function(t) {
t.equal(passes[passes.length - 1].persistent, false, "Non persistent buffered interpreted as such")
t.end()
})

test('Bad metadata gives error line', function(t) {
var src = assetLoad('bad-metadata.fs')
var parser = new ISFParser();
// t.throws(function() {
parser.parse(src)
// })
t.equal(0, 0)
t.end()
})
8 changes: 5 additions & 3 deletions tests/renderer-test.js
Expand Up @@ -5,7 +5,9 @@ var savePixels = require("save-pixels")
var gl = require('gl')
var ndarray = require('ndarray')
var imageDiff = require('image-diff')
var ISFRenderer = require('../lib/ISFRenderer')
var ISFRenderer = require('../src/ISFRenderer')

if (!fs.existsSync('tmp')) fs.mkdirSync('tmp')

function assetLoad(name) {
return fs.readFileSync('./tests/assets/' + name).toString()
Expand All @@ -26,14 +28,14 @@ function matchFilterToExpected(src, expected, callbacks) {
var pixels = new Uint8Array(width * height * 4)
ctx.readPixels(0, 0, width, height, ctx.RGBA, ctx.UNSIGNED_BYTE, pixels)
var nd = ndarray(pixels, [width, height, 4])
var filename = "tmp/" + Math.random() + ".png"
var filename = "./tmp/" + Math.random() + ".png"
var writableStream = fs.createWriteStream(filename)
savePixels(nd, "png").pipe(writableStream)
var expectedFilename = expected.split('/')[expected.split('/').length - 1]
imageDiff({
actualImage: filename,
expectedImage: expected,
diffImage: 'tmp/diff.' + expectedFilename
diffImage: './tmp/diff.' + expectedFilename
}, function(err, areSame) {
if (err) throw err
callbacks.finished(areSame)
Expand Down
4 changes: 2 additions & 2 deletions tests/upgrader-test.js
@@ -1,7 +1,7 @@
var test = require('tape')
var fs = require('fs')
var ISFUpgrader = require('../lib/ISFUpgrader')
var Parser = require('../lib/ISFParser')
var ISFUpgrader = require('../src/ISFUpgrader')
var Parser = require('../src/ISFParser')

function assetLoad(name) {
return fs.readFileSync('./tests/assets/' + name).toString()
Expand Down

0 comments on commit 1225563

Please sign in to comment.