pyembroidery/test/test_palette.py

106 wiersze
4.0 KiB
Python

from __future__ import print_function
import unittest
from pyembroidery import *
from pyembroidery.EmbThreadPec import *
from pyembroidery.EmbThread import build_unique_palette, build_nonrepeat_palette, build_palette
class TestPalettes(unittest.TestCase):
def test_unique_palette(self):
"""Similar elements should not plot to the same palette index"""
pattern = EmbPattern()
pattern += "#FF0001"
pattern += "Blue"
pattern += "Blue"
pattern += "Red"
threadset = get_thread_set()
palette = build_unique_palette(threadset,pattern.threadlist)
self.assertNotEqual(palette[0],palette[3]) # Red and altered Red
self.assertEqual(palette[1], palette[2]) # Blue and Blue
def test_unique_palette_large(self):
"""Excessive palette entries that all map, should be mapped"""
pattern = EmbPattern()
for x in range(0, 100):
pattern += "black"
threadset = get_thread_set()
palette = build_unique_palette(threadset, pattern.threadlist)
self.assertEqual(palette[0], palette[1])
def test_unique_palette_unmap(self):
"""Excessive palette entries can't all map, should map what it can and repeat"""
pattern = EmbPattern()
for i in range(0, 100):
thread = EmbThread()
thread.set_color(i, i, i)
pattern += thread
threadset = get_thread_set()
palette = build_unique_palette(threadset, pattern.threadlist)
palette.sort()
def test_unique_palette_max(self):
"""If the entries equal the list they should all map."""
pattern = EmbPattern()
threadset = get_thread_set()
for i in range(0, len(threadset)-2):
thread = EmbThread()
thread.set_color(i, i, i)
pattern += thread
palette = build_unique_palette(threadset, pattern.threadlist)
palette.sort()
for i in range(1,len(palette)):
self.assertNotEqual(palette[i-1], palette[i])
def test_nonrepeat_palette_moving(self):
"""The almost same color should not get plotted to the same palette index"""
pattern = EmbPattern()
pattern += "Red"
pattern += "Blue"
pattern += "#0100FF"
pattern += "Red"
threadset = get_thread_set()
palette = build_nonrepeat_palette(threadset,pattern.threadlist)
self.assertEqual(palette[0],palette[3]) # Red and Red
self.assertNotEqual(palette[1], palette[2]) # Blue and altered Blue
def test_nonrepeat_palette_stay_moved(self):
"""An almost same moved, only temporary"""
pattern = EmbPattern()
pattern += "Red"
pattern += "Blue"
pattern += "#0100FF"
pattern += "Red"
pattern += "#0100FF"
threadset = get_thread_set()
palette = build_nonrepeat_palette(threadset,pattern.threadlist)
self.assertEqual(palette[0],palette[3]) # Red and Red
self.assertNotEqual(palette[1], palette[2]) # Blue and altered Blue
self.assertNotEqual(palette[2], palette[4]) # same color, but color was moved
def test_nonrepeat_palette_same(self):
"""The same exact same color if repeated should remain"""
pattern = EmbPattern()
pattern += "Red"
pattern += "Blue"
pattern += "#0000FF" # actual blue
pattern += "Red"
threadset = get_thread_set()
palette = build_nonrepeat_palette(threadset,pattern.threadlist)
self.assertEqual(palette[0],palette[3]) # Red and Red
self.assertEqual(palette[1], palette[2]) # Blue and Blue
def test_palette(self):
"""Similar colors map to the same index"""
pattern = EmbPattern()
pattern += "#FF0001"
pattern += "Blue"
pattern += "Blue"
pattern += "Red"
threadset = get_thread_set()
palette = build_palette(threadset,pattern.threadlist)
self.assertEqual(palette[0],palette[3]) # Red and altered Red
self.assertEqual(palette[1], palette[2]) # Blue and Blue