pages235/renderer/viewer/sign-renderer/tests.test.ts

73 lines
1.4 KiB
TypeScript

import { test, expect } from 'vitest'
import PrismarineChatLoader from 'prismarine-chat'
import { renderSign } from '.'
const PrismarineChat = PrismarineChatLoader({ language: {} } as any)
let ctxTexts = [] as any[]
global.document = {
createElement () {
return {
getContext () {
return {
fillText (text, x, y) {
ctxTexts.push({ text, x, y })
},
measureText () { return 0 }
}
}
}
}
} as any
const render = (entity) => {
ctxTexts = []
renderSign(entity, PrismarineChat)
return ctxTexts.map(({ text, y }) => [y / 64, text])
}
test('sign renderer', () => {
let blockEntity = {
'GlowingText': 0,
'Color': 'black',
'Text4': '{"text":""}',
'Text3': '{"text":""}',
'Text2': '{"text":""}',
'Text1': '{"extra":[{"color":"dark_green","text":"Minecraft "},{"text":"Tools"}],"text":""}'
} as any
expect(render(blockEntity)).toMatchInlineSnapshot(`
[
[
1,
"",
],
[
1,
"Minecraft ",
],
[
1,
"Tools",
],
]
`)
blockEntity = { // pre flatenning
'Text1': 'Welcome to',
'Text2': '',
'Text3': 'null',
'Text4': '"Version 2.1"',
} as const
expect(render(blockEntity)).toMatchInlineSnapshot(`
[
[
1,
"Welcome to",
],
[
4,
"Version 2.1",
],
]
`)
})