| 1 | # -*- coding: utf-8 -*- | 
| 2 | from __future__ import division, print_function, unicode_literals | 
| 3 |  | 
| 4 | import unittest | 
| 5 |  | 
| 6 | import testsupport as ts | 
| 7 | from pyradlib import lcompare | 
| 8 | from pyradlib.pyrad_proc import PIPE, Error, ProcMixin | 
| 9 |  | 
| 10 |  | 
| 11 | class HistoTestCase(unittest.TestCase, ProcMixin): | 
| 12 |  | 
| 13 | def _runit(self, cmd, fn): | 
| 14 | try: | 
| 15 | proc = self.call_one(cmd, 'call histo', _in=fn, out=PIPE, | 
| 16 | universal_newlines=True) | 
| 17 | raw = proc.stdout.read() | 
| 18 | except Error as e: | 
| 19 | self.fail('%s [%s]' % (str(e), self.qjoin(cmd))) | 
| 20 | finally: | 
| 21 | if 'proc' in locals(): | 
| 22 | proc.wait() | 
| 23 | return lcompare.split_rad(raw) | 
| 24 |  | 
| 25 | def test_histo(self): | 
| 26 | infile = ts.datafile('histo.dat') | 
| 27 | cmd = 'histo -0.5 8.5 9'.split() | 
| 28 | result = self._runit(cmd, infile) | 
| 29 | expect = [ | 
| 30 | [0, 720, 240, 432, 1080, 270], | 
| 31 | [1, 720, 240, 432, 1080, 270], | 
| 32 | [2, 720, 240, 432,    0, 270], | 
| 33 | [3,   0, 240, 432,    0, 270], | 
| 34 | [4,   0, 240, 432,    0, 270], | 
| 35 | [5,   0, 240,   0,    0, 270], | 
| 36 | [6,   0, 240,   0,    0, 270], | 
| 37 | [7,   0, 240,   0,    0, 270], | 
| 38 | [8,   0, 240,   0,    0,   0], | 
| 39 | ] | 
| 40 | try: lcompare.llcompare(result, expect, ignore_empty=1) | 
| 41 | except lcompare.error as e: | 
| 42 | self.fail('%s [%s]' % (str(e),cmd)) | 
| 43 |  | 
| 44 | def test_histo_c(self): | 
| 45 | infile = ts.datafile('histo.dat') | 
| 46 | cmd = 'histo -c -0.5 8.5 9'.split() | 
| 47 | result = self._runit(cmd, infile) | 
| 48 | expect = [ | 
| 49 | [-0.5,   0,    0,    0,    0,    0], | 
| 50 | [0.5,  720,  240,  432, 1080,  270], | 
| 51 | [1.5, 1440,  480,  864, 2160,  540], | 
| 52 | [2.5, 2160,  720, 1296, 2160,  810], | 
| 53 | [3.5, 2160,  960, 1728, 2160, 1080], | 
| 54 | [4.5, 2160, 1200, 2160, 2160, 1350], | 
| 55 | [5.5, 2160, 1440, 2160, 2160, 1620], | 
| 56 | [6.5, 2160, 1680, 2160, 2160, 1890], | 
| 57 | [7.5, 2160, 1920, 2160, 2160, 2160], | 
| 58 | [8.5, 2160, 2160, 2160, 2160, 2160], | 
| 59 | ] | 
| 60 | try: lcompare.llcompare(result, expect, ignore_empty=1) | 
| 61 | except lcompare.error as e: | 
| 62 | self.fail('%s [%s]' % (str(e),cmd)) | 
| 63 |  | 
| 64 | def test_histo_p(self): | 
| 65 | infile = ts.datafile('histo.dat') | 
| 66 | cmd = 'histo -p -0.5 8.5 9'.split() | 
| 67 | result = self._runit(cmd, infile) | 
| 68 | expect = [ | 
| 69 | [0, 33.333333, 11.111111, 20.0, 50.0, 12.5], | 
| 70 | [1, 33.333333, 11.111111, 20.0, 50.0, 12.5], | 
| 71 | [2, 33.333333, 11.111111, 20.0,  0.0, 12.5], | 
| 72 | [3,       0.0, 11.111111, 20.0,  0.0, 12.5], | 
| 73 | [4,       0.0, 11.111111, 20.0,  0.0, 12.5], | 
| 74 | [5,       0.0, 11.111111,  0.0,  0.0, 12.5], | 
| 75 | [6,       0.0, 11.111111,  0.0,  0.0, 12.5], | 
| 76 | [7,       0.0, 11.111111,  0.0,  0.0, 12.5], | 
| 77 | [8,       0.0, 11.111111,  0.0,  0.0,  0.0], | 
| 78 | ] | 
| 79 | try: lcompare.llcompare(result, expect, ignore_empty=1) | 
| 80 | except lcompare.error as e: | 
| 81 | self.fail('%s [%s]' % (str(e),cmd)) | 
| 82 |  | 
| 83 | def test_histo_pc(self): | 
| 84 | infile = ts.datafile('histo.dat') | 
| 85 | cmd = 'histo -p -c -0.5 8.5 9'.split() | 
| 86 | result = self._runit(cmd, infile) | 
| 87 | expect = [ | 
| 88 | [-0.5,      0.0,       0.0,   0.0,   0.0,   0.0], | 
| 89 | [0.5, 33.333333, 11.111111,  20.0,  50.0,  12.5], | 
| 90 | [1.5, 66.666667, 22.222222,  40.0, 100.0,  25.0], | 
| 91 | [2.5,     100.0, 33.333333,  60.0, 100.0,  37.5], | 
| 92 | [3.5,     100.0, 44.444444,  80.0, 100.0,  50.0], | 
| 93 | [4.5,     100.0, 55.555556, 100.0, 100.0,  62.5], | 
| 94 | [5.5,     100.0, 66.666667, 100.0, 100.0,  75.0], | 
| 95 | [6.5,     100.0, 77.777778, 100.0, 100.0,  87.5], | 
| 96 | [7.5,     100.0, 88.888889, 100.0, 100.0, 100.0], | 
| 97 | [8.5,     100.0,     100.0, 100.0, 100.0, 100.0], | 
| 98 | ] | 
| 99 | try: lcompare.llcompare(result, expect, ignore_empty=1) | 
| 100 | except lcompare.error as e: | 
| 101 | self.fail('%s [%s]' % (str(e),cmd)) | 
| 102 |  | 
| 103 |  | 
| 104 | # vi: set ts=4 sw=4 : |