UNPKG

biojs-io-gff

Version:

A GFF (general feature format) parser

109 lines (94 loc) 3.39 kB
/* * biojs-io-gff * https://github.com/greenify/biojs-io-gff * * Copyright (c) 2014 greenify * Licensed under the Apache 2 license. */ var chai = require('chai'); var assert = chai.assert; var equal = assert.deepEqual; var gff = require('../'); var utils= require('../lib/utils'); var fs = require('fs'); suite("GFF parser"); test("test with fs", function(done) { var expectedResult = JSON.parse(fs.readFileSync(__dirname + '/dummy.json', 'utf8')); fs.readFile(__dirname + '/dummy.gff','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseLines(data).features; obj = JSON.parse(JSON.stringify(obj)); equal(obj[0], expectedResult[0]); done(); }); }); test("test with fer1", function(done) { var expectedResult = JSON.parse(fs.readFileSync(__dirname + '/fer1.json', 'utf8')); fs.readFile(__dirname + '/fer1.gff','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseLines(data).features; obj = JSON.parse(JSON.stringify(obj)); equal(obj[0], expectedResult[0]); done(); }); }); test("test with eden", function(done) { var expectedResult = JSON.parse(fs.readFileSync(__dirname + '/eden.json', 'utf8')); fs.readFile(__dirname + '/eden.gff3','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseLines(data).features; obj = JSON.parse(JSON.stringify(obj)); equal(obj[0], expectedResult[0]); done(); }); }); test("test import/export", function(done) { fs.readFile(__dirname + '/import.gff3','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseLines(data).features; equal(gff.exportLines(obj).split("\n"), data.split("\n").filter(function(e){ return e; })); done(); }); }); test("test import/export: seqs", function(done) { fs.readFile(__dirname + '/import.gff3','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseSeqs(data).seqs; equal(gff.exportSeqs(obj).split("\n"), data.split("\n").filter(function(e){ return e; })); done(); }); }); test("test with jalview", function(done) { var expectedResult = JSON.parse(fs.readFileSync(__dirname + '/eden.json', 'utf8')); fs.readFile(__dirname + '/feature.jalview','utf8', function(err,data){ if (err) return assert.fail(err); var obj = gff.parseLines(data); var features = JSON.parse(JSON.stringify(obj.features)); equal("#009ba5", obj.config.colors["signal peptide"]); equal(9, Object.keys(obj.config.colors).length); equal("jalview", obj.config.type); equal(obj.features.length, 10); //equal(obj[0], expectedResult[0]); done(); }); }); test("test rgb", function() { equal(utils.rgbToHex([0,0,0]), "#000000"); equal(utils.rgbToHex([0,65,0]), "#004100"); equal(utils.rgbToHex([0,65,77]), "#00414d"); equal(utils.rgbToHex([123,65,77]), "#7b414d"); equal(utils.rgbToHex([255,255,255]), "#ffffff"); }); test("test with features", function(done) { fs.readFile(__dirname + '/eden.gff3','utf8', function(err,data){ if (err) return console.log(err); var obj = gff.parseSeqs(data).seqs; equal(1, Object.keys(obj).length); equal(23, obj.ctg123.length); done(); }); });