File: C:/Users/fred/anaconda3/Lib/site-packages/datashader/tests/test_composite.py
from __future__ import annotations
import numpy as np
from datashader.composite import add, saturate, over, source
src = np.array([[0x00000000, 0x00ffffff, 0xffffffff],
[0x7dff0000, 0x7d00ff00, 0x7d0000ff],
[0xffff0000, 0xff000000, 0x3a3b3c3d]], dtype='uint32')
clear = np.uint32(0)
clear_white = np.uint32(0x00ffffff)
white = np.uint32(0xffffffff)
blue = np.uint32(0xffff0000)
half_blue = np.uint32(0x7dff0000)
half_purple = np.uint32(0x7d7d007d)
def test_source():
o = src.copy()
o[0, :2] = clear
np.testing.assert_equal(source(src, clear), o)
o[0, :2] = clear_white
np.testing.assert_equal(source(src, clear_white), o)
o[0, :2] = half_blue
np.testing.assert_equal(source(src, half_blue), o)
def test_over():
o = src.copy()
o[0, 1] = 0
np.testing.assert_equal(over(src, clear), o)
np.testing.assert_equal(over(src, clear_white), o)
o = np.array([[0xffffffff, 0xffffffff, 0xffffffff],
[0xffff8282, 0xff82ff82, 0xff8282ff],
[0xffff0000, 0xff000000, 0xffd2d2d2]])
np.testing.assert_equal(over(src, white), o)
o = np.array([[0xffff0000, 0xffff0000, 0xffffffff],
[0xffff0000, 0xff827d00, 0xff82007d],
[0xffff0000, 0xff000000, 0xffd20d0d]])
np.testing.assert_equal(over(src, blue), o)
o = np.array([[0x7dff0000, 0x7dff0000, 0xffffffff],
[0xbcff0000, 0xbc56a800, 0xbc5600a8],
[0xffff0000, 0xff000000, 0x9ab51616]])
np.testing.assert_equal(over(src, half_blue), o)
o = np.array([[0x7d7d007d, 0x7d7d007d, 0xffffffff],
[0xbcd3002a, 0xbc2aa82a, 0xbc2a00d3],
[0xffff0000, 0xff000000, 0x9a641664]])
np.testing.assert_equal(over(src, half_purple), o)
def test_add():
o = src.copy()
o[0, 1] = 0
np.testing.assert_equal(add(src, clear), o)
np.testing.assert_equal(add(src, clear_white), o)
o = np.array([[0xffffffff, 0xffffffff, 0xffffffff],
[0xffffffff, 0xffffffff, 0xffffffff],
[0xffffffff, 0xffffffff, 0xffffffff]])
np.testing.assert_equal(add(src, white), o)
o = np.array([[0xffff0000, 0xffff0000, 0xffffffff],
[0xffff0000, 0xffff7d00, 0xffff007d],
[0xffff0000, 0xffff0000, 0xffff0d0d]])
np.testing.assert_equal(add(src, blue), o)
o = np.array([[0x7dff0000, 0x7dff0000, 0xffffffff],
[0xfaff0000, 0xfa7f7f00, 0xfa7f007f],
[0xffff0000, 0xff7d0000, 0xb7c01313]])
np.testing.assert_equal(add(src, half_blue), o)
o = np.array([[0x7d7d007d, 0x7d7d007d, 0xffffffff],
[0xfabe003e, 0xfa3e7f3e, 0xfa3e00be],
[0xffff003d, 0xff3d003d, 0xb7681368]])
np.testing.assert_equal(add(src, half_purple), o)
def test_saturate():
o = src.copy()
o[0, 1] = 0
np.testing.assert_equal(saturate(src, clear), o)
np.testing.assert_equal(saturate(src, clear_white), o)
o = np.full((3, 3), white, dtype='uint32')
np.testing.assert_equal(saturate(src, white), o)
o = np.full((3, 3), blue, dtype='uint32')
np.testing.assert_equal(saturate(src, blue), o)
o = np.array([[0x7dff0000, 0x7dff0000, 0xffff8282],
[0xfaff0000, 0xfa7f7f00, 0xfa7f007f],
[0xffff0000, 0xff7d0000, 0xb7c01313]])
np.testing.assert_equal(saturate(src, half_blue), o)
o = np.array([[0x7d7d007d, 0x7d7d007d, 0xffbf82bf],
[0xfabe003e, 0xfa3e7f3e, 0xfa3e00be],
[0xffbf003d, 0xff3d003d, 0xb7681368]])
np.testing.assert_equal(saturate(src, half_purple), o)