/*
 * Copyright (C) 2013 Google Inc. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1.  Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 * 2.  Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

// Tests for the Font class.

#include "config.h"

#include "platform/fonts/Font.h"

#include <gtest/gtest.h>

namespace WebCore {

static void TestSpecificUCharRange(UChar rangeStart, UChar rangeEnd)
{
    UChar below[1];
    UChar start[1];
    UChar midway[1];
    UChar end[1];
    UChar above[1];

    below[0] = rangeStart - 1;
    start[0] = rangeStart;
    midway[0] = ((int)rangeStart + (int)rangeEnd) / 2;
    end[0] = rangeEnd;
    above[0] = rangeEnd + 1;

    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(below, 1));
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(start, 1));
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(midway, 1));
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(end, 1));
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(above, 1));
}

TEST(FontTest, TestCharacterRangeCodePath)
{
    static UChar c1[] = { 0x0 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 1));

    TestSpecificUCharRange(0x2E5, 0x2E9);
    TestSpecificUCharRange(0x300, 0x36F);
    TestSpecificUCharRange(0x0591, 0x05BD);
    TestSpecificUCharRange(0x05BF, 0x05CF);
    TestSpecificUCharRange(0x0600, 0x109F);
    TestSpecificUCharRange(0x1100, 0x11FF);
    TestSpecificUCharRange(0x135D, 0x135F);
    TestSpecificUCharRange(0x1700, 0x18AF);
    TestSpecificUCharRange(0x1900, 0x194F);
    TestSpecificUCharRange(0x1980, 0x19DF);
    TestSpecificUCharRange(0x1A00, 0x1CFF);

    static UChar c2[] = { 0x1DBF };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 1));
    static UChar c3[] = { 0x1DC0 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 1));
    static UChar c4[] = { 0x1DD0 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 1));
    static UChar c5[] = { 0x1DFF };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c5, 1));
    static UChar c6[] = { 0x1E00 };
    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 1));
    static UChar c7[] = { 0x2000 };
    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c7, 1));
    static UChar c8[] = { 0x2001 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c8, 1));

    TestSpecificUCharRange(0x20D0, 0x20FF);
    TestSpecificUCharRange(0x2CEF, 0x2CF1);
    TestSpecificUCharRange(0x302A, 0x302F);

    TestSpecificUCharRange(0xA67C, 0xA67D);
    TestSpecificUCharRange(0xA6F0, 0xA6F1);
    TestSpecificUCharRange(0xA800, 0xABFF);

    TestSpecificUCharRange(0xD7B0, 0xD7FF);
    TestSpecificUCharRange(0xFE00, 0xFE0F);
    TestSpecificUCharRange(0xFE20, 0xFE2F);
}

TEST(FontTest, TestCharacterRangeCodePathSurrogate1)
{
    /* To be surrogate ... */
    /* 1st character must be 0xD800 .. 0xDBFF */
    /* 2nd character must be 0xdc00 .. 0xdfff */

    /* The following 5 should all be Simple because they are not surrogate. */
    static UChar c1[] = { 0xD800, 0xDBFE };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
    static UChar c2[] = { 0xD800, 0xE000 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 2));
    static UChar c3[] = { 0xDBFF, 0xDBFE };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c3, 2));
    static UChar c4[] = { 0xDBFF, 0xE000 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c4, 2));
    static UChar c5[] = { 0xDC00, 0xDBFF };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c5, 2));

    /* To be Complex, the Supplementary Character must be in either */
    /* U+1F1E6 through U+1F1FF or U+E0100 through U+E01EF. */
    /* That is, a lead of 0xD83C with trail 0xDDE6 .. 0xDDFF or */
    /* a lead of 0xDB40 with trail 0xDD00 .. 0xDDEF. */
    static UChar c6[] = { 0xD83C, 0xDDE5 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c6, 2));
    static UChar c7[] = { 0xD83C, 0xDDE6 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
    static UChar c8[] = { 0xD83C, 0xDDF0 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
    static UChar c9[] = { 0xD83C, 0xDDFF };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 2));
    static UChar c10[] = { 0xD83C, 0xDE00 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c10, 2));

    static UChar c11[] = { 0xDB40, 0xDCFF };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c11, 2));
    static UChar c12[] = { 0xDB40, 0xDD00 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c12, 2));
    static UChar c13[] = { 0xDB40, 0xDDED };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c13, 2));
    static UChar c14[] = { 0xDB40, 0xDDEF };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c14, 2));
    static UChar c15[] = { 0xDB40, 0xDDF0 };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c15, 2));
}

TEST(FontTest, TestCharacterRangeCodePathString)
{
    // Simple-Simple is still simple
    static UChar c1[] = { 0x2FF, 0x2FF };
    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
    // Complex-Simple is Complex
    static UChar c2[] = { 0x300, 0x2FF };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c2, 2));
    // Simple-Complex is Complex
    static UChar c3[] = { 0x2FF, 0x330 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 2));
    // Complex-Complex is Complex
    static UChar c4[] = { 0x36F, 0x330 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 2));
    // SimpleWithGlyphOverflow-Simple is SimpleWithGlyphOverflow
    static UChar c5[] = { 0x1E00, 0x2FF };
    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c5, 2));
    // Simple-SimpleWithGlyphOverflow is SimpleWithGlyphOverflow
    static UChar c6[] = { 0x2FF, 0x2000 };
    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 2));
    // SimpleWithGlyphOverflow-Complex is Complex
    static UChar c7[] = { 0x1E00, 0x330 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
    // Complex-SimpleWithGlyphOverflow is Complex
    static UChar c8[] = { 0x330, 0x2000 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
    // Surrogate-Complex is Complex
    static UChar c9[] = { 0xD83C, 0xDDE5, 0x330 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 3));
    // Complex-Surrogate is Complex
    static UChar c10[] = { 0x330, 0xD83C, 0xDDE5 };
    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c10, 3));
}

