def test_six_units_output(self): """ Tests the output after hex codes of 6 units are passed in. """ self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#FFFFFF"), [255, 255, 255]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#000000"), [0, 0, 0]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#112233"), [17, 34, 51]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#AABBCC"), [170, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#11BBCC"), [17, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#2955C0"), [41, 85, 192]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#32A852"), [50, 168, 82]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#EB4034"), [235, 64, 52]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#4287F5"), [66, 135, 245]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#FCBA03"), [252, 186, 3])
def test_number_of_parameters(self): """ Makes sure that a type error is thrown when 3 parameters are not given in. """ self.assertRaises(TypeError, ColourConverter().convert_rgb_to_hex, 1) self.assertRaises(TypeError, ColourConverter().convert_rgb_to_hex, 1, 2) self.assertRaises(TypeError, ColourConverter().convert_rgb_to_hex, 1, 2, 3, 4)
def rgb_updated(self, input_boxes, colour_box, colours): """ The method that is called when an RGB input box has been inputted to, meaning the hex box is changed. Args: input_boxes: list, contains all the input boxes in the application colour_box: Label, the box which displays the colour inputted colours: object, the main colours for the application """ red = input_boxes["red"].get() green = input_boxes["green"].get() blue = input_boxes["blue"].get() colour_inputs = [ input_boxes["red"], input_boxes["green"], input_boxes["blue"] ] valid_input = True for colour_input in colour_inputs: current_colour_value = colour_input.get() if (current_colour_value.isdigit() is False) or (int(current_colour_value) > 255): self.display_invalid_input(colour_input, colours) valid_input = False else: colour_input.configure(background=colours["secondary"]) if valid_input is True: hex_value = ColourConverter().convert_rgb_to_hex(red, green, blue) colours["colour box"] = f"#{hex_value}" InterfaceUpdater.update_colour_box(self, colour_box, colours) input_boxes["hex"].delete(0, "end") input_boxes["hex"].insert(0, hex_value)
def hex_updated(self, input_boxes, colour_box, colours): """ The method that is called when the hex input box has been inputted to, meaning the RGB boxes are changed. Args: input_boxes: list, contains all the input boxes in the application colour_box: Label, the box which displays the colour inputted colours: object, the main colours for the application """ hex_value = input_boxes["hex"].get() rgb_values = ColourConverter().convert_hex_to_rgb(f"#{hex_value}") if rgb_values != "Invalid": input_boxes["hex"].configure(background=colours["secondary"]) colours["colour box"] = f"#{hex_value}" self.update_colour_box(colour_box, colours) input_boxes["red"].delete(0, "end") input_boxes["red"].insert(0, rgb_values[0]) input_boxes["green"].delete(0, "end") input_boxes["green"].insert(0, rgb_values[1]) input_boxes["blue"].delete(0, "end") input_boxes["blue"].insert(0, rgb_values[2]) else: self.display_invalid_input(input_boxes["hex"], colours)
def test_three_units_output(self): """ Tests the output after hex codes of 3 units are passed in. """ self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#FFF"), [255, 255, 255]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#000"), [0, 0, 0]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#123"), [17, 34, 51]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#ABC"), [170, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#1BC"), [17, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#BC9"), [187, 204, 153]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#B5E"), [187, 85, 238]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#45E"), [68, 85, 238]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#F12"), [255, 17, 34]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#5D6"), [85, 221, 102])
def test_output(self): """ Makes sure the correct value is outputted when valid inputs are given in. """ self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(255, 255, 255), "FFFFFF") self.assertAlmostEqual(ColourConverter().convert_rgb_to_hex(0, 0, 0), "000000") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(208, 19, 126), "D0137E") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(35, 227, 59), "23E33B") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(104, 254, 238), "68FEEE") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(205, 75, 14), "CD4B0E") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(104, 108, 132), "686C84") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(61, 131, 121), "3D8379") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(116, 179, 26), "74B31A") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(165, 138, 69), "A58A45")
def test_data_types(self): """ Makes sure that certain data types inputted in gives the "invalid" output. """ self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(3.3, 1.4, 12.3), "Invalid") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(True, False, True), "Invalid") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex("12", "32", "87"), "0C2057") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(12, 32, 87), "0C2057") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(-12, -32, -87), "Invalid") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex("A", "B", "C"), "Invalid") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex("%", "4", "A"), "Invalid") self.assertAlmostEqual( ColourConverter().convert_rgb_to_hex(None, None, None), "Invalid")
def test_casing(self): """ Makes sure that a correct answer is still outputted no matter the case the user uses. """ self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#ABCDEF"), [171, 205, 239]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#abcdef"), [171, 205, 239]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("ABCDEF"), [171, 205, 239]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("abcdef"), [171, 205, 239]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#ABC123"), [171, 193, 35]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#abc123"), [171, 193, 35]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("ABC123"), [171, 193, 35]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("abc123"), [171, 193, 35])
def test_data_types(self): """ Makes sure that certain data types output the "invalid" message """ self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(True), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(False), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(123456), [18, 52, 86]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(1.3), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb({"a": 2}), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(None), "Invalid")
def test_without_hashtags(self): """ Tests that values where hashtags are not included still provide an RGB answer. """ self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("FFFFFF"), [255, 255, 255]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("000000"), [0, 0, 0]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("112233"), [17, 34, 51]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("AABBCC"), [170, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("11BBCC"), [17, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("2955C0"), [41, 85, 192]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("32A852"), [50, 168, 82]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("EB4034"), [235, 64, 52]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("4287F5"), [66, 135, 245]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("FCBA03"), [252, 186, 3]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("FFF"), [255, 255, 255]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("000"), [0, 0, 0]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("123"), [17, 34, 51]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("ABC"), [170, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("1BC"), [17, 187, 204]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("BC9"), [187, 204, 153]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("B5E"), [187, 85, 238]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("45E"), [68, 85, 238]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("F12"), [255, 17, 34]) self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("5D6"), [85, 221, 102])
def test_invalid(self): """ Makes sure that invalid inputs provide an "invalid" message. """ # Lengths self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("ABC1234"), "Invalid") self.assertAlmostEqual( ColourConverter().convert_hex_to_rgb("#ABC1234"), "Invalid") self.assertAlmostEqual( ColourConverter().convert_hex_to_rgb("#ABCDEFG"), "Invalid") self.assertAlmostEqual( ColourConverter().convert_hex_to_rgb("#1234567"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#ABCDE"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#12345"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#A2B4C"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#ABCD"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#1234"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#A2C4"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#AB"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#10"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#1F"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#A"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#0"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb(""), "Invalid") # Invalid characters self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#123AH4"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#PKLUTR"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#PKL"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#%A1"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#%A1456"), "Invalid") self.assertAlmostEqual(ColourConverter().convert_hex_to_rgb("#%^$'#/"), "Invalid")