Skip to content

Commit 9c9fd49

Browse files
committed
text: data modules
1 parent 4f5d4d2 commit 9c9fd49

2 files changed

Lines changed: 145 additions & 12 deletions

File tree

packages/react-qr-code/src/utils/data-modules.test.ts

Lines changed: 145 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { describe, expect, it, vi } from 'vitest'
22

3-
import { getScaleFactor } from './data-modules'
3+
import type { Modules } from '../types/lib'
4+
import { getModuleNeighbours, getScaleFactor } from './data-modules'
45

56
describe('getScaleFactor', () => {
67
it('returns 0.75 for square-sm style', () => {
@@ -18,3 +19,146 @@ describe('getScaleFactor', () => {
1819
expect(scaleFactor).toEqual(0.9 * (1 - 0.75) + 0.75)
1920
})
2021
})
22+
23+
describe('getModuleNeighbours', () => {
24+
it('should return correct neighbours for a center cell', () => {
25+
const modules: Modules = [
26+
[false, true, false],
27+
[true, false, true],
28+
[false, true, false],
29+
]
30+
31+
const result = getModuleNeighbours(1, 1, modules)
32+
33+
expect(result).toEqual({
34+
left: true,
35+
right: true,
36+
top: true,
37+
bottom: true,
38+
count: 4,
39+
})
40+
})
41+
42+
it('should handle top-left corner cell', () => {
43+
const modules: Modules = [
44+
[false, true, false],
45+
[true, false, false],
46+
[false, false, false],
47+
]
48+
49+
const result = getModuleNeighbours(0, 0, modules)
50+
51+
expect(result).toEqual({
52+
left: false,
53+
right: true,
54+
top: false,
55+
bottom: true,
56+
count: 2,
57+
})
58+
})
59+
60+
it('should handle bottom-right corner cell', () => {
61+
const modules: Modules = [
62+
[false, false, false],
63+
[false, false, true],
64+
[false, true, false],
65+
]
66+
67+
const result = getModuleNeighbours(2, 2, modules)
68+
69+
expect(result).toEqual({
70+
left: true,
71+
right: false,
72+
top: true,
73+
bottom: false,
74+
count: 2,
75+
})
76+
})
77+
78+
it('should handle edge cell (middle of right edge)', () => {
79+
const modules: Modules = [
80+
[false, false, false],
81+
[false, true, true],
82+
[false, false, false],
83+
]
84+
85+
const result = getModuleNeighbours(2, 1, modules)
86+
87+
expect(result).toEqual({
88+
left: true,
89+
right: false,
90+
top: false,
91+
bottom: false,
92+
count: 1,
93+
})
94+
})
95+
96+
it('should handle cell with no true neighbours', () => {
97+
const modules: Modules = [
98+
[false, false, false],
99+
[false, false, false],
100+
[false, false, false],
101+
]
102+
103+
const result = getModuleNeighbours(1, 1, modules)
104+
105+
expect(result).toEqual({
106+
left: false,
107+
right: false,
108+
top: false,
109+
bottom: false,
110+
count: 0,
111+
})
112+
})
113+
114+
it('should handle cell with all true neighbours', () => {
115+
const modules: Modules = [
116+
[true, true, true],
117+
[true, false, true],
118+
[true, true, true],
119+
]
120+
121+
const result = getModuleNeighbours(1, 1, modules)
122+
123+
expect(result).toEqual({
124+
left: true,
125+
right: true,
126+
top: true,
127+
bottom: true,
128+
count: 4,
129+
})
130+
})
131+
132+
it('should handle a 1x1 grid', () => {
133+
const modules: Modules = [[true]]
134+
135+
const result = getModuleNeighbours(0, 0, modules)
136+
137+
expect(result).toEqual({
138+
left: false,
139+
right: false,
140+
top: false,
141+
bottom: false,
142+
count: 0,
143+
})
144+
})
145+
146+
it('should handle cells in different size grids', () => {
147+
const modules: Modules = [
148+
[true, false, true, false],
149+
[false, true, false, true],
150+
[true, false, true, false],
151+
[false, true, false, true],
152+
]
153+
154+
const result = getModuleNeighbours(2, 2, modules)
155+
156+
expect(result).toEqual({
157+
left: false,
158+
right: false,
159+
top: false,
160+
bottom: false,
161+
count: 0,
162+
})
163+
})
164+
})

packages/react-qr-code/src/utils/data-modules.ts

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,3 @@ export const leaf = (x: number, y: number, size: number) => {
108108
`a ${size / 2.5} ${size / 2.5}, 0, 0, 0, ${size / 2.5} ${-size / 2.5}`
109109
)
110110
}
111-
112-
export const leafLeft = (x: number, y: number, size: number) => {
113-
return (
114-
`M ${x} ${y}` +
115-
`v ${size / 2}` +
116-
`a ${size / 2} ${size / 2}, 0, 0, 0, ${size / 2} ${size / 2}` +
117-
`h ${size / 2}` +
118-
`v ${-size / 2}` +
119-
`a ${size / 2} ${size / 2}, 0, 0, 0, ${-size / 2} ${-size / 2}`
120-
)
121-
}

0 commit comments

Comments
 (0)