1import pytest
2
3from UM.Math.Color import Color
4
5half_color = 127/255
6
7test_validate_data = [
8    {"data_to_set": [255, 255, 255, 0], "expected": [1.0, 1.0, 1.0, 0.0]},
9    {"data_to_set": [0, 0, 0, 255], "expected": [0, 0, 0, 1.0]},
10    {"data_to_set": [127, 127, 127, 127], "expected": [half_color, half_color, half_color, half_color]},
11    {"data_to_set": [127, 1.0, 127, 127], "expected": [half_color, 1.0, half_color, half_color]}
12]
13
14@pytest.mark.parametrize("data", test_validate_data)
15def test_getAndSet(data):
16    color = Color(*data["data_to_set"])
17
18    assert color == Color(*data["expected"])
19
20    assert color.r == data["expected"][0]
21    assert color.g == data["expected"][1]
22    assert color.b == data["expected"][2]
23    assert color.a == data["expected"][3]
24
25    # And flip the data around to set the values one by one
26    reversed_data = data["data_to_set"][::-1]
27    color.setR(reversed_data[0])
28    color.setG(reversed_data[1])
29    color.setB(reversed_data[2])
30    color.setA(reversed_data[3])
31
32    assert color.r == data["expected"][3]
33    assert color.g == data["expected"][2]
34    assert color.b == data["expected"][1]
35    assert color.a == data["expected"][0]
36
37
38hex_data =[
39    {"data_to_set": "#FFFFFF", "expected": [1.0, 1.0, 1.0, 1.0]},
40    {"data_to_set": "#00000000", "expected": [0.0, 0.0, 0.0, 0.0]},
41    {"data_to_set": "#00cc99", "expected": [0 / 255, 204 / 255, 153 / 255, 1.0]},
42
43]
44
45@pytest.mark.parametrize("data", hex_data)
46def test_fromHexString(data):
47    color = Color.fromHexString(data["data_to_set"])
48    expected_color = Color(*data["expected"])
49    assert color == expected_color
50