| // Copyright 2007 The Closure Library Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS-IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| goog.provide('goog.ui.ServerChartTest'); |
| goog.setTestOnly('goog.ui.ServerChartTest'); |
| |
| goog.require('goog.Uri'); |
| goog.require('goog.events'); |
| goog.require('goog.testing.jsunit'); |
| goog.require('goog.ui.ServerChart'); |
| |
| function testSchemeIndependentBarChartRequest() { |
| var bar = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, |
| 180, |
| 104, |
| null); |
| tryToCreateBarChart(bar); |
| var uri = bar.getUri(); |
| var schemeIndependentUri = new goog.Uri( |
| goog.ui.ServerChart.CHART_SERVER_SCHEME_INDEPENDENT_URI); |
| assertEquals('', uri.getScheme()); |
| assertEquals(schemeIndependentUri.getDomain(), uri.getDomain()); |
| } |
| |
| function testHttpBarChartRequest() { |
| var bar = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, |
| 180, |
| 104, |
| null, |
| goog.ui.ServerChart.CHART_SERVER_HTTP_URI); |
| tryToCreateBarChart(bar); |
| var uri = bar.getUri(); |
| var httpUri = new goog.Uri(goog.ui.ServerChart.CHART_SERVER_HTTP_URI); |
| assertEquals('http', uri.getScheme()); |
| assertEquals(httpUri.getDomain(), uri.getDomain()); |
| } |
| |
| function testHttpsBarChartRequest() { |
| var bar = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, |
| 180, |
| 104, |
| null, |
| goog.ui.ServerChart.CHART_SERVER_HTTPS_URI); |
| tryToCreateBarChart(bar); |
| var uri = bar.getUri(); |
| var httpsUri = new goog.Uri(goog.ui.ServerChart.CHART_SERVER_HTTPS_URI); |
| assertEquals('https', uri.getScheme()); |
| assertEquals(httpsUri.getDomain(), uri.getDomain()); |
| } |
| |
| function testMinValue() { |
| var pie = new goog.ui.ServerChart(goog.ui.ServerChart.ChartType.PIE3D, |
| 180, 104); |
| pie.addDataSet([1, 2, 3], '000000'); |
| assertEquals(pie.getMinValue(), 0); |
| |
| var line = new goog.ui.ServerChart(goog.ui.ServerChart.ChartType.LINE, |
| 180, 104); |
| line.addDataSet([1, 2, 3], '000000'); |
| assertEquals(line.getMinValue(), 1); |
| } |
| |
| function testMargins() { |
| var pie = new goog.ui.ServerChart(goog.ui.ServerChart.ChartType.PIE3D, |
| 180, 104); |
| pie.setMargins(1, 2, 3, 4); |
| assertEquals('1,2,3,4', |
| pie.getUri().getParameterValue(goog.ui.ServerChart.UriParam.MARGINS)); |
| } |
| |
| function testSetParameterValue() { |
| var scatter = new goog.ui.ServerChart(goog.ui.ServerChart.ChartType.SCATTER, |
| 180, 104); |
| var key = goog.ui.ServerChart.UriParam.DATA_COLORS; |
| var value = '000000,FF0000|00FF00|0000FF'; |
| scatter.setParameterValue(key, value); |
| |
| assertEquals('unexpected parameter value', value, |
| scatter.getUri().getParameterValue(key)); |
| |
| scatter.removeParameter(key); |
| |
| assertUndefined('parameter not removed', |
| scatter.getUri().getParameterValue(key)); |
| } |
| |
| function testTypes() { |
| var chart; |
| |
| chart = new goog.ui.ServerChart(goog.ui.ServerChart.ChartType.CONCENTRIC_PIE, |
| 180, 104); |
| |
| assertTrue(chart.isPieChart()); |
| assertFalse(chart.isBarChart()); |
| assertFalse(chart.isMap()); |
| assertFalse(chart.isLineChart()); |
| |
| chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR, 180, 104); |
| |
| assertFalse(chart.isPieChart()); |
| assertTrue(chart.isBarChart()); |
| assertTrue(chart.isHorizontalBarChart()); |
| assertTrue(chart.isGroupedBarChart()); |
| assertFalse(chart.isVerticalBarChart()); |
| assertFalse(chart.isStackedBarChart()); |
| |
| chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| assertTrue(chart.isBarChart()); |
| assertTrue(chart.isStackedBarChart()); |
| assertFalse(chart.isGroupedBarChart()); |
| |
| chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.XYLINE, 180, 104); |
| assertTrue('I thought lxy was a line chart', chart.isLineChart()); |
| assertFalse('lxy is definitely not a pie chart', chart.isPieChart()); |
| } |
| |
| function testBarChartRequest() { |
| var bar = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| tryToCreateBarChart(bar); |
| var httpUri = new goog.Uri(goog.ui.ServerChart.CHART_SERVER_URI); |
| var uri = bar.getUri(); |
| assertEquals(httpUri.getDomain(), uri.getDomain()); |
| } |
| |
| function tryToCreateBarChart(bar) { |
| bar.addDataSet([8, 23, 7], '008000'); |
| bar.addDataSet([31, 11, 7], 'ffcc33'); |
| bar.addDataSet([2, 43, 70, 3, 43, 74], '3072f3'); |
| bar.setLeftLabels(['', '20K', '', '60K', '', '100K']); |
| bar.setXLabels(['O', 'N', 'D']); |
| bar.setMaxValue(100); |
| var uri = bar.getUri(); |
| assertEquals( |
| 'br', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TYPE)); |
| assertEquals( |
| '180x104', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.SIZE)); |
| assertEquals( |
| 'e:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| assertEquals( |
| '008000,ffcc33,3072f3', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS)); |
| assertEquals( |
| '100K||60K||20K|', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.LEFT_Y_LABELS)); |
| assertEquals( |
| 'O|N|D', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.X_LABELS)); |
| } |
| |
| function testClearDataSets() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| tryToCreateBarChart(chart); |
| var uriBefore = chart.getUri(); |
| chart.clearDataSets(); |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| tryToCreateBarChart(chart); |
| var uriAfter = chart.getUri(); |
| assertEquals(uriBefore.getScheme(), uriAfter.getScheme()); |
| assertEquals(uriBefore.getDomain(), uriAfter.getDomain()); |
| assertEquals(uriBefore.getPath(), uriAfter.getPath()); |
| } |
| |
| function testMultipleDatasetsTextEncoding() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| chart.setEncodingType(goog.ui.ServerChart.EncodingType.TEXT); |
| chart.addDataSet([0, 25, 100], '008000'); |
| chart.addDataSet([12, 2, 7.1], '112233'); |
| chart.addDataSet([82, 16, 2], '3072f3'); |
| var uri = chart.getUri(); |
| assertEquals( |
| 't:0,25,100|12,2,7.1|82,16,2', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| } |
| |
| function testVennDiagramRequest() { |
| var venn = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.VENN, 300, 200); |
| venn.setTitle('Google Employees'); |
| var weights = [80, // Size of circle A |
| 60, // Size of circle B |
| 40, // Size of circle C |
| 20, // Overlap of A and B |
| 20, // Overlap of A and C |
| 20, // Overlap of B and C |
| 5]; // Overlap of A, B and C |
| var labels = [ |
| 'C Hackers', // Label for A |
| 'LISP Gurus', // Label for B |
| 'Java Jockeys']; // Label for C |
| venn.setVennSeries(weights, labels); |
| var uri = venn.getUri(); |
| var httpUri = new goog.Uri(goog.ui.ServerChart.CHART_SERVER_URI); |
| assertEquals(httpUri.getDomain(), uri.getDomain()); |
| assertEquals( |
| 'v', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TYPE)); |
| assertEquals( |
| '300x200', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.SIZE)); |
| assertEquals( |
| 'e:..u7d3MzMzMzAA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| assertEquals( |
| 'Google Employees', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TITLE)); |
| assertEquals( |
| labels.join('|'), |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.LEGEND_TEXTS)); |
| } |
| |
| |
| function testSparklineChartRequest() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([8, 23, 7], '008000'); |
| chart.addDataSet([31, 11, 7], 'ffcc33'); |
| chart.addDataSet([2, 43, 70, 3, 43, 74], '3072f3'); |
| chart.setLeftLabels(['', '20K', '', '60K', '', '100K']); |
| chart.setXLabels(['O', 'N', 'D']); |
| chart.setMaxValue(100); |
| var uri = chart.getUri(); |
| assertEquals( |
| 'ls', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TYPE)); |
| assertEquals( |
| '300x200', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.SIZE)); |
| assertEquals( |
| 'e:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| assertEquals( |
| '008000,ffcc33,3072f3', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS)); |
| assertEquals( |
| '100K||60K||20K|', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.LEFT_Y_LABELS)); |
| assertEquals( |
| 'O|N|D', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.X_LABELS)); |
| } |
| |
| function testLegendPositionRequest() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([0, 100], '008000', 'foo'); |
| chart.setLegendPosition(goog.ui.ServerChart.LegendPosition.TOP); |
| assertEquals('t', chart.getLegendPosition()); |
| var uri = chart.getUri(); |
| assertEquals( |
| 't', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.LEGEND_POSITION)); |
| } |
| |
| function testSetGridParameter() { |
| var gridArg = '20,20,4,4'; |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([0, 100], '008000', 'foo'); |
| chart.setGridParameter(gridArg); |
| assertEquals(gridArg, chart.getGridParameter()); |
| var uri = chart.getUri(); |
| assertEquals( |
| gridArg, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.GRID)); |
| } |
| |
| function testSetMarkerParameter() { |
| var markerArg = 's,FF0000,0,-1,5'; |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([0, 100], '008000', 'foo'); |
| chart.setMarkerParameter(markerArg); |
| assertEquals(markerArg, chart.getMarkerParameter()); |
| var uri = chart.getUri(); |
| assertEquals( |
| markerArg, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.MARKERS)); |
| } |
| |
| function testNullDataPointRequest() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([40, null, 10], '008000'); |
| assertEquals(10, chart.getMinValue()); |
| assertEquals(40, chart.getMaxValue()); |
| var uri = chart.getUri(); |
| assertEquals( |
| 'e:..__AA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| |
| chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| chart.addDataSet([-5, null, -1], '008000'); |
| assertEquals(-5, chart.getMinValue()); |
| assertEquals(-1, chart.getMaxValue()); |
| uri = chart.getUri(); |
| assertEquals( |
| 'e:AA__..', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| } |
| |
| function testSetBarSpaceWidths() { |
| var noSpaceBetweenBarsSpecified = '20'; |
| var noSpaceBetweenBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR); |
| noSpaceBetweenBarsChart.setBarSpaceWidths(20); |
| var uri = noSpaceBetweenBarsChart.getUri(); |
| assertEquals(noSpaceBetweenBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var spaceBetweenBarsSpecified = '20,5'; |
| var spaceBetweenBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| spaceBetweenBarsChart.setBarSpaceWidths(20, 5); |
| var uri = spaceBetweenBarsChart.getUri(); |
| assertEquals(spaceBetweenBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var spaceBetweenGroupsSpecified = '20,5,6'; |
| var spaceBetweenGroupsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| spaceBetweenGroupsChart.setBarSpaceWidths(20, 5, 6); |
| var uri = spaceBetweenGroupsChart.getUri(); |
| assertEquals(spaceBetweenGroupsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var groupsButNotBarsSpecified = '20,6'; |
| var groupsButNotBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| groupsButNotBarsChart.setBarSpaceWidths(20, undefined, 6); |
| var uri = groupsButNotBarsChart.getUri(); |
| assertEquals(groupsButNotBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| } |
| |
| function testSetAutomaticBarWidth() { |
| var noSpaceBetweenBarsSpecified = 'a'; |
| var noSpaceBetweenBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR); |
| noSpaceBetweenBarsChart.setAutomaticBarWidth(); |
| var uri = noSpaceBetweenBarsChart.getUri(); |
| assertEquals(noSpaceBetweenBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var spaceBetweenBarsSpecified = 'a,5'; |
| var spaceBetweenBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| spaceBetweenBarsChart.setAutomaticBarWidth(5); |
| uri = spaceBetweenBarsChart.getUri(); |
| assertEquals(spaceBetweenBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var spaceBetweenGroupsSpecified = 'a,5,6'; |
| var spaceBetweenGroupsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| spaceBetweenGroupsChart.setAutomaticBarWidth(5, 6); |
| uri = spaceBetweenGroupsChart.getUri(); |
| assertEquals(spaceBetweenGroupsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| |
| var groupsButNotBarsSpecified = 'a,6'; |
| var groupsButNotBarsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| groupsButNotBarsChart.setAutomaticBarWidth(undefined, 6); |
| uri = groupsButNotBarsChart.getUri(); |
| assertEquals(groupsButNotBarsSpecified, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT)); |
| } |
| |
| function testSetDataScaling() { |
| var dataScalingArg = '0,160'; |
| var dataArg = 't:0,50,100,130'; |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR, 300, 200); |
| chart.addDataSet([0, 50, 100, 130], '008000'); |
| chart.setDataScaling(0, 160); |
| var uri = chart.getUri(); |
| assertEquals(dataScalingArg, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA_SCALING)); |
| assertEquals( |
| dataArg, |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| } |
| |
| function testSetMultiAxisLabelStyle() { |
| var noFontSizeChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| noFontSizeChart.addDataSet([0, 50, 100, 130], '008000'); |
| var axisNumber = noFontSizeChart.addMultiAxis( |
| goog.ui.ServerChart.MultiAxisType.LEFT_Y_AXIS); |
| var noFontSizeArgs = axisNumber + ',009000'; |
| noFontSizeChart.setMultiAxisLabelStyle(axisNumber, '009000'); |
| var noFontSizeUri = noFontSizeChart.getUri(); |
| assertEquals(noFontSizeArgs, |
| noFontSizeUri.getParameterValue( |
| goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE)); |
| |
| var noAlignChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| noAlignChart.addDataSet([0, 50, 100, 130], '008000'); |
| var xAxisNumber = noAlignChart.addMultiAxis( |
| goog.ui.ServerChart.MultiAxisType.X_AXIS); |
| var yAxisNumber = noAlignChart.addMultiAxis( |
| goog.ui.ServerChart.MultiAxisType.LEFT_Y_AXIS); |
| var noAlignArgs = xAxisNumber + ',009000,12|' + yAxisNumber + ',007000,14'; |
| noAlignChart.setMultiAxisLabelStyle(xAxisNumber, '009000', 12); |
| noAlignChart.setMultiAxisLabelStyle(yAxisNumber, '007000', 14); |
| var noAlignUri = noAlignChart.getUri(); |
| assertEquals(noAlignArgs, |
| noAlignUri.getParameterValue( |
| goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE)); |
| |
| var noLineTicksChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| noLineTicksChart.addDataSet([0, 50, 100, 130], '008000'); |
| axisNumber = noLineTicksChart.addMultiAxis( |
| goog.ui.ServerChart.MultiAxisType.LEFT_Y_AXIS); |
| var noLineTicksArgs = axisNumber + ',009000,12,0'; |
| noLineTicksChart.setMultiAxisLabelStyle(axisNumber, '009000', 12, |
| goog.ui.ServerChart.MultiAxisAlignment.ALIGN_CENTER); |
| var noLineTicksUri = noLineTicksChart.getUri(); |
| assertEquals(noLineTicksArgs, |
| noLineTicksUri.getParameterValue( |
| goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE)); |
| |
| |
| var allParamsChart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| allParamsChart.addDataSet([0, 50, 100, 130], '008000'); |
| axisNumber = allParamsChart.addMultiAxis( |
| goog.ui.ServerChart.MultiAxisType.LEFT_Y_AXIS); |
| var allParamsArgs = axisNumber + ',009000,12,0,lt'; |
| allParamsChart.setMultiAxisLabelStyle(axisNumber, '009000', 12, |
| goog.ui.ServerChart.MultiAxisAlignment.ALIGN_CENTER, |
| goog.ui.ServerChart.AxisDisplayType.LINE_AND_TICKS); |
| var allParamsUri = allParamsChart.getUri(); |
| assertEquals(allParamsArgs, |
| allParamsUri.getParameterValue( |
| goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE)); |
| } |
| |
| function testSetBackgroundFill() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| assertEquals(0, chart.getBackgroundFill().length); |
| chart.setBackgroundFill([{color: '00ff00'}]); |
| assertObjectEquals({ |
| area: 'bg', |
| effect: 's', |
| color: '00ff00'}, chart.getBackgroundFill()[0]); |
| chart.setBackgroundFill([ |
| {color: '00ff00'}, |
| {area: 'c', color: '00ff00'} |
| ]); |
| assertObjectEquals({ |
| area: 'bg', |
| effect: 's', |
| color: '00ff00'}, chart.getBackgroundFill()[0]); |
| assertObjectEquals({ |
| area: 'c', |
| effect: 's', |
| color: '00ff00'}, chart.getBackgroundFill()[1]); |
| |
| chart.setParameterValue(goog.ui.ServerChart.UriParam.BACKGROUND_FILL, |
| 'bg,s,00ff00|c,lg,45,ff00ff|bg,s,ff00ff'); |
| assertEquals(0, chart.getBackgroundFill().length); |
| } |
| |
| function testSetMultiAxisRange() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR, 300, 200); |
| var x = chart.addMultiAxis(goog.ui.ServerChart.MultiAxisType.X_AXIS); |
| var top = chart.addMultiAxis(goog.ui.ServerChart.MultiAxisType.TOP_AXIS); |
| chart.setMultiAxisRange(x, -500, 500, 100); |
| chart.setMultiAxisRange(top, 0, 10); |
| var range = chart.getMultiAxisRange(); |
| |
| assertArrayEquals(range[x], [-500, 500, 100]); |
| assertArrayEquals(range[top], [0, 10]); |
| } |
| |
| function testGetConvertedValue() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR); |
| |
| assertThrows('No exception thrown when minValue > maxValue', function() { |
| var result = chart.getConvertedValue_( |
| 90, 24, 3, goog.ui.ServerChart.EncodingType.SIMPLE); |
| }); |
| |
| assertEquals('_', chart.getConvertedValue_(90, 100, 101, |
| goog.ui.ServerChart.EncodingType.SIMPLE)); |
| |
| assertEquals('_', chart.getConvertedValue_( |
| null, 0, 5, goog.ui.ServerChart.EncodingType.SIMPLE)); |
| assertEquals('__', chart.getConvertedValue_( |
| null, 0, 150, goog.ui.ServerChart.EncodingType.EXTENDED)); |
| assertEquals('24', chart.getConvertedValue_( |
| 24, 1, 200, goog.ui.ServerChart.EncodingType.TEXT)); |
| assertEquals('H', chart.getConvertedValue_( |
| 24, 1, 200, goog.ui.ServerChart.EncodingType.SIMPLE)); |
| assertEquals('HZ', chart.getConvertedValue_( |
| 24, 1, 200, goog.ui.ServerChart.EncodingType.EXTENDED)); |
| |
| // Out-of-range values should give a missing data point, not an empty string. |
| assertEquals('__', chart.getConvertedValue_( |
| 0, 1, 200, goog.ui.ServerChart.EncodingType.EXTENDED)); |
| assertEquals('__', chart.getConvertedValue_( |
| 201, 1, 200, goog.ui.ServerChart.EncodingType.EXTENDED)); |
| assertEquals('_', chart.getConvertedValue_( |
| 0, 1, 200, goog.ui.ServerChart.EncodingType.SIMPLE)); |
| assertEquals('_', chart.getConvertedValue_( |
| 201, 1, 200, goog.ui.ServerChart.EncodingType.SIMPLE)); |
| assertEquals('_', chart.getConvertedValue_( |
| 0, 1, 200, goog.ui.ServerChart.EncodingType.TEXT)); |
| assertEquals('_', chart.getConvertedValue_( |
| 201, 1, 200, goog.ui.ServerChart.EncodingType.TEXT)); |
| } |
| |
| function testGetChartServerValues() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR); |
| var values = [0, 1, 2, 56, 90, 120]; |
| var minValue = 0; |
| var maxValue = 140; |
| var expectedSimple = 'AABYn0'; |
| assertEquals(expectedSimple, |
| chart.getChartServerValues_(values, minValue, maxValue)); |
| var expectedText = '0,1,2,56,90,120'; |
| assertEquals(expectedSimple, |
| chart.getChartServerValues_(values, minValue, maxValue)); |
| } |
| |
| function testUriLengthLimit() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.SPARKLINE, 300, 200); |
| var longUri = null; |
| goog.events.listen(chart, goog.ui.ServerChart.Event.URI_TOO_LONG, |
| function(e) {longUri = e.uri;}); |
| assertEquals(goog.ui.ServerChart.EncodingType.AUTOMATIC, |
| chart.getEncodingType()); |
| chart.addDataSet([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9], |
| '008000'); |
| assertEquals( |
| 'e:AAHHOOVVccjjqqxx44..AAHHOOVVccjjqqxx44..', |
| chart.getUri().getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| chart.setUriLengthLimit(100); |
| assertEquals( |
| 's:AHOUbipv29AHOUbipv29', |
| chart.getUri().getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| chart.setUriLengthLimit(80); |
| assertEquals(null, longUri); |
| chart.getUri(); |
| assertNotEquals(null, longUri); |
| } |
| |
| function testVisibleDataSets() { |
| var uri; |
| |
| var bar = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| bar.addDataSet([8, 23, 7], '008000'); |
| bar.addDataSet([31, 11, 7], 'ffcc33'); |
| bar.addDataSet([2, 43, 70, 3, 43, 74], '3072f3'); |
| bar.setMaxValue(100); |
| |
| bar.setNumVisibleDataSets(0); |
| uri = bar.getUri(); |
| assertEquals( |
| 'e0:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| |
| bar.setNumVisibleDataSets(1); |
| uri = bar.getUri(); |
| assertEquals( |
| 'e1:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| |
| bar.setNumVisibleDataSets(2); |
| uri = bar.getUri(); |
| assertEquals( |
| 'e2:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| |
| bar.setNumVisibleDataSets(null); |
| uri = bar.getUri(); |
| assertEquals( |
| 'e:D6NtDQ,S7F4DQ,AAaxsZApaxvA', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.DATA)); |
| } |
| |
| function testTitle() { |
| var chart = new goog.ui.ServerChart( |
| goog.ui.ServerChart.ChartType.BAR, 180, 104); |
| assertEquals('Default title size', 13.5, chart.getTitleSize()); |
| assertEquals('Default title color', '333333', chart.getTitleColor()); |
| chart.setTitle('Test title'); |
| chart.setTitleSize(7); |
| chart.setTitleColor('ff0000'); |
| var uri = chart.getUri(); |
| assertEquals( |
| 'Changing chart title failed', |
| 'Test title', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TITLE)); |
| assertEquals( |
| 'Changing title size and color failed', |
| 'ff0000,7', |
| uri.getParameterValue(goog.ui.ServerChart.UriParam.TITLE_FORMAT)); |
| assertEquals('New title size', 7, chart.getTitleSize()); |
| assertEquals('New title color', 'ff0000', chart.getTitleColor()); |
| } |