| var HELPER_MATCHERS = (function() { |
| var EPSILON = 0.00001; |
| |
| return { |
| /* |
| Returns true if `actual` has the same length as `expected`, and |
| if each element of both arrays is within 0.000001 of each other. |
| This is a way to check for "equal enough" conditions, as a way |
| of working around floating point imprecision. |
| */ |
| toBeEqualish: function(expected) { |
| if (typeof(this.actual) == 'number') |
| return Math.abs(this.actual - expected) < EPSILON; |
| |
| if (this.actual.length != expected.length) return false; |
| for (var i = 0; i < this.actual.length; i++) { |
| if (isNaN(this.actual[i]) !== isNaN(expected[i])) |
| return false; |
| if (Math.abs(this.actual[i] - expected[i]) >= EPSILON) |
| return false; |
| } |
| return true; |
| } |
| }; |
| })(); |
| |
| beforeEach(function() { |
| this.addMatchers(HELPER_MATCHERS); |
| }); |
| |
| if (typeof(global) != 'undefined') |
| global.HELPER_MATCHERS = HELPER_MATCHERS; |