def test_exact_1(self): # One color colors = ColorExact({0: self.red}) self.assertEqual(colors._clauses(band='r'), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='a'), [('n == 0', self.red.a)]) self.assertEqual( colors._expression(band='r'), 'where(n == 0, {true}, {false})'.format( true=self.red.r, false=ColorExact.BACKGROUND.r)) self.assertEqual( colors._expression(band='a'), 'where(n == 0, {true}, {false})'.format( true=self.red.a, false=ColorExact.BACKGROUND.a))
def test_exact_0(self): # Empty colors = ColorExact() self.assertEqual(colors._clauses(band='r'), []) self.assertEqual(colors._clauses(band='a'), []) self.assertEqual(colors._expression(band='r'), None) self.assertEqual(colors._expression(band='a'), None) # Empty, with nodata - no-op self.assertEqual(colors._clauses(band='r', nodata=0), []) self.assertEqual(colors._clauses(band='a', nodata=0), []) self.assertEqual(colors._expression(band='r', nodata=0), None) self.assertEqual(colors._expression(band='a', nodata=0), None)
def test_exact_2(self): # Two colors colors = ColorExact({0: self.red, 2: self.green}) self.assertEqual(colors._clauses(band='r'), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='g'), [('n == 2', self.green.g)]) self.assertEqual(colors._clauses(band='a'), [('n == 0', self.red.a), ('n == 2', self.green.a)]) self.assertEqual( colors._expression(band='r'), 'where(n == 0, {red}, {false})'.format( red=self.red.r, false=ColorExact.BACKGROUND.r )) self.assertEqual( colors._expression(band='g'), 'where(n == 2, {green}, {false})'.format( green=self.green.g, false=ColorExact.BACKGROUND.g )) self.assertEqual( colors._expression(band='a'), 'where(n == 2, {green}, where(n == 0, {red}, {false}))'.format( red=self.red.a, green=self.green.a, false=ColorExact.BACKGROUND.a )) # Two colors, with no data - should look like "One color" above. colors = ColorExact({0: self.red, 2: self.green}) self.assertEqual(colors._clauses(band='r', nodata=2), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='a', nodata=2), [('n == 0', self.red.a)]) self.assertEqual(colors._expression(band='r', nodata=2), 'where(n == 0, {true}, {false})'.format( true=self.red.r, false=ColorExact.BACKGROUND.r )) self.assertEqual(colors._expression(band='a', nodata=2), 'where(n == 0, {true}, {false})'.format( true=self.red.a, false=ColorExact.BACKGROUND.a ))
def test_exact_1(self): # One color colors = ColorExact({0: self.red}) self.assertEqual(colors._clauses(band='r'), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='a'), [('n == 0', self.red.a)]) self.assertEqual(colors._expression(band='r'), 'where(n == 0, {true}, {false})'.format( true=self.red.r, false=ColorExact.BACKGROUND.r )) self.assertEqual(colors._expression(band='a'), 'where(n == 0, {true}, {false})'.format( true=self.red.a, false=ColorExact.BACKGROUND.a ))
def test_exact_2(self): # Two colors colors = ColorExact({0: self.red, 2: self.green}) self.assertEqual(colors._clauses(band='r'), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='g'), [('n == 2', self.green.g)]) self.assertEqual(colors._clauses(band='a'), [('n == 0', self.red.a), ('n == 2', self.green.a)]) self.assertEqual( colors._expression(band='r'), 'where(n == 0, {red}, {false})'.format( red=self.red.r, false=ColorExact.BACKGROUND.r)) self.assertEqual( colors._expression(band='g'), 'where(n == 2, {green}, {false})'.format( green=self.green.g, false=ColorExact.BACKGROUND.g)) self.assertEqual( colors._expression(band='a'), 'where(n == 2, {green}, where(n == 0, {red}, {false}))'.format( red=self.red.a, green=self.green.a, false=ColorExact.BACKGROUND.a)) # Two colors, with no data - should look like "One color" above. colors = ColorExact({0: self.red, 2: self.green}) self.assertEqual(colors._clauses(band='r', nodata=2), [('n == 0', self.red.r)]) self.assertEqual(colors._clauses(band='a', nodata=2), [('n == 0', self.red.a)]) self.assertEqual( colors._expression(band='r', nodata=2), 'where(n == 0, {true}, {false})'.format( true=self.red.r, false=ColorExact.BACKGROUND.r)) self.assertEqual( colors._expression(band='a', nodata=2), 'where(n == 0, {true}, {false})'.format( true=self.red.a, false=ColorExact.BACKGROUND.a))