public void UnihanCodePointPackingShouldHaveExpectedResults()
        {
            for (int i = 0x3400; i < 0x4E00; ++i)
            {
                Assert.Equal(i, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(i)));
            }
            for (int i = 0x4E00; i < 0xA000; ++i)
            {
                Assert.Equal(i, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(i)));
            }
            for (int i = 0xF900; i < 0xFB00; ++i)
            {
                Assert.Equal(i, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(i)));
            }
            for (int i = 0x20000; i < 0x2F800; ++i)
            {
                Assert.Equal(i, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(i)));
            }
            for (int i = 0x2F800; i < 0x30000; ++i)
            {
                Assert.Equal(i, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(i)));
            }

            // The PackCodePoint method should fail for code points outside of the valid range.
            Assert.Throws <ArgumentOutOfRangeException>(() => UnihanCharacterData.PackCodePoint(0xA000));
            Assert.Throws <ArgumentOutOfRangeException>(() => UnihanCharacterData.PackCodePoint(0xFB00));
            Assert.Throws <ArgumentOutOfRangeException>(() => UnihanCharacterData.PackCodePoint(0x30000));

            // The UnpackCodePoint method should fail for values outside of the valid range.
            Assert.Throws <ArgumentOutOfRangeException>(() => UnihanCharacterData.UnpackCodePoint(-1));
            Assert.Throws <ArgumentOutOfRangeException>(() => UnihanCharacterData.UnpackCodePoint(0x20000));
        }
        public void CodePointPackingShouldRoundTrip(string blockName)
        {
            var block = Blocks.Single(b => b.Name == blockName);

            foreach (int codePoint in block.CodePointRange)
            {
                Assert.Equal(codePoint, UnihanCharacterData.UnpackCodePoint(UnihanCharacterData.PackCodePoint(codePoint)));
            }
        }