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))); } }