123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376 |
- /* eslint-disable */
- /* global $, describe, it, xit, xdescribe, after, afterEach, expect*/
- describe("unit tests for the log scale functions", function() {
- var placeholder;
- beforeEach(function() {
- placeholder = setFixtures('<div id="test-container" style="width: 800px;height: 400px">')
- .find('#test-container');
- });
- it('should use linear scale for low dynamic range intervals', function() {
- var plot = $.plot(placeholder, [], {
- xaxes: [{
- min: 10,
- max: 11,
- }]
- }),
- axis, ticks;
- axis = plot.getAxes().xaxis;
- ticks = $.plot.logTicksGenerator(plot, axis, 10);
- expect(ticks).toEqual([10, 10.1, 10.2, 10.3, 10.4, 10.5, 10.6, 10.7, 10.8, 10.9, 11]);
- });
- xit('should use mixed scale for medium dynamic range intervals', function() {
- var plot = $.plot(placeholder, [], {
- xaxes: [{
- min: 0.2,
- max: 8,
- }]
- }),
- axis, ticks,
- outputArray = [0.2, 0.4, 0.6, 1, 2, 3, 5, 8 ];
- axis = plot.getAxes().xaxis;
- ticks = $.plot.logTicksGenerator(plot,axis, 10);
- for(i = 0; i < ticks.length; i++) {
- expect(ticks[i]).toBeCloseTo(outputArray[i]);
- }
- });
- it('should use log scales for high dynamic range intervals', function() {
- var plot = $.plot(placeholder, [], {
- xaxes: [{
- min: 0.0001,
- max: 10000,
- }]
- }),
- axis, ticks,
- axis = plot.getAxes().xaxis;
- ticks = $.plot.logTicksGenerator(plot,axis, 10);
- expect(ticks).toEqual([0.0001, 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10000]);
- });
- it('should format numbers according to their natural precision', function() {
- var plot = $.plot(placeholder, [], {
- xaxes: [{mode: 'log'}]
- }),
- xaxis = plot.getXAxes()[0],
- logFormatter = xaxis.tickFormatter,
- testVector = [
- [1.7000000000000002, '1.7'],
- [17.000000000000002, '17'],
- [172, '172'],
- [1.000, '1'],
- [0.0004, '0.0004'],
- [0.00004, '4e-5'],
- [3.1623E-21, '3e-21']
- ];
- testVector.forEach(function (t) {
- var inputValue = t[0],
- expectedValue = t[1];
- expect(logFormatter(inputValue, xaxis)).toBe(expectedValue);
- });
- });
- it('should custom the specified precision of endpoints', function(){
- var plot = $.plot(placeholder, [], {
- xaxes: [{mode: 'log'}]
- }),
- xaxis = plot.getXAxes()[0],
- logFormatter = xaxis.tickFormatter,
- testVector = [
- [1.7000000000000002, '1.700', 3],
- [1.7000000000000002, '1.70', 2],
- [17.000000000000002, '17.000', 3],
- [172, '172.0', 1],
- [1.000, '1.000', 3],
- [1, '1.00', 2],
- [0.00004, '4.0e-5', 3],
- [4.13567003E-8, '4.1e-8', 9],
- [413.567003E-8, '4.136e-6', 9],
- [3.1623E-21, '3e-21', 21],
- [4.13567003E+8, '4e8', -9],
- [413.567003E+8, '4.1e10', -9],
- [3.1623E+21, '3.2e21', -20],
- [0, '0', -1]
- ];
- testVector.forEach(function (t) {
- var inputValue = t[0],
- expectedValue = t[1],
- precision = t[2];
- expect(logFormatter(inputValue, xaxis, precision)).toBe(expectedValue);
- });
- });
- it('should handle intervals which starts close to 0', function() {
- var testVector = [
- [0, 50, [0.1, 100]],
- [1E-40, 1.01, [1e-35, 10]],
- [1E-40, 1E+40, [1e-39, 1e40]],
- [Number.MIN_VALUE, 1e-20, [10e-273, 1e-20]]
- ];
- testVector.forEach(function (t) {
- var min = t[0],
- max = t[1],
- expectedTicks = t[2],
- plot = $.plot(placeholder, [], {
- xaxes: [{
- min: min,
- max: max,
- }]
- }),
- axis, ticks;
- axis = plot.getAxes().xaxis;
- ticks = $.plot.logTicksGenerator(plot, axis);
- expect(ticks[0]).toBeCloseTo(expectedTicks[0], 10);
- expect(ticks[ticks.length - 1]).toBeCloseTo(expectedTicks[1], 10);
- });
- });
- it('should set axis.min to be less than axis.max', function() {
- var plot = $.plot(placeholder, [[0, 1, 2, 3]], {
- xaxes: [{
- mode: 'log',
- offset : { below: -1, above: -1 },
- max: 1
- }]
- }),
- axis, ticks,
- axis = plot.getAxes().xaxis;
- expect(axis.min).toBeLessThan(axis.max);
- });
- it('should set axis.max to default max if less then axis.min', function() {
- var plot = $.plot(placeholder, [[0, 1, 2, 3]], {
- xaxes: [{
- mode: 'log',
- offset : { below: -5, above: -5 },
- max: 1
- }]
- }),
- axis, ticks,
- axis = plot.getAxes().xaxis;
- expect(axis.min).toBe(0.1);
- expect(axis.max).toBe(1);
- });
- it('should set min of axis with no data associated with it to be greater than 0', function() {
- var plot = $.plot(placeholder, [[0, 1, 2, 3]], {
- xaxes: [
- {
- mode: 'log',
- min: 0,
- max: 10
- },
- {
- mode: 'log',
- autoScale: 'loose',
- min: 0,
- max: 10,
- show: true
- }]
- }),
- axis,
- axis = plot.getXAxes()[1];
- expect(axis.min).toBeGreaterThan(0);
- });
- });
- describe("integration tests for log scale functions", function() {
- var placeholder;
- var compareNumbers = function(a, b) {
- return a - b;
- }
- var queryPlotForYTicks = function() {
- var actualTicks = [];
- var yAxisDivs = $('.yAxis');
- expect(yAxisDivs.length).toBe(1);
- var childDivs = yAxisDivs.find('.tickLabel');
- childDivs.each(function(i, e) {
- actualTicks.push(e.textContent);
- });
- return actualTicks.sort(compareNumbers);
- };
- beforeEach(function() {
- placeholder = setFixtures('<div id="test-container" style="width: 600px;height: 400px">')
- .find('#test-container');
- });
- it('should use linear scale for low dynamic range intervals', function() {
- var lineardata1 = [
- [0, 1],
- [1, 1.1],
- [2, 1.2],
- [3, 1.3],
- [4, 1.4],
- [5, 1.5],
- [6, 1.6],
- [7, 1.7],
- [8, 1.8],
- [9, 1.9],
- [10, 2]
- ];
- $.plot(placeholder, [lineardata1], {
- yaxis: {
- mode: 'log',
- autoScale: 'exact'
- }
- });
- expect(queryPlotForYTicks()).toEqual(['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6', '1.7', '1.8', '1.9', '2']);
- });
- it('should use log scales for high dynamic range intervals', function() {
- var logdata1 = [
- [0, 0.0001],
- [1, 0.001],
- [2, 0.01],
- [3, 0.1],
- [4, 1],
- [5, 10],
- [6, 100],
- [7, 1000],
- [8, 10000]
- ];
- $.plot(placeholder, [logdata1], {
- yaxis: {
- mode: 'log',
- autoScale: 'exact'
- }
- });
- expect(queryPlotForYTicks()).toEqual(['0.0001', '0.001', '0.01', '0.1', '1', '10', '100', '1000', '10000']);
- });
- it('should allow a user specified tick formatter', function() {
- var logdata1 = [
- [0, 0.0001],
- [1, 0.001],
- [2, 0.01],
- [3, 0.1],
- [4, 1],
- [5, 10],
- [6, 100],
- [7, 1000],
- [8, 10000]
- ];
- $.plot(placeholder, [logdata1], {
- yaxis: {
- mode: 'log',
- tickFormatter: function () {
- return 'log tick';
- },
- autoScale: 'exact'
- }
- });
- expect(queryPlotForYTicks()).toEqual(['log tick', 'log tick', 'log tick', 'log tick', 'log tick', 'log tick', 'log tick', 'log tick', 'log tick']);
- });
- it('should set the minimum of the logaxis to minimum datapoint between 0 and 0.1', function() {
- var logdata1 = [
- [0, 0],
- [1, 0.0001],
- [2, 0.001],
- [3, 0.01],
- [4, 0.1],
- [5, 1],
- [6, 10],
- [7, 100]
- ];
- var plot = $.plot(placeholder, [logdata1], {
- xaxis: {
- mode: 'log',
- autoScale: 'exact'
- },
- yaxis: {
- mode: 'log',
- autoScale: 'exact'
- }
- }),
- axes = plot.getAxes();
- expect(axes.xaxis.min).toBe(0.1);
- expect(axes.yaxis.min).toBe(0.0001);
- });
- it('should multiply the possible ticks with 5 if the original interval is too little', function() {
- var logdata = [
- [[0, 1E40], [1, 4E40], [2, 8E40], [3, 1E41], [4, 2E41], [5, 4E41]],
- [[0, 1000], [1, 1010], [2, 1E4], [3, 1E5]],
- [[0, 1], [1, 3], [2, 10], [3, 30], [4, 40], [5, 50]]
- ],
- expectedTicks = [
- ['1e40', '5e40', '1e41'],
- ['1000', '5000', '10000', '50000', '100000'],
- ['1', '5', '10', '50']
- ],
- plot, i;
- for (i = 0; i < logdata.length; i++) {
- plot = $.plot(placeholder, [logdata[i]], {
- yaxis: {
- mode: 'log',
- autoScale: 'exact'
- }
- }),
- ticks = queryPlotForYTicks();
- expect(queryPlotForYTicks()).toEqual(expectedTicks[i]);
- }
- });
- it('should use only power of ten for large intervals', function() {
- var logdata = [
- [[0, 1], [1, 4E20], [2, 8E30], [3, 4E41]],
- [[0, 1000], [1, 1E5], [2, 1E7], [3, 1E10]],
- [[0, 1e-12], [1, 1e-5], [2, 10], [3, 30], [4, 40], [5, 500]]
- ],
- expectedTicks = [
- ['100', '1000000', '1e10', '1e14', '10e17', '1e22', '1e26', '1e30', '1e34', '1e38'],
- ['1000', '10000', '100000', '1000000', '10000000', '1e8', '10e8', '1e10'],
- ['1e-11', '1e-9', '1e-7', '1e-5', '0.001', '0.1', '10']
- ],
- plot, i;
- for (i = 0; i < logdata.length; i++) {
- plot = $.plot(placeholder, [logdata[i]], {
- yaxis: {
- mode: 'log',
- autoScale: 'exact'
- }
- }),
- ticks = queryPlotForYTicks();
- expect(queryPlotForYTicks()).toEqual(expectedTicks[i]);
- }
- });
- });
|