mirror of
https://github.com/tiennm99/ai-coding-workflow-labs.git
synced 2026-08-13 13:22:58 +00:00
feat: add emoji pool and difficulty-based selection
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import { Difficulty } from "../types";
|
||||
import { DIFFICULTY_CONFIGS } from "./constants";
|
||||
|
||||
export const EMOJI_POOL: string[] = [
|
||||
"🐶", "🐱", "🐭", "🐹", "🐰", "🦊", "🐻", "🐼",
|
||||
"🐨", "🐯", "🦁", "🐮", "🐷", "🐸", "🐵", "🐔",
|
||||
"🐧", "🐦", "🦆", "🦅", "🦉", "🦇", "🐺", "🐗",
|
||||
"🐴", "🦄", "🐝", "🐛", "🦋", "🐌", "🐞", "🐢",
|
||||
"🐍", "🦎", "🐙", "🦑", "🦐", "🦀", "🐡", "🐠",
|
||||
"🐟", "🐬", "🐳", "🐊",
|
||||
];
|
||||
|
||||
export function getEmojisForDifficulty(difficulty: Difficulty): string[] {
|
||||
const count = DIFFICULTY_CONFIGS[difficulty].pairCount;
|
||||
const shuffled = [...EMOJI_POOL].sort(() => Math.random() - 0.5);
|
||||
return shuffled.slice(0, count);
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { EMOJI_POOL, getEmojisForDifficulty } from "../../src/game/emoji";
|
||||
|
||||
describe("emoji", () => {
|
||||
it("pool has at least 40 unique emoji", () => {
|
||||
expect(EMOJI_POOL.length).toBeGreaterThanOrEqual(40);
|
||||
expect(new Set(EMOJI_POOL).size).toBe(EMOJI_POOL.length);
|
||||
});
|
||||
|
||||
it("returns correct count for easy", () => {
|
||||
const emojis = getEmojisForDifficulty("easy");
|
||||
expect(emojis.length).toBe(12);
|
||||
expect(new Set(emojis).size).toBe(12);
|
||||
});
|
||||
|
||||
it("returns correct count for medium", () => {
|
||||
const emojis = getEmojisForDifficulty("medium");
|
||||
expect(emojis.length).toBe(24);
|
||||
});
|
||||
|
||||
it("returns correct count for hard", () => {
|
||||
const emojis = getEmojisForDifficulty("hard");
|
||||
expect(emojis.length).toBe(40);
|
||||
});
|
||||
|
||||
it("returned emojis are a subset of the pool", () => {
|
||||
const emojis = getEmojisForDifficulty("hard");
|
||||
for (const e of emojis) {
|
||||
expect(EMOJI_POOL).toContain(e);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user