1/* 2 * Copyright (c) 2015 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated 11 * unmodified and in its entirety in all distributions of the software, 12 * modified or unmodified, in source code or in binary form. 13 * 14 * Redistribution and use in source and binary forms, with or without 15 * modification, are permitted provided that the following conditions are 16 * met: redistributions of source code must retain the above copyright 17 * notice, this list of conditions and the following disclaimer; 18 * redistributions in binary form must reproduce the above copyright 19 * notice, this list of conditions and the following disclaimer in the 20 * documentation and/or other materials provided with the distribution; 21 * neither the name of the copyright holders nor the names of its 22 * contributors may be used to endorse or promote products derived from 23 * this software without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 * 37 * Authors: Andreas Sandberg 38 */ 39 40#include <gtest/gtest.h> 41 42#include "base/pixel.hh" 43 44static Pixel pixel_red(0xff, 0x00, 0x00); 45static Pixel pixel_green(0x00, 0xff, 0x00); 46static Pixel pixel_blue(0x00, 0x00, 0xff); 47 48TEST(FBTest, PixelConversionRGBA8888) 49{ 50 EXPECT_EQ(PixelConverter::rgba8888_le.fromPixel(pixel_red), 51 0x000000ffU); 52 EXPECT_EQ(PixelConverter::rgba8888_le.fromPixel(pixel_green), 53 0x0000ff00U); 54 EXPECT_EQ(PixelConverter::rgba8888_le.fromPixel(pixel_blue), 55 0x00ff0000U); 56 57 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(0x000000ffU), 58 pixel_red); 59 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(0x0000ff00U), 60 pixel_green); 61 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(0x00ff0000U), 62 pixel_blue); 63} 64 65TEST(FBTest, PixelConversionRGB565) 66{ 67 EXPECT_EQ(PixelConverter::rgb565_le.fromPixel(pixel_red), 0x001fU); 68 EXPECT_EQ(PixelConverter::rgb565_le.fromPixel(pixel_green), 0x07e0U); 69 EXPECT_EQ(PixelConverter::rgb565_le.fromPixel(pixel_blue), 0xf800U); 70 71 EXPECT_EQ(PixelConverter::rgb565_le.toPixel(0x001fU), pixel_red); 72 EXPECT_EQ(PixelConverter::rgb565_le.toPixel(0x07e0U), pixel_green); 73 EXPECT_EQ(PixelConverter::rgb565_le.toPixel(0xf800U), pixel_blue); 74} 75 76TEST(FBTest, PixelToMemRGBA8888LE) 77{ 78 uint8_t data[] = { 0xde, 0xad, 0xbe, 0xef }; 79 PixelConverter::rgba8888_le.fromPixel(data, pixel_red); 80 EXPECT_EQ(data[0], 0xff); 81 EXPECT_EQ(data[1], 0x00); 82 EXPECT_EQ(data[3], 0x00); 83 EXPECT_EQ(data[3], 0x00); 84 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(data), pixel_red); 85 86 PixelConverter::rgba8888_le.fromPixel(data, pixel_green); 87 EXPECT_EQ(data[0], 0x00); 88 EXPECT_EQ(data[1], 0xff); 89 EXPECT_EQ(data[3], 0x00); 90 EXPECT_EQ(data[3], 0x00); 91 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(data), pixel_green); 92 93 PixelConverter::rgba8888_le.fromPixel(data, pixel_blue); 94 EXPECT_EQ(data[0], 0x00); 95 EXPECT_EQ(data[1], 0x00); 96 EXPECT_EQ(data[2], 0xff); 97 EXPECT_EQ(data[3], 0x00); 98 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(data), pixel_blue); 99} 100 101TEST(FBTest, MemToPixelRGBA8888LE) 102{ 103 uint8_t red[] = { 0xff, 0x00, 0x00, 0x00 }; 104 uint8_t green[] = { 0x00, 0xff, 0x00, 0x00 }; 105 uint8_t blue[] = { 0x00, 0x00, 0xff, 0x00 }; 106 107 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(red), pixel_red); 108 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(green), pixel_green); 109 EXPECT_EQ(PixelConverter::rgba8888_le.toPixel(blue), pixel_blue); 110} 111 112TEST(FBTest, MemToPixelRGBA8888BE) 113{ 114 uint8_t red[] = { 0x00, 0x00, 0x00, 0xff }; 115 uint8_t green[] = { 0x00, 0x00, 0xff, 0x00 }; 116 uint8_t blue[] = { 0x00, 0xff, 0x00, 0x00 }; 117 118 EXPECT_EQ(PixelConverter::rgba8888_be.toPixel(red), pixel_red); 119 EXPECT_EQ(PixelConverter::rgba8888_be.toPixel(green), pixel_green); 120 EXPECT_EQ(PixelConverter::rgba8888_be.toPixel(blue), pixel_blue); 121} 122