mirror of
https://github.com/pengzhanbo/vuepress-theme-plume.git
synced 2026-04-23 10:58:13 +08:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { stringifyProp } from '../src/node/utils/stringifyProp.js'
|
|
|
|
describe('stringifyProp', () => {
|
|
it('should stringify string', () => {
|
|
expect(stringifyProp('hello')).toBe('"hello"')
|
|
expect(stringifyProp('')).toBe('""')
|
|
})
|
|
|
|
it('should stringify number', () => {
|
|
expect(stringifyProp(123)).toBe('123')
|
|
expect(stringifyProp(0)).toBe('0')
|
|
expect(stringifyProp(-1)).toBe('-1')
|
|
expect(stringifyProp(3.14)).toBe('3.14')
|
|
})
|
|
|
|
it('should stringify boolean', () => {
|
|
expect(stringifyProp(true)).toBe('true')
|
|
expect(stringifyProp(false)).toBe('false')
|
|
})
|
|
|
|
it('should stringify null', () => {
|
|
expect(stringifyProp(null)).toBe('null')
|
|
})
|
|
|
|
it('should stringify array', () => {
|
|
expect(stringifyProp([1, 2, 3])).toBe('[1,2,3]')
|
|
expect(stringifyProp(['a', 'b'])).toBe('["a","b"]')
|
|
expect(stringifyProp([])).toBe('[]')
|
|
})
|
|
|
|
it('should stringify object', () => {
|
|
expect(stringifyProp({ a: 1 })).toBe('{"a":1}')
|
|
expect(stringifyProp({ a: 'b' })).toBe('{"a":"b"}')
|
|
expect(stringifyProp({})).toBe('{}')
|
|
})
|
|
|
|
it('should escape single quotes', () => {
|
|
expect(stringifyProp('it\'s')).toBe('"it's"')
|
|
expect(stringifyProp('\'hello\'')).toBe('"'hello'"')
|
|
expect(stringifyProp('a\'b\'c')).toBe('"a'b'c"')
|
|
})
|
|
|
|
it('should handle nested objects', () => {
|
|
expect(stringifyProp({ a: { b: 1 } })).toBe('{"a":{"b":1}}')
|
|
expect(stringifyProp({ arr: [1, 2] })).toBe('{"arr":[1,2]}')
|
|
})
|
|
|
|
it('should handle special characters', () => {
|
|
expect(stringifyProp('hello\nworld')).toBe('"hello\\nworld"')
|
|
expect(stringifyProp('hello\tworld')).toBe('"hello\\tworld"')
|
|
expect(stringifyProp('hello"world')).toBe('"hello\\"world"')
|
|
})
|
|
})
|