package org.basex.util; import static org.basex.util.Token.*; import static org.junit.Assert.*; import java.nio.charset.*; import org.basex.*; import org.junit.Test; /** * This class tests String <-> Token conversions. * * @author BaseX Team 2005-17, BSD License * @author Leo Woerteler */ public final class UTF8Test extends SandboxTest { /** UTF8 character set. */ private static final Charset CS_UTF8 = Charset.availableCharsets().get(Strings.UTF8); /** * Tests for all valid code points if characters are properly converted. */ @Test public void string2token2string() { for(int i = 0; i <= Character.MAX_CODE_POINT; i++) { final String s = new String(Character.toChars(i)); assertEquals(s, string(token(s))); } } /** * Tests for all valid code points if characters are properly converted. */ @Test public void token2string() { for(int i = 0; i <= Character.MAX_CODE_POINT; i++) { if(i >= Character.MIN_SURROGATE && i <= Character.MAX_SURROGATE) continue; final String s = new String(Character.toChars(i)); assertEquals(s, string(s.getBytes(CS_UTF8))); } } /** * Tests entity parsing with codepoints. */ @Test public void entities() { for(int i = 0xA0; i <= Character.MAX_CODE_POINT; i++) { final String qu = query("'&#" + i + ";'"); assertEquals(new String(Character.toChars(i)), qu); if(i == 0x400) i = 0xFFF; else if(i == 0x1400) i = 0xFFFF; else if(i == 0x10400) i = 0x10FBFF; } } }