/ tests / utils / colors.test.ts
colors.test.ts
 1  import { describe, expect, test } from "bun:test";
 2  import { hexToPdf } from "~/utils/colors";
 3  
 4  describe("colors", () => {
 5    describe("hexToPdf", () => {
 6      test("should convert white hex to PDF RGB", () => {
 7        const result = hexToPdf(0xFFFFFF);
 8        expect(result.red).toBeCloseTo(1, 5);
 9        expect(result.green).toBeCloseTo(1, 5);
10        expect(result.blue).toBeCloseTo(1, 5);
11      });
12  
13      test("should convert black hex to PDF RGB", () => {
14        const result = hexToPdf(0x000000);
15        expect(result.red).toBeCloseTo(0, 5);
16        expect(result.green).toBeCloseTo(0, 5);
17        expect(result.blue).toBeCloseTo(0, 5);
18      });
19  
20      test("should convert red hex to PDF RGB", () => {
21        const result = hexToPdf(0xFF0000);
22        expect(result.red).toBeCloseTo(1, 5);
23        expect(result.green).toBeCloseTo(0, 5);
24        expect(result.blue).toBeCloseTo(0, 5);
25      });
26  
27      test("should convert green hex to PDF RGB", () => {
28        const result = hexToPdf(0x00FF00);
29        expect(result.red).toBeCloseTo(0, 5);
30        expect(result.green).toBeCloseTo(1, 5);
31        expect(result.blue).toBeCloseTo(0, 5);
32      });
33  
34      test("should convert blue hex to PDF RGB", () => {
35        const result = hexToPdf(0x0000FF);
36        expect(result.red).toBeCloseTo(0, 5);
37        expect(result.green).toBeCloseTo(0, 5);
38        expect(result.blue).toBeCloseTo(1, 5);
39      });
40  
41      test("should convert custom color hex to PDF RGB", () => {
42        const result = hexToPdf(0x7F7F7F); // 50% gray
43        expect(result.red).toBeCloseTo(0.498, 2);
44        expect(result.green).toBeCloseTo(0.498, 2);
45        expect(result.blue).toBeCloseTo(0.498, 2);
46      });
47  
48      test("should convert another custom color", () => {
49        const result = hexToPdf(0xABCDEF);
50        expect(result.red).toBeCloseTo(171 / 255, 3);
51        expect(result.green).toBeCloseTo(205 / 255, 3);
52        expect(result.blue).toBeCloseTo(239 / 255, 3);
53      });
54    });
55  });