diff options
| author | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-05-01 00:56:06 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <ruben@unlimited.pizza> | 2022-05-01 00:56:06 +0200 |
| commit | a7cf03c192470cbab13edeb1aec99e0c66dede10 (patch) | |
| tree | 581b4430d1de958dcb666bae80a7678332134602 /src/lib/utils/glyph_hash.test.ts | |
| parent | 010f307346e525ac2e4239a0549d2c1a4d6d102b (diff) | |
Update / use typescript
Diffstat (limited to 'src/lib/utils/glyph_hash.test.ts')
| -rw-r--r-- | src/lib/utils/glyph_hash.test.ts | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/lib/utils/glyph_hash.test.ts b/src/lib/utils/glyph_hash.test.ts new file mode 100644 index 0000000..5f57a2a --- /dev/null +++ b/src/lib/utils/glyph_hash.test.ts @@ -0,0 +1,68 @@ +import { getGlyphHash } from './glyph_hash'; +import type { GlyphHash } from './glyph_hash'; + +type TestState = { + 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}/)); + } + }); + }); +}); |