static void TestSpecificUChar32RangeIdeograph(UChar32 rangeStart, UChar32 rangeEnd)
{
    EXPECT_FALSE(Font::isCJKIdeograph(rangeStart - 1));
    EXPECT_TRUE(Font::isCJKIdeograph(rangeStart));
    EXPECT_TRUE(Font::isCJKIdeograph((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
    EXPECT_TRUE(Font::isCJKIdeograph(rangeEnd));
    EXPECT_FALSE(Font::isCJKIdeograph(rangeEnd + 1));
}

TEST(FontTest, TestIsCJKIdeograph)
{
    // The basic CJK Unified Ideographs block.
    TestSpecificUChar32RangeIdeograph(0x4E00, 0x9FFF);
    // CJK Unified Ideographs Extension A.
    TestSpecificUChar32RangeIdeograph(0x3400, 0x4DBF);
    // CJK Unified Ideographs Extension A and Kangxi Radicals.
    TestSpecificUChar32RangeIdeograph(0x2E80, 0x2FDF);
    // CJK Strokes.
    TestSpecificUChar32RangeIdeograph(0x31C0, 0x31EF);
    // CJK Compatibility Ideographs.
    TestSpecificUChar32RangeIdeograph(0xF900, 0xFAFF);
    // CJK Unified Ideographs Extension B.
    TestSpecificUChar32RangeIdeograph(0x20000, 0x2A6DF);
    // CJK Unified Ideographs Extension C.
    // CJK Unified Ideographs Extension D.
    TestSpecificUChar32RangeIdeograph(0x2A700, 0x2B81F);
    // CJK Compatibility Ideographs Supplement.
    TestSpecificUChar32RangeIdeograph(0x2F800, 0x2FA1F);
}

static void TestSpecificUChar32RangeIdeographSymbol(UChar32 rangeStart, UChar32 rangeEnd)
{
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeStart - 1));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeStart));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeEnd));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeEnd + 1));
}

TEST(FontTest, TestIsCJKIdeographOrSymbol)
{
    // CJK Compatibility Ideographs Supplement.
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2C7));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CA));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CB));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2D9));

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2020));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2021));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2030));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203B));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203C));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2042));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2047));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2048));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2049));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2051));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DD));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DE));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2100));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2103));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2105));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2109));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x210A));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2113));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2116));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2121));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x212B));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x213B));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2150));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2151));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2152));

    TestSpecificUChar32RangeIdeographSymbol(0x2156, 0x215A);
    TestSpecificUChar32RangeIdeographSymbol(0x2160, 0x216B);
    TestSpecificUChar32RangeIdeographSymbol(0x2170, 0x217B);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x217F));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2189));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2307));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2312));

    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23BD));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23BE));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23C4));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CC));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23CD));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CE));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2423));

    TestSpecificUChar32RangeIdeographSymbol(0x2460, 0x2492);
    TestSpecificUChar32RangeIdeographSymbol(0x249C, 0x24FF);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A0));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A1));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A2));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AA));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AB));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B1));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B2));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B3));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B6));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B7));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BC));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BD));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C0));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C1));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C6));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C7));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C9));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CB));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CC));

    TestSpecificUChar32RangeIdeographSymbol(0x25CE, 0x25D3);
    TestSpecificUChar32RangeIdeographSymbol(0x25E2, 0x25E6);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25EF));

    TestSpecificUChar32RangeIdeographSymbol(0x2600, 0x2603);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2605));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2606));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x260E));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2616));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2617));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2640));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2642));

    TestSpecificUChar32RangeIdeographSymbol(0x2660, 0x266F);
    TestSpecificUChar32RangeIdeographSymbol(0x2672, 0x267D);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26A0));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BD));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BE));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2713));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x271A));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x273F));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2740));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2756));

    TestSpecificUChar32RangeIdeographSymbol(0x2776, 0x277F);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2B1A));

    TestSpecificUChar32RangeIdeographSymbol(0x2FF0, 0x302F);
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3031));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x312F));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x3130));

    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x318F));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3190));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x319F));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x31BF));

    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x31FF));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3200));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3300));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x33FF));

    TestSpecificUChar32RangeIdeographSymbol(0xF860, 0xF862);
    TestSpecificUChar32RangeIdeographSymbol(0xFE30, 0xFE4F);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE10));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE11));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE12));
    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE19));

    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF0D));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1B));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1C));
    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1E));

    TestSpecificUChar32RangeIdeographSymbol(0xFF00, 0xFFEF);

    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x1F100));

    TestSpecificUChar32RangeIdeographSymbol(0x1F110, 0x1F129);
    TestSpecificUChar32RangeIdeographSymbol(0x1F130, 0x1F149);
    TestSpecificUChar32RangeIdeographSymbol(0x1F150, 0x1F169);
    TestSpecificUChar32RangeIdeographSymbol(0x1F170, 0x1F189);
    TestSpecificUChar32RangeIdeographSymbol(0x1F200, 0x1F6FF);
}

} // namespace WebCore

