def test_unspecified_new_dimensions(self):
        original_width, original_height = (800, 600)
        new_width, new_height = (None, None)
        rescaled_width, rescaled_height, top_margin, bottom_margin, left_margin, right_margin = \
            rescale_and_keep_aspect_ratio(original_width, original_height, new_width, new_height)

        self.assertEqual(800, rescaled_width)
        self.assertEqual(600, rescaled_height)
        self.assertEqual(0, top_margin)
        self.assertEqual(0, bottom_margin)
        self.assertEqual(0, left_margin)
        self.assertEqual(0, right_margin)
    def test_taller_aspect_ratio(self):
        original_width, original_height = (800, 600)
        new_width, new_height = (800, 800)
        rescaled_width, rescaled_height, top_margin, bottom_margin, left_margin, right_margin = \
            rescale_and_keep_aspect_ratio(original_width, original_height, new_width, new_height)

        self.assertEqual(800, rescaled_width)
        self.assertEqual(600, rescaled_height)
        self.assertEqual(100, top_margin)
        self.assertEqual(100, bottom_margin)
        self.assertEqual(0, left_margin)
        self.assertEqual(0, right_margin)
    def test_zero_dimensions(self):
        original_width, original_height = (800, 600)
        new_width, new_height = (0, 600)
        with self.assertRaises(ValueError):
            rescale_and_keep_aspect_ratio(
                original_width,
                original_height,
                new_width,
                new_height,
            )

        new_width, new_height = (800, 0)
        with self.assertRaises(ValueError):
            rescale_and_keep_aspect_ratio(
                original_width,
                original_height,
                new_width,
                new_height,
            )

        original_width, original_height = (0, 600)
        new_width, new_height = (800, 600)
        with self.assertRaises(ValueError):
            rescale_and_keep_aspect_ratio(
                original_width,
                original_height,
                new_width,
                new_height,
            )

        original_width, original_height = (800, 0)
        with self.assertRaises(ValueError):
            rescale_and_keep_aspect_ratio(
                original_width,
                original_height,
                new_width,
                new_height,
            )