X-Git-Url: https://git.r.bdr.sh/rbdr/forum/blobdiff_plain/a7cf03c192470cbab13edeb1aec99e0c66dede10..HEAD:/src/lib/utils/glyph_hash.test.ts?ds=sidebyside diff --git a/src/lib/utils/glyph_hash.test.ts b/src/lib/utils/glyph_hash.test.ts index 5f57a2a..e791bab 100644 --- a/src/lib/utils/glyph_hash.test.ts +++ b/src/lib/utils/glyph_hash.test.ts @@ -2,67 +2,55 @@ import { getGlyphHash } from './glyph_hash'; import type { GlyphHash } from './glyph_hash'; type TestState = { - glyphHash?: GlyphHash + glyphHash?: GlyphHash; }; - describe('Glyph Hash utility', () => { - - test('it throws an exception if the string is too short', () => { - - expect(() => { - - getGlyphHash('short'); - }).toThrow(); - - expect(() => { - - getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); - }).toThrow(); - - expect(() => { - - getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEF'); - }).not.toThrow(); - }); - - test('it treats UUIDs with hyphens the same as those without', () => { - - const uuidWithHyphens = 'f7722355-2285-46c0-a55f-3483a826f3a6'; - const uuidWithoutHyphens = 'f7722355228546c0a55f3483a826f3a6'; - - expect(getGlyphHash(uuidWithHyphens)).toEqual(getGlyphHash(uuidWithoutHyphens)); - }); - - describe('it generates four sets of glyphs and colors', () => { - - const state: TestState = {}; - - beforeEach(() => { - - state.glyphHash = getGlyphHash('f7722355-2285-46c0-a55f-3483a826f3a6'); - }); - - test('there should be four glyph fragments', () => { - - expect(state.glyphHash.length).toBe(4); - }); - - test('each fragment should have a single character glyph', () => { - - for (const glyphHashFragment of state.glyphHash) { - expect(typeof glyphHashFragment.glyph).toBe('string'); - expect(glyphHashFragment.glyph.length).toBe(1); - } - }); - - test('each fragment should have a hexadecimal color', () => { - - for (const glyphHashFragment of state.glyphHash) { - expect(typeof glyphHashFragment.color).toBe('string'); - expect(glyphHashFragment.color.length).toBe(7); - expect(glyphHashFragment.color).toEqual(expect.stringMatching(/#[0-9a-f]{6}/)); - } - }); - }); + test('it throws an exception if the string is too short', () => { + expect(() => { + getGlyphHash('short'); + }).toThrow(); + + expect(() => { + getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'); + }).toThrow(); + + expect(() => { + getGlyphHash('abcdefghijklmnopqrstuvwxyzABCDEF'); + }).not.toThrow(); + }); + + test('it treats UUIDs with hyphens the same as those without', () => { + const uuidWithHyphens = 'f7722355-2285-46c0-a55f-3483a826f3a6'; + const uuidWithoutHyphens = 'f7722355228546c0a55f3483a826f3a6'; + + expect(getGlyphHash(uuidWithHyphens)).toEqual(getGlyphHash(uuidWithoutHyphens)); + }); + + describe('it generates four sets of glyphs and colors', () => { + const state: TestState = {}; + + beforeEach(() => { + state.glyphHash = getGlyphHash('f7722355-2285-46c0-a55f-3483a826f3a6'); + }); + + test('there should be four glyph fragments', () => { + expect(state.glyphHash.length).toBe(4); + }); + + test('each fragment should have a single character glyph', () => { + for (const glyphHashFragment of state.glyphHash) { + expect(typeof glyphHashFragment.glyph).toBe('string'); + expect(glyphHashFragment.glyph.length).toBe(1); + } + }); + + test('each fragment should have a hexadecimal color', () => { + for (const glyphHashFragment of state.glyphHash) { + expect(typeof glyphHashFragment.color).toBe('string'); + expect(glyphHashFragment.color.length).toBe(7); + expect(glyphHashFragment.color).toEqual(expect.stringMatching(/#[0-9a-f]{6}/)); + } + }); + }); });