123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /* eslint-disable no-shadow */
- var test = require('tap').test;
- var dimensions = 2;
- var createSpringForce = require('../lib/codeGenerators/generateCreateSpringForce')(dimensions);
- var Body = require('../lib/codeGenerators/generateCreateBody')(dimensions);
- var Spring = require('../lib/spring');
- var random = require('ngraph.random')(42);
- test('Initialized with default value', function (t) {
- t.throws(() => createSpringForce());
- t.end();
- });
- test('Should bump bodies at same position', function (t) {
- var body1 = new Body(0, 0);
- var body2 = new Body(0, 0);
- // length between two bodies is 2, while ideal length is 1. Each body
- // should start moving towards each other after force update
- var idealLength = 1;
- var spring = new Spring(body1, body2, idealLength);
- var springForce = createSpringForce({springCoefficient: 0.1, springLength: 1}, random);
- springForce.update(spring);
- t.ok(body1.force.x > 0, 'Body 1 should go right');
- t.ok(body2.force.x < 0, 'Body 2 should go left');
- t.end();
- });
- test('Check spring force direction', function (t) {
- var springForce = createSpringForce({springCoefficient: 0.1, springLength: 1});
- t.test('Should contract two bodies when ideal length is smaller than actual', function (t) {
- var body1 = new Body(-1, 0);
- var body2 = new Body(+1, 0);
- // length between two bodies is 2, while ideal length is 1. Each body
- // should start moving towards each other after force update
- var idealLength = 1;
- var spring = new Spring(body1, body2, idealLength);
- springForce.update(spring);
- t.ok(body1.force.x > 0, 'Body 1 should go right');
- t.ok(body2.force.x < 0, 'Body 2 should go left');
- t.end();
- });
- t.test('Should repel two bodies when ideal length is larger than actual', function (t) {
- var body1 = new Body(-1, 0);
- var body2 = new Body(+1, 0);
- // length between two bodies is 2, while ideal length is 1. Each body
- // should start moving towards each other after force update
- var idealLength = 3;
- var spring = new Spring(body1, body2, idealLength);
- springForce.update(spring);
- t.ok(body1.force.x < 0, 'Body 1 should go left');
- t.ok(body2.force.x > 0, 'Body 2 should go right');
- t.end();
- });
- t.end();
- });
|