diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png b/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_16bsi_subquery-16BSI-135.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png b/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_16bui_subquery-16BUI-126.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png b/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_2bui_subquery-2BUI-3.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_32bf_subquery-32BF-450.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_32bsi_subquery-32BSI-264.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png b/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_32bui_subquery-32BUI-255.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png b/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_4bui_subquery-4BUI-15.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png b/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_64bf_subquery-64BF-3072.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png b/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_8bsi_subquery-8BSI-69.png differ diff --git a/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png b/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png new file mode 100644 index 000000000..38be9e295 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/data_subquery-data_8bui_subquery-8BUI-63.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png new file mode 100644 index 000000000..719c7e045 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bsi_subquery-16BSI-144.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png new file mode 100644 index 000000000..a6aa1a65d Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_16bui_subquery-16BUI-126.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png new file mode 100644 index 000000000..62aa1631a Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_2bui_subquery-2BUI-3.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png new file mode 100644 index 000000000..b134b2d24 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bsi_subquery-32BSI-129.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png new file mode 100644 index 000000000..5f8035a2d Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_32bui_subquery-32BUI-255.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png new file mode 100644 index 000000000..2667c0663 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_4bui_subquery-4BUI-15.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png new file mode 100644 index 000000000..85abadd9e Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bsi_subquery-8BSI-69.png differ diff --git a/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png new file mode 100644 index 000000000..06d6249a2 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/grayscale_subquery-grayscale_8bui_subquery-8BUI-63.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box1.png new file mode 100644 index 000000000..cae620513 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box2.png new file mode 100644 index 000000000..846981baa Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Cl--1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box1.png new file mode 100644 index 000000000..4fdf9ffbc Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box2.png new file mode 100644 index 000000000..846981baa Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc Cl--1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box1.png new file mode 100644 index 000000000..4fdf9ffbc Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box2.png new file mode 100644 index 000000000..846981baa Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64 Sc--0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box1.png new file mode 100644 index 000000000..cae620513 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box2.png new file mode 100644 index 000000000..846981baa Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-nodataedge-rgb_8bui C T:64x64--0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box2.png new file mode 100644 index 000000000..0669f5288 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box2.png new file mode 100644 index 000000000..0669f5288 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box2.png new file mode 100644 index 000000000..04135187e Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2 Sc-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box2.png new file mode 100644 index 000000000..04135187e Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C O:2-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box2.png new file mode 100644 index 000000000..62e35be30 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box2.png new file mode 100644 index 000000000..62e35be30 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box2.png new file mode 100644 index 000000000..5460a3836 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2 Sc-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box1.png new file mode 100644 index 000000000..981cf74df Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box2.png new file mode 100644 index 000000000..5460a3836 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui C T:16x16 O:2-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box2.png new file mode 100644 index 000000000..bc4e59d38 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box2.png new file mode 100644 index 000000000..bc4e59d38 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box2.png new file mode 100644 index 000000000..fbbbf9558 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2 Sc-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box2.png new file mode 100644 index 000000000..fbbbf9558 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui O:2-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box2.png new file mode 100644 index 000000000..bc4e59d38 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box2.png new file mode 100644 index 000000000..bc4e59d38 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc Cl-2-1-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box2.png new file mode 100644 index 000000000..3dbbb5942 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2 Sc-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box1.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box1.png new file mode 100644 index 000000000..14206c495 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box1.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box2.png b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box2.png new file mode 100644 index 000000000..3dbbb5942 Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_8bui-rgba_8bui T:16x16 O:2-2-0-box2.png differ diff --git a/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png b/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png new file mode 100644 index 000000000..d83016d2a Binary files /dev/null and b/tests/python_tests/images/support/pgraster/rgba_subquery-rgba_8bui_subquery-8BUI-255-0-0-255-255-255.png differ diff --git a/tests/python_tests/pgraster_test.py b/tests/python_tests/pgraster_test.py index 0d81a2ab1..8c55c6c1a 100644 --- a/tests/python_tests/pgraster_test.py +++ b/tests/python_tests/pgraster_test.py @@ -4,7 +4,7 @@ from nose.tools import * import atexit import cProfile, pstats, io import time -from utilities import execution_path, run_all +from utilities import execution_path, run_all, side_by_side_image from subprocess import Popen, PIPE import os, mapnik from Queue import Queue @@ -13,7 +13,6 @@ import sys import re from binascii import hexlify, unhexlify - MAPNIK_TEST_DBNAME = 'mapnik-tmp-pgraster-test-db' POSTGIS_TEMPLATE_DBNAME = 'template_postgis' DEBUG_OUTPUT=False @@ -113,6 +112,20 @@ def drop_imported(tabname, overview): for of in overview.split(','): psql_run('DROP TABLE IF EXISTS "o_' + of + '_' + tabname + '";') +def compare_images(expected,im): + if not os.path.exists(expected): + print 'generating expected image %s' % expected + im.save(expected,'png32') + expected_im = mapnik.Image.open(expected) + diff = expected.replace('.png','-diff.png') + if len(im.tostring("png32")) != len(expected_im.tostring("png32")): + compared = side_by_side_image(expected_im, im) + compared.save(diff) + assert False,'images do not match, check diff at %s' % diff + else: + if os.path.exists(diff): os.unlink(diff) + return True + if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ and createdb_and_dropdb_on_path() \ and psql_can_connect() \ @@ -271,7 +284,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - #im.save('/tmp/xfull.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s-box1.png' % (lyr.name,lbl,overview,clip) + compare_images(expected,im) # no data eq_(hexlify(im.view(3,3,1,1).tostring()), '00000000') eq_(hexlify(im.view(250,250,1,1).tostring()), '00000000') @@ -290,10 +304,12 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ newenv = mapnik.Box2d(166,-105,191,-77) mm.zoom_to_box(newenv) t0 = time.time() # we want wall time to include IO waits + im = mapnik.Image(mm.width, mm.height) mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') - #im.save('/tmp/xtenth.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s-box2.png' % (lyr.name,lbl,overview,clip) + compare_images(expected,im) # no data eq_(hexlify(im.view(255,255,1,1).tostring()), '00000000') eq_(hexlify(im.view(200,40,1,1).tostring()), '00000000') @@ -372,7 +388,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - #im.save('/tmp/xfull.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box1.png' % (lyr.name,tnam,lbl,overview,clip) + compare_images(expected,im) # no data eq_(hexlify(im.view(3,16,1,1).tostring()), '00000000') eq_(hexlify(im.view(128,16,1,1).tostring()), '00000000') @@ -389,10 +406,12 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ -12328997.49148983,4508957.34625536) mm.zoom_to_box(newenv) t0 = time.time() # we want wall time to include IO waits + im = mapnik.Image(mm.width, mm.height) mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:1/10') - #im.save('/tmp/xtenth.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s-%s-box2.png' % (lyr.name,tnam,lbl,overview,clip) + compare_images(expected,im) # no data eq_(hexlify(im.view(3,16,1,1).tostring()), '00000000') eq_(hexlify(im.view(128,16,1,1).tostring()), '00000000') @@ -486,7 +505,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - #im.save('/tmp/xfull.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (lyr.name,lbl,pixtype,value) + compare_images(expected,im) h = format(value, '02x') hex_v = h+h+h+'ff' h = format(val_a, '02x') @@ -600,7 +620,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - #im.save('/tmp/xfull.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s.png' % (lyr.name,lbl,pixtype,value) + compare_images(expected,im) h = format(value, '02x') hex_v = '0000ffff' hex_a = 'ff0000ff' @@ -719,7 +740,8 @@ if 'pgraster' in mapnik.DatasourceCache.plugin_names() \ mapnik.render(mm, im) lap = time.time() - t0 log('T ' + str(lap) + ' -- ' + lbl + ' E:full') - im.save('/tmp/xfull.png') # for debugging + expected = 'images/support/pgraster/%s-%s-%s-%s-%s-%s-%s-%s-%s.png' % (lyr.name,lbl, pixtype, r, g, b, a, g1, b1) + compare_images(expected,im) hex_v = format(r << 24 | g << 16 | b << 8 | a, '08x') hex_a = format(r << 24 | g1 << 16 | b << 8 | a, '08x') hex_b = format(r << 24 | g << 16 | b1 << 8 | a, '08x')