aboutsummaryrefslogtreecommitdiffstats
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rwxr-xr-xsrc/test376
1 files changed, 0 insertions, 376 deletions
diff --git a/src/test b/src/test
deleted file mode 100755
index f2bb71e..0000000
--- a/src/test
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/usr/bin/env python3
-'''
-pylibcoopgamma -- Python library for interfacing with cooperative gamma servers
-Copyright (C) 2016 Mattias Andrée (maandree@kth.se)
-
-This library is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this library. If not, see <http://www.gnu.org/licenses/>.
-'''
-
-import os, sys, time, errno, select
-
-os.chdir('/'.join(sys.argv[0].split('/')[:-1]))
-sys.path.append('../bin')
-
-import libcoopgamma
-cg = libcoopgamma
-
-if len(sys.argv) == 1:
-
- print('\033[1m%s:\033[m' % 'Methods')
- for m in cg.get_methods():
- print(m)
- print()
-
- print('\033[1m%s:\033[m' % 'Method')
- print(cg.get_method_and_site()[0])
- print()
-
- print('\033[1m%s:\033[m' % 'Site')
- print(cg.get_method_and_site()[1])
- print()
-
- print('\033[1m%s:\033[m' % 'PID file')
- print(cg.get_pid_file())
- print()
-
- print('\033[1m%s:\033[m' % 'Socket')
- print(cg.get_socket_file())
- print()
-
- g = cg.Context()
- g.connect()
- g.detach()
- gstr = repr(g)
- del g
-
- argv0 = './' + sys.argv[0].split('/')[-1]
- os.execl(argv0, argv0, gstr)
-else:
- g = eval(sys.argv[1])
- g.attach()
- pass
-
-print('\033[1m%s:\033[m' % 'CRTC:s')
-crtcs = g.get_crtcs_sync()
-for crtc in crtcs:
- print(crtc)
-print()
-
-info = g.get_gamma_info_sync(crtc)
-print('\033[1m%s:\033[m' % 'CRTC info')
-print('Cooperative:', 'yes' if info.cooperative else 'no')
-if info.depth is not None:
- print('Depth:', cg.Depth.str(info.depth))
-print('Supported:', cg.Support.str(info.supported))
-if info.red_size is not None:
- print('Red stops:', info.red_size)
-if info.green_size is not None:
- print('Green stops:', info.green_size)
-if info.blue_size is not None:
- print('Blue stops:', info.blue_size)
-print('Colourspace:', cg.Colourspace.str(info.colourspace))
-if info.gamut is not None:
- print('Red point:', str(info.gamut.red))
- print('Green point:', str(info.gamut.green))
- print('Blue point:', str(info.gamut.blue))
- print('White point:', str(info.gamut.white))
-print()
-
-table = g.get_gamma_sync(cg.FilterQuery(crtc = crtc, coalesce = False))
-print('\033[1m%s:\033[m' % 'Filter table')
-print('Red stops:', table.red_size)
-print('Green stops:', table.green_size)
-print('Blue stops:', table.blue_size)
-print('Depth:', cg.Depth.str(table.depth))
-for i, fltr in enumerate(table.filters):
- print('Filter %i:' % i)
- print(' Priority:', fltr.priority)
- print(' Class:', fltr.fclass)
- print(' Ramps:')
- rr, gr, br = fltr.ramps.red, fltr.ramps.green, fltr.ramps.blue
- n = max(len(rr), len(gr), len(br))
- fmt = ' \033[31m%s \033[32m%s \033[34m%s\033[m'
- rr = [str(rr[i]) if i < len(rr) else '' for i in range(n)]
- gr = [str(gr[i]) if i < len(gr) else '' for i in range(n)]
- br = [str(br[i]) if i < len(br) else '' for i in range(n)]
- for y in zip(rr, gr, br):
- print(fmt % y)
-print()
-table_nc = table
-
-table = g.get_gamma_sync(cg.FilterQuery(crtc = crtc, coalesce = True))
-print('\033[1m%s:\033[m' % 'Filter table')
-print('Red stops:', table.red_size)
-print('Green stops:', table.green_size)
-print('Blue stops:', table.blue_size)
-print('Depth:', cg.Depth.str(table.depth))
-for fltr in table.filters:
- print('Ramps:')
- rr, gr, br = fltr.ramps.red, fltr.ramps.green, fltr.ramps.blue
- n = max(len(rr), len(gr), len(br))
- fmt = ' \033[31m%s \033[32m%s \033[34m%s\033[m'
- rr = [str(rr[i]) if i < len(rr) else '' for i in range(n)]
- gr = [str(gr[i]) if i < len(gr) else '' for i in range(n)]
- br = [str(br[i]) if i < len(br) else '' for i in range(n)]
- for y in zip(rr, gr, br):
- print(fmt % y)
-print()
-table_c = table
-
-fltr = cg.Filter(0, crtc, 'pylibcoopgamma::test::test', cg.Lifespan.UNTIL_DEATH, table.depth,
- cg.Ramps(table.red_size, table.green_size, table.blue_size))
-
-if table.depth < 0:
- Y = lambda x : x
-else:
- m = 2 ** table.depth - 1
- Y = lambda x : int(x * m)
-
-redzero = fltr.ramps.red
-greenzero = fltr.ramps.green
-redid = [Y(x / (table.red_size - 1)) for x in range(table.red_size)]
-greenid = [Y(x / (table.green_size - 1)) for x in range(table.green_size)]
-blueid = [Y(x / (table.blue_size - 1)) for x in range(table.blue_size)]
-
-fltr.ramps.red = redid
-g.set_gamma_sync(fltr)
-time.sleep(0.5)
-fltr.ramps.red = redzero
-
-fltr.ramps.green = greenid
-g.set_gamma_sync(fltr)
-time.sleep(0.5)
-fltr.ramps.green = greenzero
-
-fltr.ramps.blue = blueid
-g.set_gamma_sync(fltr)
-time.sleep(0.5)
-
-g.set_nonbreaking(False)
-
-asynch = cg.AsyncContext()
-
-def flush(e):
- if e.errno in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- while True:
- try:
- g.flush()
- except OSError as ex:
- if ex.errno in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- continue
- else:
- raise ex
- break
- else:
- raise e
-
-try:
- g.get_crtcs_send(asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(1)
-if g.get_crtcs_recv(asynch) != crtcs:
- sys.exit(2)
-
-try:
- g.get_gamma_info_send(crtc, asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(3)
-info2 = g.get_gamma_info_recv(asynch)
-if info2.cooperative != info.cooperative:
- sys.exit(4)
-if info2.depth != info.depth:
- sys.exit(4)
-if info2.supported != info.supported:
- sys.exit(4)
-if info2.red_size != info.red_size:
- sys.exit(4)
-if info2.green_size != info.green_size:
- sys.exit(4)
-if info2.blue_size != info.blue_size:
- sys.exit(4)
-if info2.colourspace != info.colourspace:
- sys.exit(4)
-if (info2.gamut is None) != (info.gamut is None):
- sys.exit(4)
-if info.gamut is not None:
- if info2.gamut.red.x_raw != info.gamut.red.x_raw or info2.gamut.red.x != info.gamut.red.x:
- sys.exit(4)
- if info2.gamut.red.y_raw != info.gamut.red.y_raw or info2.gamut.red.y != info.gamut.red.y:
- sys.exit(4)
- if info2.gamut.green.x_raw != info.gamut.green.x_raw or info2.gamut.green.x != info.gamut.green.x:
- sys.exit(4)
- if info2.gamut.green.y_raw != info.gamut.green.y_raw or info2.gamut.green.y != info.gamut.green.y:
- sys.exit(4)
- if info2.gamut.blue.x_raw != info.gamut.blue.x_raw or info2.gamut.blue.x != info.gamut.blue.x:
- sys.exit(4)
- if info2.gamut.blue.y_raw != info.gamut.blue.y_raw or info2.gamut.blue.y != info.gamut.blue.y:
- sys.exit(4)
- if info2.gamut.white.x_raw != info.gamut.white.x_raw or info2.gamut.white.x != info.gamut.white.x:
- sys.exit(4)
- if info2.gamut.white.y_raw != info.gamut.white.y_raw or info2.gamut.white.y != info.gamut.white.y:
- sys.exit(4)
-
-try:
- g.set_gamma_send(cg.Filter(crtc = crtc, fclass = 'pylibcoopgamma::test::test',
- lifespan = cg.Lifespan.REMOVE), asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(1)
-g.set_gamma_recv(asynch)
-
-try:
- g.get_gamma_send(cg.FilterQuery(crtc = crtc, coalesce = False), asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(5)
-table = g.get_gamma_recv(asynch)
-if table.red_size != table_nc.red_size:
- sys.exit(6)
-if table.green_size != table_nc.green_size:
- sys.exit(6)
-if table.blue_size != table_nc.blue_size:
- sys.exit(6)
-if table.depth != table_nc.depth:
- sys.exit(6)
-if len(table.filters) != len(table_nc.filters):
- sys.exit(6)
-for i, (fltr1, fltr2) in enumerate(zip(table.filters, table_nc.filters)):
- if fltr1.priority != fltr2.priority:
- sys.exit(6)
- if fltr1.fclass != fltr2.fclass:
- sys.exit(6)
- if fltr1.ramps.red != fltr2.ramps.red:
- sys.exit(6)
- if fltr1.ramps.green != fltr2.ramps.green:
- sys.exit(6)
- if fltr1.ramps.blue != fltr2.ramps.blue:
- sys.exit(6)
-
-try:
- g.get_gamma_send(cg.FilterQuery(crtc = crtc, coalesce = True), asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(7)
-table = g.get_gamma_recv(asynch)
-if table.red_size != table_c.red_size:
- sys.exit(8)
-if table.green_size != table_c.green_size:
- sys.exit(8)
-if table.blue_size != table_c.blue_size:
- sys.exit(8)
-if table.depth != table_c.depth:
- sys.exit(8)
-if len(table.filters) != len(table_c.filters):
- sys.exit(8)
-for i, (fltr1, fltr2) in enumerate(zip(table.filters, table_c.filters)):
- if fltr1.ramps.red != fltr2.ramps.red:
- sys.exit(8)
- if fltr1.ramps.green != fltr2.ramps.green:
- sys.exit(8)
- if fltr1.ramps.blue != fltr2.ramps.blue:
- sys.exit(8)
-
-
-fltr = cg.Filter(0, crtc, 'pylibcoopgamma::test::test', cg.Lifespan.UNTIL_DEATH, table.depth,
- cg.Ramps(table.red_size, table.green_size, table.blue_size))
-
-fltr.ramps.red = list(reversed(redid))
-fltr.ramps.green = list(reversed(greenid))
-fltr.ramps.blue = list(reversed(blueid))
-try:
- g.set_gamma_send(fltr, asynch)
-except OSError as e:
- flush(e)
-if g.synchronise([asynch]) != 0:
- sys.exit(9)
-g.skip_message()
-time.sleep(0.5)
-
-fltr.ramps.red = redid
-fltr.ramps.green = greenid
-fltr.ramps.blue = blueid
-g.set_gamma_sync(fltr)
-
-g.set_nonbreaking(True)
-
-async1 = asynch
-async2 = cg.AsyncContext()
-async3 = cg.AsyncContext()
-time.sleep(0.5)
-
-fltr.ramps.red = list(reversed(redid))
-fltr.fclass = 'pylibcoopgamma::test::red'
-try:
- g.set_gamma_send(fltr, async1)
- need_flush = True
-except OSError as e:
- if e.errno not in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- sys.exit(10)
- need_flush = False
-fltr.ramps.red = redid
-
-fltr.ramps.green = list(reversed(greenid))
-fltr.fclass = 'pylibcoopgamma::test::green'
-try:
- g.set_gamma_send(fltr, async2)
- need_flush = True
-except OSError as e:
- if e.errno not in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- sys.exit(10)
- need_flush = False
-fltr.ramps.green = greenid
-
-fltr.ramps.blue = list(reversed(blueid))
-fltr.fclass = 'pylibcoopgamma::test::blue'
-try:
- g.set_gamma_send(fltr, async3)
- need_flush = True
-except OSError as e:
- if e.errno not in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- sys.exit(10)
- need_flush = False
-fltr.ramps.blue = blueid
-
-while need_flush:
- try:
- g.flush()
- break
- except OSError as e:
- if e.errno in (errno.EINTR, errno.EWOULDBLOCK, errno.EAGAIN):
- continue
- else:
- sys.exit(11)
-
-poll = select.poll()
-poll.register(g.fd, select.POLLIN | select.POLLPRI)
-
-unsynced = [True] * 3
-while any(unsynced):
- poll.poll()
- n = g.synchronise([async1, async2, async3])
- if n < 0 or n >= 3 or not unsynced[n]:
- sys.exit(12)
- unsynced[n] = False
- g.set_gamma_recv([async1, async2, async3][n])
-
-time.sleep(0.5)
-del g
-