def test_same_size_all_pixel_diff(self): ref_img, actual_img, expect_diff_img = self.create_same_size_images( 101, 102, QColor(103, 104, 105, 106)) for i in range(ref_img.width()): for j in range(ref_img.height()): pixel_color = ref_img.pixelColor(i, j) actual_img.setPixelColor( i, j, QColor(*[c + 2 for c in pixel_color.getRgb()])) expect_diff_img.setPixelColor(i, j, QColor(2, 2, 2, 2)) differ = ImgDiffer() diff_img = differ.get_diff(actual_img, ref_img) assert expect_diff_img == diff_img assert differ.num_diffs_perc == 100 assert differ.max_pix_diff == 2 assert isclose(differ.diff_rms_perc, 100 * 2 / 255) report = differ.report() assert report == "RMS diff=0.78% (rms_tol_perc=0.00%), number of pixels changed=100.00% (num_tol_perc=None), max pix diff=2 (max_pix_diff_tol=None)" # various cases that should produce no diff: assert ImgDiffer(rms_tol_perc=1).get_diff(actual_img, ref_img) is None assert ImgDiffer(max_pix_diff_tol=2).get_diff(actual_img, ref_img) is None assert ImgDiffer(rms_tol_perc=1, max_pix_diff_tol=2).get_diff( actual_img, ref_img) is None # various cases that should produce same diff: assert ImgDiffer(rms_tol_perc=1 / 3).get_diff( actual_img, ref_img) == expect_diff_img assert ImgDiffer(max_pix_diff_tol=1).get_diff( actual_img, ref_img) == expect_diff_img
def test_same_size_one_pixel_diff(self): ref_img, actual_img, expect_diff_img = self.create_same_size_images( 101, 102, QColor(103, 104, 105, 106)) actual_img.setPixelColor(50, 50, QColor(0, 0, 0, 0)) expect_diff_img.setPixelColor(50, 50, QColor(103, 104, 105, 106)) differ = ImgDiffer() diff_img = differ.get_diff(actual_img, ref_img) assert expect_diff_img == diff_img assert differ.num_diffs_perc == 1 / (101 * 102) * 100 assert differ.max_pix_diff == 106 assert differ.diff_rms_perc == 100 * sqrt( pow(103, 2) + pow(104, 2) + pow(105, 2) + pow(106, 2)) / 2 / 255 report = differ.report() assert report == "RMS diff=40.98% (rms_tol_perc=0.00%), number of pixels changed=0.01% (num_tol_perc=None), max pix diff=106 (max_pix_diff_tol=None)" # various cases that should produce no diff: assert ImgDiffer(rms_tol_perc=42).get_diff(actual_img, ref_img) is None assert ImgDiffer(num_tol_perc=0.01).get_diff(actual_img, ref_img) is None assert ImgDiffer(max_pix_diff_tol=110).get_diff(actual_img, ref_img) is None assert ImgDiffer( rms_tol_perc=42, num_tol_perc=0.01, max_pix_diff_tol=110).get_diff( actual_img, ref_img) is None # various cases that should produce same diff: assert ImgDiffer(rms_tol_perc=40).get_diff(actual_img, ref_img) == expect_diff_img assert ImgDiffer(num_tol_perc=0.001).get_diff( actual_img, ref_img) == expect_diff_img assert ImgDiffer(max_pix_diff_tol=100).get_diff( actual_img, ref_img) == expect_diff_img
def test_same_img(self): widget1 = QLabel('test1') widget2 = QLabel('test1') ref_img = widget1.grab().toImage() img = widget2.grab().toImage() assert img == ref_img differ = ImgDiffer() assert differ.get_diff(img, ref_img) is None expect = 'RMS diff=0.00% (rms_tol_perc=0.00%), number of pixels changed=0.00% (num_tol_perc=None), max pix diff=0 (max_pix_diff_tol=None)' assert differ.report() == expect
def test(): widget_ref.show() widget_actual.show() ref_img = widget_ref.grab().toImage() img = widget_actual.grab().toImage() assert img != ref_img assert img.width() < ref_img.width() assert img.height() > ref_img.height() differ = ImgDiffer() diff = differ.get_diff(img, ref_img) # diff.save('actual_higher_thinner_diff.png') expect = QPixmap('actual_higher_thinner_diff.png') assert expect.toImage() == diff self.app.closeAllWindows()
def test(): widget_actual.show() widget_ref.setFixedSize(widget_actual.width(), widget_actual.height()) widget_ref.show() ref_img = widget_ref.grab().toImage() img = widget_actual.grab().toImage() assert img != ref_img assert img.size() == ref_img.size() differ = ImgDiffer() diff = differ.get_diff(img, ref_img) # diff.save('same_size_img_neq.png') expect = QPixmap('same_size_img_neq.png') assert expect.toImage() == diff report = differ.report() assert report == "RMS diff=37.22% (rms_tol_perc=0.00%), number of pixels changed=10.46% (num_tol_perc=None), max pix diff=240 (max_pix_diff_tol=None)" self.app.closeAllWindows()