예제 #1
0
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    rgb = colormodel.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.black))

    rgb = colormodel.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('100.0', a3.str5(cmyk.black))

    rgb = colormodel.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('80.18', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('24.42', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('14.90', a3.str5(cmyk.black))

    rgb = colormodel.RGB(50, 123, 43)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('59.35', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('65.04', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('51.76', a3.str5(cmyk.black))
예제 #2
0
def test_rgb_to_cmyk():
    """
    Test translation function rgb_to_cmyk
    """
    print('Testing rgb_to_cmyk')
    # The function should guarantee accuracy to three decimal places
    rgb = introcs.RGB(255, 255, 255);
    cmyk = a3.rgb_to_cmyk(rgb);
    introcs.assert_equals(0.0, round(cmyk.cyan,3))
    introcs.assert_equals(0.0, round(cmyk.magenta,3))
    introcs.assert_equals(0.0, round(cmyk.yellow,3))
    introcs.assert_equals(0.0, round(cmyk.black,3))
    #testing all 0s
    rgb = introcs.RGB(0, 0, 0);
    cmyk = a3.rgb_to_cmyk(rgb);
    introcs.assert_equals(0.0, round(cmyk.cyan,3))
    introcs.assert_equals(0.0, round(cmyk.magenta,3))
    introcs.assert_equals(0.0, round(cmyk.yellow,3))
    introcs.assert_equals(100.0, round(cmyk.black,3))
    #testing normal color
    rgb = introcs.RGB(217, 43, 164);
    cmyk = a3.rgb_to_cmyk(rgb);
    introcs.assert_equals(0.0, round(cmyk.cyan,3))
    introcs.assert_equals(80.184, round(cmyk.magenta,3))
    introcs.assert_equals(24.424, round(cmyk.yellow,3))
    introcs.assert_equals(14.902, round(cmyk.black,3))
    print('Tests for rgb_to_cmyk passed')
예제 #3
0
def test_rgb_to_cmyk():
    """
    Test translation function rgb_to_cmyk
    """
    # We use a3.str5 to handle round-off error in comparisons
    rgb = cornell.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('0.000', a3.str5(cmyk.black))

    rgb = cornell.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('100.0', a3.str5(cmyk.black))

    rgb = cornell.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('80.18', a3.str5(cmyk.magenta))
    cornell.assert_equals('24.42', a3.str5(cmyk.yellow))
    cornell.assert_equals('14.90', a3.str5(cmyk.black))
예제 #4
0
 def register(self):
     """Initialize color values and force refresh"""
     self.rgb = colormodel.RGB(0, 255, 0)
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.update()
예제 #5
0
 def on_rgb_press(self,r,g,b):
     """Call back to rgb button"""
     self.rgb = colormodel.RGB(r, g, b)
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #6
0
 def on_rgb_press(self,r,g,b):
     """Call back to rgb button"""
     self.bot.clear()
     self.rgb = colormodel.RGB(r, g, b)
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #7
0
 def on_hsv_press(self,h,s,v):
     """Call back to hsv button"""
     self.hsv = colormodel.HSV(h, s, v)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #8
0
 def register(self):
     """Initialize color values and force refresh"""
     active = True
     self.rgb = colormodel.RGB(0, 255, 0)
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.update()
예제 #9
0
 def on_hsv_press(self,h,s,v):
     """Call back to hsv button"""
     self.bot.clear()
     self.hsv = colormodel.HSV(h, s, v)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #10
0
파일: a3test.py 프로젝트: qbeightol/cs1110
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    #Test rgb_to_cmyk() when C = M = Y = 0:
    rgb = colormodel.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("0.000", a3.round5(cmyk.black))

    #Test rgb_to_cmyk() when C' = M' = Y' = 1:
    rgb = colormodel.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("100.0", a3.round5(cmyk.black))

    #Test rgb_to_cmyk() when C' = K (=> C = 0):
    rgb = colormodel.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("80.18", a3.round5(cmyk.magenta))
    cunittest.assert_equals("24.42", a3.round5(cmyk.yellow))
    cunittest.assert_equals("14.90", a3.round5(cmyk.black))

    #Test rgb_to_cmyk() when M' = K (=> M = 0):
    rgb = colormodel.RGB(1, 100, 1)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("99.00", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("99.00", a3.round5(cmyk.yellow))
    cunittest.assert_equals("60.78", a3.round5(cmyk.black))

    #Test rgb_to_cmyk() when Y' = K (=> Y = 0):
    rgb = colormodel.RGB(101, 40, 141)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("28.37", a3.round5(cmyk.cyan))
    cunittest.assert_equals("71.63", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("44.71", a3.round5(cmyk.black))
예제 #11
0
파일: a3test.py 프로젝트: qbeightol/cs1110
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    #Test rgb_to_cmyk() when C = M = Y = 0:
    rgb = colormodel.RGB(255, 255, 255);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("0.000", a3.round5(cmyk.black))
    
    #Test rgb_to_cmyk() when C' = M' = Y' = 1:
    rgb = colormodel.RGB(0, 0, 0);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("100.0", a3.round5(cmyk.black))
    
    #Test rgb_to_cmyk() when C' = K (=> C = 0):
    rgb = colormodel.RGB(217, 43, 164);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("80.18", a3.round5(cmyk.magenta))
    cunittest.assert_equals("24.42", a3.round5(cmyk.yellow))
    cunittest.assert_equals("14.90", a3.round5(cmyk.black))
    
    #Test rgb_to_cmyk() when M' = K (=> M = 0):
    rgb = colormodel.RGB(1, 100, 1);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("99.00", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("99.00", a3.round5(cmyk.yellow))
    cunittest.assert_equals("60.78", a3.round5(cmyk.black))
    
    #Test rgb_to_cmyk() when Y' = K (=> Y = 0):
    rgb = colormodel.RGB(101, 40, 141);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("28.37", a3.round5(cmyk.cyan))
    cunittest.assert_equals("71.63", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("44.71", a3.round5(cmyk.black))
예제 #12
0
 def on_rgb_slide(self,r,g,b):
     """Call back to rgb sliders"""
     if not self.active:
         return
     red = int(round(r / 100.0))
     green = int(round(g / 100.0))
     blue = int(round(b / 100.0))
     self.rgb = colormodel.RGB(red, green, blue)
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #13
0
 def on_rgb_slide(self,r,g,b):
     """Call back to rgb sliders"""
     if not self.active:
         return
     red = int(round(r / 100.0))
     green = int(round(g / 100.0))
     blue = int(round(b / 100.0))
     self.rgb = colormodel.RGB(red, green, blue)
     self.hsv = a3.rgb_to_hsv(self.rgb)
     assert (self.hsv == None or type(self.hsv) == colormodel.HSV), 'rgb_to_hsv does not return a HSV object'
     self.cmyk = a3.rgb_to_cmyk(self.rgb)
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #14
0
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    rgb = colormodel.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("0.000", a3.round5(cmyk.black))

    rgb = colormodel.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("100.0", a3.round5(cmyk.black))

    rgb = colormodel.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("80.18", a3.round5(cmyk.magenta))
    cunittest.assert_equals("24.42", a3.round5(cmyk.yellow))
    cunittest.assert_equals("14.90", a3.round5(cmyk.black))
예제 #15
0
 def on_hsv_slide(self,h,s,v):
     """Call back to hsv sliders"""
     if not self.active:
         return
     hue = h / 100.0
     sat = s / 100.0
     val = v / 100.0
     self.hsv = colormodel.HSV(hue, sat, val)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #16
0
 def on_hsv_slide(self,h,s,v):
     """Call back to hsv sliders"""
     if not self.active:
         return
     hue = h / 100.0
     sat = s / 100.0
     val = v / 100.0
     self.hsv = colormodel.HSV(hue, sat, val)
     temp = a3.hsv_to_rgb(self.hsv)
     assert (temp == None or type(temp) == colormodel.RGB), 'hsv_to_rgb does not return a RGB object'
     self.rgb = self.rgb if temp is None else temp
     self.cmyk = a3.rgb_to_cmyk(self.rgb);
     assert (self.cmyk == None or type(self.cmyk) == colormodel.CMYK), 'rgb_to_cmyk does not return a CMYK object'
     self.update()
예제 #17
0
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    rgb = colormodel.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.black))

    rgb = colormodel.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cornelltest.assert_equals("100.0", a3.round5(cmyk.black))

    rgb = colormodel.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cornelltest.assert_equals("80.18", a3.round5(cmyk.magenta))
    cornelltest.assert_equals("24.42", a3.round5(cmyk.yellow))
    cornelltest.assert_equals("14.90", a3.round5(cmyk.black))

    rgb = colormodel.RGB(175, 234, 18)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals("25.21", a3.round5(cmyk.cyan))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cornelltest.assert_equals("92.31", a3.round5(cmyk.yellow))
    cornelltest.assert_equals("8.235", a3.round5(cmyk.black))

    rgb = colormodel.RGB(15, 5, 75)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals("80.00", a3.round5(cmyk.cyan))
    cornelltest.assert_equals("93.33", a3.round5(cmyk.magenta))
    cornelltest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cornelltest.assert_equals("70.59", a3.round5(cmyk.black))
예제 #18
0
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    rgb = colormodel.RGB(255, 255, 255)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.black))

    rgb = colormodel.RGB(0, 0, 0)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('100.0', a3.str5(cmyk.black))

    rgb = colormodel.RGB(217, 43, 164)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('80.18', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('24.42', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('14.90', a3.str5(cmyk.black))

    rgb = colormodel.RGB(1, 3, 9)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('88.89', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('66.67', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('96.47', a3.str5(cmyk.black))

    rgb = colormodel.RGB(50, 80, 45)
    cmyk = a3.rgb_to_cmyk(rgb)
    cornelltest.assert_equals('37.50', a3.str5(cmyk.cyan))
    cornelltest.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornelltest.assert_equals('43.75', a3.str5(cmyk.yellow))
    cornelltest.assert_equals('68.63', a3.str5(cmyk.black))
예제 #19
0
def test_rgb_to_cmyk():
    """
    Test translation function rgb_to_cmyk
    """
    # We use a3.str5 to handle round-off error in comparisons
    rgb = cornell.RGB(255, 255, 255);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('0.000', a3.str5(cmyk.black))
    
    rgb = cornell.RGB(0, 0, 0);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('0.000', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('100.0', a3.str5(cmyk.black))
        
    rgb = cornell.RGB(217, 43, 164);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('80.18', a3.str5(cmyk.magenta))
    cornell.assert_equals('24.42', a3.str5(cmyk.yellow))
    cornell.assert_equals('14.90', a3.str5(cmyk.black))
    
    rgb = cornell.RGB(5, 17, 150);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('96.67', a3.str5(cmyk.cyan))
    cornell.assert_equals('88.67', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('41.18', a3.str5(cmyk.black))
    
    rgb = cornell.RGB(254, 17, 3);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('0.000', a3.str5(cmyk.cyan))
    cornell.assert_equals('93.31', a3.str5(cmyk.magenta))
    cornell.assert_equals('98.82', a3.str5(cmyk.yellow))
    cornell.assert_equals('0.392', a3.str5(cmyk.black))
    
    rgb = cornell.RGB(75, 3, 179);
    cmyk = a3.rgb_to_cmyk(rgb);
    cornell.assert_equals('58.10', a3.str5(cmyk.cyan))
    cornell.assert_equals('98.32', a3.str5(cmyk.magenta))
    cornell.assert_equals('0.000', a3.str5(cmyk.yellow))
    cornell.assert_equals('29.80', a3.str5(cmyk.black))
예제 #20
0
def test_rgb_to_cmyk():
    """Test rgb_to_cmyk"""
    rgb = colormodel.RGB(255, 255, 255);
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("0.000", a3.round5(cmyk.black))
    
    rgb = colormodel.RGB(0, 0, 0); 
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("100.0", a3.round5(cmyk.black))

    rgb = colormodel.RGB(217, 43, 164); #R is biggest
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("80.18", a3.round5(cmyk.magenta))
    cunittest.assert_equals("24.42", a3.round5(cmyk.yellow))
    cunittest.assert_equals("14.90", a3.round5(cmyk.black))
    
    rgb = colormodel.RGB(0, 100, 200); #B is biggest
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("100.0", a3.round5(cmyk.cyan))
    cunittest.assert_equals("50.00", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("21.57", a3.round5(cmyk.black))

    rgb = colormodel.RGB(27, 115, 30); #G is biggest
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("76.52", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("73.91", a3.round5(cmyk.yellow))
    cunittest.assert_equals("54.90", a3.round5(cmyk.black))

    rgb = colormodel.RGB(112, 112, 112); #All equal
    cmyk = a3.rgb_to_cmyk(rgb);
    cunittest.assert_equals("0.000", a3.round5(cmyk.cyan))
    cunittest.assert_equals("0.000", a3.round5(cmyk.magenta))
    cunittest.assert_equals("0.000", a3.round5(cmyk.yellow))
    cunittest.assert_equals("56.08", a3.round5(cmyk.black))