/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.fontbox.cmap;

import java.io.IOException;

import junit.framework.TestCase;

/**
 * This will test the CMap implementation.
 *
 */
public class TestCMap extends TestCase 
{

    /**
     * Check whether the mapping is working correct.
     * @throws IOException If something went wrong during adding a mapping
     */
    public void testLookup() throws IOException
    {
        byte[] bs = new byte[1];
        bs[0] = (byte)200;

        CMap cMap = new CMap();
        cMap.addCharMapping(bs, "a");
        assertTrue("a".equals(cMap.toUnicode(200)));
    }
}

@@ -862,40 +862,272 @@
 on;%0A
-%0Aimport junit.framework.TestCase
+import java.io.InputStream;%0Aimport java.net.URL;%0A%0Aimport junit.framework.TestCase;%0A%0Aimport static junit.framework.TestCase.assertEquals;%0Aimport org.apache.fontbox.ttf.CmapSubtable;%0Aimport org.apache.fontbox.ttf.TTFParser;%0Aimport org.apache.fontbox.ttf.TrueTypeFont
 ;%0A%0A/
@@ -1609,11 +1609,925 @@
 );%0A    %7D
+%0A%0A    /**%0A     * PDFBOX-3997: test unicode that is above the basic bultilingual plane, here: helicopter%0A     * symbol, or D83D DE81 in the Noto Emoji font.%0A     *%0A     * @throws IOException%0A     */%0A    public void testPDFBox3997() throws IOException%0A    %7B%0A        InputStream is;%0A        try%0A        %7B%0A            System.out.println(%22Downloading Noto Emoji font...%22);%0A            is = new URL(%22https://issues.apache.org/jira/secure/attachment/12896461/NotoEmoji-Regular.ttf%22).openStream();%0A            System.out.println(%22Download finished!%22);%0A        %7D%0A        catch (IOException ex)%0A        %7B%0A            System.err.println(%22Noto Emoji font could not be downloaded, test skipped%22);%0A            return;%0A        %7D%0A        try (TrueTypeFont ttf = new TTFParser().parse(is))%0A        %7B%0A            CmapSubtable cmap = ttf.getUnicodeCmap(false);%0A            assertEquals(886, cmap.getGlyphId(0x1F681));%0A        %7D%0A    %7D
 %0A%7D%0A

add test