Esempio n. 1
0
    def testOverlaps(self):
        # includes both ends
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        range = QgsRasterRange(float('NaN'), 10, QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        range = QgsRasterRange(0, float('NaN'), QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes left end
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMin)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes right end
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 50)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes neither end
        range = QgsRasterRange(0, 10, QgsRasterRange.Exclusive)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))
    def testOverlaps(self):
        # includes both ends
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        range = QgsRasterRange(float('NaN'), 10,
                               QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        range = QgsRasterRange(0, float('NaN'),
                               QgsRasterRange.IncludeMinAndMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes left end
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMin)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes right end
        range = QgsRasterRange(0, 10, QgsRasterRange.IncludeMax)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(10, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 50)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))

        # includes neither end
        range = QgsRasterRange(0, 10, QgsRasterRange.Exclusive)
        self.assertTrue(range.overlaps(QgsRasterRange(1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(0, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 9)))
        self.assertTrue(range.overlaps(QgsRasterRange(1, 11)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(10, 11)))
        self.assertFalse(range.overlaps(QgsRasterRange(-1, 0)))
        self.assertFalse(range.overlaps(QgsRasterRange(-10, -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(11, 12)))
        self.assertTrue(range.overlaps(QgsRasterRange(-1, float('NaN'))))
        self.assertTrue(range.overlaps(QgsRasterRange(1, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(10, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(11, float('NaN'))))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), -1)))
        self.assertFalse(range.overlaps(QgsRasterRange(float('NaN'), 0)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 1)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 10)))
        self.assertTrue(range.overlaps(QgsRasterRange(float('NaN'), 11)))
        self.assertTrue(
            range.overlaps(QgsRasterRange(float('NaN'), float('NaN'))))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(-1, 0, QgsRasterRange.IncludeMax)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.Exclusive)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMin)))
        self.assertFalse(
            range.overlaps(QgsRasterRange(10, 11, QgsRasterRange.IncludeMax)))