1#!/usr/bin/python3
2
3import sys
4import pyvips
5
6# import logging
7# logging.basicConfig(level = logging.DEBUG)
8
9a = pyvips.Image.new_from_file(sys.argv[1])
10
11
12def should_equal(test, a, b):
13    if abs(a - b) > 0.01:
14        print('%s: seen %g and %g' % (test, a, b))
15        sys.exit(1)
16
17
18def bandsplit(a):
19    return [a.extract_band(i) for i in range(0, a.bands)]
20
21
22# test operator overloads
23
24# addition
25b = a + 12
26should_equal('add constant', a.avg() + 12, b.avg())
27
28b = a + [12, 0, 0]
29x = map(lambda x: x.avg())
30bandsplit(a)
31y = map(lambda x: x.avg())
32bandsplit(b)
33x[0] += 12
34should_equal('add multiband constant', sum(x), sum(y))
35
36b = a + [12, 0, 0]
37b = a + b
38b = 12 + a
39b = [12, 0, 0] + a
40
41b = a - 12
42b = a - [12, 0, 0]
43b = a - b
44b = 12 - a
45b = [12, 0, 0] - a
46
47b = a * 12
48b = a * [12, 1, 1]
49b = a * b
50b = 12 * a
51b = [12, 1, 1] * a
52
53b = a / 12
54b = a / [12, 1, 1]
55b = 12 / a
56b = [12, 1, 1] / a
57b = a / b
58
59b = a // 12
60b = a // [12, 1, 1]
61b = 12 // a
62b = [12, 1, 1] // a
63b = a // b
64
65b = a % 12
66b = a % [12, 1, 1]
67b = a % b
68
69b = a ** 12
70b = a ** [12, 1, 1]
71b = 12 ** a
72b = [12, 1, 1] ** a
73b = a ** b
74
75b = a << 12
76b = a << [12, 1, 1]
77b = a << b
78
79b = a >> 12
80b = a >> [12, 1, 1]
81b = a >> b
82
83b = a & 12
84b = a & [12, 1, 1]
85b = 12 & a
86b = [12, 1, 1] & a
87b = a & b
88
89b = a | 12
90b = a | [12, 1, 1]
91b = 12 | a
92b = [12, 1, 1] | a
93b = a | b
94
95b = a ^ 12
96b = a ^ [12, 1, 1]
97b = 12 ^ a
98b = [12, 1, 1] ^ a
99b = a ^ b
100
101b = -a
102b = +a
103b = abs(a)
104b = ~a
105