Как создать тестовые примеры для изображений с помощью конструктора RGBA в библиотеке Gloss?

Я пытаюсь написать несколько тестовых примеров, используя HUnit в Haskell для функции, использующей библиотеку Gloss Graphics.

Функция:

makePicture :: Color -> Picture
makePicture c = Color c $ Circle 80

Если я покажу вызов этой функции с аргументом «черный» в консоли, вы увидите что-то вроде:

Color (RGBA 0.0 0.0 0.0 1.0) (Circle 80.0)

Который имеет тип изображения. Мой вопрос в том, как правильно написать тестовый пример для чего-то подобного?

Проблема возникает, если я пытаюсь написать тест, например:

test = TestCase $ assertEqual "makePicture" (Color (RGBA 0.0 0.0 0.0 1.0) (Circle 80.0)) (makePicture black)

Он не может скомпилироваться, потому что он говорит следующее:

error: Data constructor not in scope: RGBA

У кого-нибудь есть идеи, как я могу написать тестовый пример для своей функции?


person user5846939    schedule 01.03.2017    source источник


Ответы (1)


Я не знаю, где вы берете конструктор RGBA, но, глядя на пикши, такого конструктора для Color нет. Вероятно, вам нужен makeColor функция:

makeColor :: Float -> Float -> Float -> Float -> Color

РЕДАКТИРОВАТЬ: И да, user24...38 действительно существует RGBA, но в версии Gloss, на которую я смотрю, он является частью модуля Internal и не экспортируется в другое место. Как правило, внешние пользователи не должны использовать модули Internal, поскольку API может измениться или интерфейс может быть небезопасным (например, отсутствие поддержки инвариантов).

person Thomas M. DuBuisson    schedule 01.03.2017
comment
Такой конструктор есть, он определен в зависимости gloss, но Color абстрактный и конструктор не экспортируется. По сути, «такого конструктора не существует» — верное утверждение, но, возможно, это педантичное разграничение будет кому-то полезно для понимания. - person user2407038; 01.03.2017