|
9 | 9 | from plotly.graph_objs import graph_objs
|
10 | 10 |
|
11 | 11 |
|
| 12 | +class TestQuiver(TestCase): |
| 13 | + |
| 14 | + def test_unequal_xy_length(self): |
| 15 | + |
| 16 | + # check: PlotlyError if x and y are not the same length |
| 17 | + |
| 18 | + kwargs = {'x': [1, 2], 'y': [1], 'u': [1, 2], 'v': [1, 2]} |
| 19 | + self.assertRaises(PlotlyError, tls.FigureFactory.create_quiver, |
| 20 | + **kwargs) |
| 21 | + |
| 22 | + def test_wrong_scale(self): |
| 23 | + |
| 24 | + # check: ValueError if scale is <= 0 |
| 25 | + |
| 26 | + kwargs = {'x': [1, 2], 'y': [1, 2], |
| 27 | + 'u': [1, 2], 'v': [1, 2], |
| 28 | + 'scale': -1} |
| 29 | + self.assertRaises(ValueError, tls.FigureFactory.create_quiver, |
| 30 | + **kwargs) |
| 31 | + |
| 32 | + kwargs = {'x': [1, 2], 'y': [1, 2], |
| 33 | + 'u': [1, 2], 'v': [1, 2], |
| 34 | + 'scale': 0} |
| 35 | + self.assertRaises(ValueError, tls.FigureFactory.create_quiver, |
| 36 | + **kwargs) |
| 37 | + |
| 38 | + def test_wrong_arrow_scale(self): |
| 39 | + |
| 40 | + # check: ValueError if arrow_scale is <= 0 |
| 41 | + |
| 42 | + kwargs = {'x': [1, 2], 'y': [1, 2], |
| 43 | + 'u': [1, 2], 'v': [1, 2], |
| 44 | + 'arrow_scale': -1} |
| 45 | + self.assertRaises(ValueError, tls.FigureFactory.create_quiver, |
| 46 | + **kwargs) |
| 47 | + |
| 48 | + kwargs = {'x': [1, 2], 'y': [1, 2], |
| 49 | + 'u': [1, 2], 'v': [1, 2], |
| 50 | + 'arrow_scale': 0} |
| 51 | + self.assertRaises(ValueError, tls.FigureFactory.create_quiver, |
| 52 | + **kwargs) |
| 53 | + |
| 54 | + def test_one_arrow(self): |
| 55 | + |
| 56 | + # we should be able to create a single arrow using create_quiver |
| 57 | + |
| 58 | + quiver = tls.FigureFactory.create_quiver(x=[1], y=[1], |
| 59 | + u=[1], v=[1], |
| 60 | + scale=1) |
| 61 | + expected_quiver = { |
| 62 | + 'data': [{'mode': 'lines', |
| 63 | + 'type': u'scatter', |
| 64 | + 'x': [1, 2, None, 1.820698256761928, 2, |
| 65 | + 1.615486170766527, None], |
| 66 | + 'y': [1, 2, None, 1.615486170766527, 2, |
| 67 | + 1.820698256761928, None]}], |
| 68 | + 'layout': {'hovermode': 'closest'}} |
| 69 | + self.assertEqual(quiver, expected_quiver) |
| 70 | + |
| 71 | + def test_more_kwargs(self): |
| 72 | + |
| 73 | + # we should be able to create 2 arrows and change the arrow_scale, |
| 74 | + # angle, and arrow using create_quiver |
| 75 | + |
| 76 | + quiver = tls.FigureFactory.create_quiver(x=[1, 2], |
| 77 | + y=[1, 2], |
| 78 | + u=[math.cos(1), |
| 79 | + math.cos(2)], |
| 80 | + v=[math.sin(1), |
| 81 | + math.sin(2)], |
| 82 | + arrow_scale=.4, |
| 83 | + angle=math.pi / 6, |
| 84 | + line=graph_objs.Line(color='purple', |
| 85 | + width=3)) |
| 86 | + expected_quiver = {'data': [{'line': {'color': 'purple', 'width': 3}, |
| 87 | + 'mode': 'lines', |
| 88 | + 'type': u'scatter', |
| 89 | + 'x': [1, |
| 90 | + 1.0540302305868139, |
| 91 | + None, |
| 92 | + 2, |
| 93 | + 1.9583853163452858, |
| 94 | + None, |
| 95 | + 1.052143029378767, |
| 96 | + 1.0540302305868139, |
| 97 | + 1.0184841899864512, |
| 98 | + None, |
| 99 | + 1.9909870141679737, |
| 100 | + 1.9583853163452858, |
| 101 | + 1.9546151170949464, |
| 102 | + None], |
| 103 | + 'y': [1, |
| 104 | + 1.0841470984807897, |
| 105 | + None, |
| 106 | + 2, |
| 107 | + 2.0909297426825684, |
| 108 | + None, |
| 109 | + 1.044191642387781, |
| 110 | + 1.0841470984807897, |
| 111 | + 1.0658037346225067, |
| 112 | + None, |
| 113 | + 2.0677536925644366, |
| 114 | + 2.0909297426825684, |
| 115 | + 2.051107819102551, |
| 116 | + None]}], |
| 117 | + 'layout': {'hovermode': 'closest'}} |
| 118 | + self.assertEqual(quiver, expected_quiver) |
| 119 | + |
| 120 | + |
12 | 121 | class TestFinanceCharts(TestCase):
|
13 | 122 |
|
14 | 123 | def test_unequal_ohlc_length(self):
|
|
0 commit comments