1 |
# -*- coding: utf-8 -*- |
2 |
from __future__ import division, print_function, unicode_literals |
3 |
|
4 |
import struct |
5 |
import operator |
6 |
import unittest |
7 |
from functools import reduce |
8 |
|
9 |
import testsupport as ts |
10 |
from pyradlib import lcompare |
11 |
from pyradlib.pyrad_proc import PIPE, Error, ProcMixin |
12 |
|
13 |
|
14 |
class LcompareTestCase(unittest.TestCase, ProcMixin): |
15 |
|
16 |
def test_lc_llcompare(self): |
17 |
# with values higher than 44721, total will return a float in e-format. |
18 |
for xc, data, exp in ( |
19 |
( None, |
20 |
( ('abcde', 'fgh', '1234', '56.789'), |
21 |
('xyz', '432', '987.65432') |
22 |
), |
23 |
( ('abcde', 'fgh', 1234, 56.789), |
24 |
('xyz', 432, 987.65432) |
25 |
), |
26 |
), |
27 |
( None, |
28 |
( (('a', 'b', 'c'),('d', 'e', 'f')), |
29 |
(('0', '1', '2', '3'),('1.1', '2.2', '3.000e-03')), |
30 |
), |
31 |
( (('a', 'b', 'c'),('d', 'e', 'f')), |
32 |
(range(4),(1.1, 2.2, 0.003)), |
33 |
), |
34 |
), |
35 |
( lcompare.error, # top level length |
36 |
(('a', 'b', 'c'),('c','d'),('e','f'),), |
37 |
(('a', 'b', 'c'),('c','d'),), |
38 |
), |
39 |
( lcompare.error, # top level length |
40 |
(('a', 'b', 'c'),('c','d'),), |
41 |
(('a', 'b', 'c'),('c','d'),('e','f'),), |
42 |
), |
43 |
( lcompare.error, # 2nd level length |
44 |
(('a', 'b', 'c'),('c','d'),('e','f','g'),), |
45 |
(('a', 'b', 'c'),('c','d'),('e','f'),), |
46 |
), |
47 |
( lcompare.error, # 2nd level length |
48 |
(('a', 'b', 'c'),('c','d'),('e','f'),), |
49 |
(('a', 'b', 'c'),('c','d'),('e','f','g'),), |
50 |
), |
51 |
( lcompare.error, # string diff |
52 |
(('a', 'b', 'c'),('c','d'),('e','f','g'),), |
53 |
(('a', 'b', 'c'),('c','d'),('e','f','h'),), |
54 |
), |
55 |
( lcompare.error, # int diff |
56 |
(('a', 'b', 'c'),('c','d'),('1','2','3'),), |
57 |
(('a', 'b', 'c'),('c','d'),( 1, 2, 4),), |
58 |
), |
59 |
( lcompare.error, # float diff |
60 |
(('a', 'b', 'c'),('c','d'),('1.1','2.2','3.3'),), |
61 |
(('a', 'b', 'c'),('c','d'),( 1.1, 2.2, 3.4),), |
62 |
), |
63 |
( lcompare.error, # exponent diff |
64 |
(('a', 'b', 'c'),('c','d'),('1.1','2.2','3.0000e-02'),), |
65 |
(('a', 'b', 'c'),('c','d'),( 1.1, 2.2, 0.003),), |
66 |
), |
67 |
( lcompare.error, # fuzzy compare |
68 |
(('a', 'b', 'c'),('c','d'),('1.1','2.2','3.00000003'),), |
69 |
(('a', 'b', 'c'),('c','d'),( 1.1, 2.2, 3.0000003),), |
70 |
), |
71 |
( None, # fuzzy compare |
72 |
(('a', 'b', 'c'),('c','d'),('1.1','2.2','3.000000003'),), |
73 |
(('a', 'b', 'c'),('c','d'),( 1.1, 2.2, 3.00000003),), |
74 |
), |
75 |
): |
76 |
if xc: |
77 |
self.assertRaises(xc, lcompare.llcompare, data, exp) |
78 |
else: |
79 |
try: lcompare.llcompare(data, exp) |
80 |
except lcompare.error as e: |
81 |
self.fail(('call_one_text ') +str(e)) |
82 |
|
83 |
def test_lc_split_headers(self): |
84 |
htxt = '''example.hdr: |
85 |
Xim format conversion by: |
86 |
FORMAT=32-bit_rle_rgbe |
87 |
pfilt -e 2 -x 512 -y 512 -p 1 -r .67 |
88 |
EXPOSURE=4.926198e+00 |
89 |
normpat |
90 |
pfilt -1 -e .2 |
91 |
EXPOSURE=2.000000e-01 |
92 |
pfilt -x 128 -y 128 |
93 |
PIXASPECT=0.500000 |
94 |
EXPOSURE=2.571646e+00''' |
95 |
res = lcompare.split_headers(htxt) |
96 |
exp = ( |
97 |
('', ('example.hdr:',)), |
98 |
('\t\t', ('Xim','format','conversion','by:')), |
99 |
('\t\t', 'FORMAT', '=', ('32-bit_rle_rgbe',)), |
100 |
('\t\t', |
101 |
('pfilt','-e','2','-x','512','-y','512','-p','1','-r','.67')), |
102 |
('\t\t', 'EXPOSURE', '=', ('4.926198e+00',)), |
103 |
('\t\t', ('normpat',)), |
104 |
('\t\t', ('pfilt','-1','-e','.2',)), |
105 |
('\t\t', 'EXPOSURE', '=', ('2.000000e-01',)), |
106 |
('\t\t', ('pfilt','-x','128','-y','128',)), |
107 |
('\t\t', 'PIXASPECT', '=', ('0.500000',)), |
108 |
('\t\t', 'EXPOSURE', '=', ('2.571646e+00',)), |
109 |
) |
110 |
try: lcompare.llcompare(res, exp) |
111 |
except lcompare.error as e: |
112 |
self.fail(('call_one_text ') +str(e)) |
113 |
|
114 |
def test_lc_split_radfile(self): |
115 |
df = ts.datafile('window_src.rad') |
116 |
exp = ([['#'], |
117 |
['#', 'A', 'plain', 'old', 'glass', 'window'], |
118 |
['#'], |
119 |
[], ['void', 'light', 'window_light'], |
120 |
[0], [0], [3, 1, 1, 1], |
121 |
[], ['window_light', 'polygon', 'window'], |
122 |
[0], [0], [12], [23.5, 43, 30], [23.5, 26, 30], |
123 |
[-23.5, 26, 30], [-23.5, 43, 30], []]) |
124 |
resl = lcompare.split_radfile(df) |
125 |
try: lcompare.lcompare(resl, exp) |
126 |
except lcompare.error as e: |
127 |
print(resl, exp) |
128 |
self.fail(('call_one_text n=%d -- ' % n) +str(e)) |
129 |
|
130 |
def test_lc_split_rad(self): |
131 |
df = ts.datafile('window_src.rad') |
132 |
exp = ([['#'], |
133 |
['#', 'A', 'plain', 'old', 'glass', 'window'], |
134 |
['#'], |
135 |
[], ['void', 'light', 'window_light'], |
136 |
[0], [0], [3, 1, 1, 1], |
137 |
[], ['window_light', 'polygon', 'window'], |
138 |
[0], [0], [12], [23.5, 43, 30], [23.5, 26, 30], |
139 |
[-23.5, 26, 30], [-23.5, 43, 30], []]) |
140 |
with open(df) as f: |
141 |
res = f.read() |
142 |
resl = lcompare.split_rad(res) |
143 |
try: lcompare.lcompare(resl, exp) |
144 |
except lcompare.error as e: |
145 |
print(resl, exp) |
146 |
self.fail(('call_one_text n=%d -- ' % n) +str(e)) |
147 |
|
148 |
|
149 |
# vi: set ts=4 sw=4 : |