test/DynamicGaussianPuff.Spec.js
/**
* Created by austin on 6/22/16.
*/
"use strict";
import chai from 'chai';
const db = require('../dist/Dirtybomb');
chai.should();
describe("DynamicGaussianPuff", function() {
let puff;
describe("Constructors", () => {
let atm = new db.Dispersion.Atmosphere([1, 1], .5, 65, 288);
let source = new db.Dispersion.Source(
db.Dispersion.SourceType.POINT,
Number.POSITIVE_INFINITY,
20,
5,
350,
5
);
it('should use the default center', () => {
puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50);
puff.center.x.should.be.equal(0);
puff.center.y.should.be.equal(0);
});
it('should take explicit center', () => {
puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50, [1, 1, 1]);
puff.center.x.should.be.equal(1);
puff.center.y.should.be.equal(1);
});
});
describe("Distance functions", () => {
beforeEach((done) => {
let atm = new db.Dispersion.Atmosphere([1, 1], .5, 65, 288);
let source = new db.Dispersion.Source(
db.Dispersion.SourceType.POINT,
Number.POSITIVE_INFINITY,
20,
5,
350,
5
);
puff = new db.Dispersion.DynamicGaussianPuff(atm, source, 50);
done();
});
it('should calculate distance traveled from start', () => {
puff.distanceFromStart.should.be.equal(0);
puff.step(60); // Move one minute
puff.distanceFromStart.should.be.above(0);
});
it('should not mutate data', () => {
puff.distanceFromStart.should.be.equal(0);
puff.step(60); // Move one minute
let orig = puff.center.clone();
puff.distanceFromStart.should.be.above(0);
orig.equals(puff.center).should.be.true;
});
it('should calculate distance total traveled with changing wind', () => {
let atm = puff.atmosphere;
atm.setWindSpeed([2, 2]);
puff.step(60);
atm.setWindSpeed([1,4]);
puff.step(60);
atm.setWindSpeed([2, 8]);
puff.step(60);
puff.distanceTraveled.should.be.above(puff.distanceFromStart);
console.log(`Puff has traveled ${puff.distanceTraveled}m total`);
});
});
});