import { describe, it } from 'mocha' import { expect } from 'chai' import { encodeUrlSafeBase64, parseUrlSafeBase64, telegramRleDecode, telegramRleEncode, } from '../src/utils' describe('parseUrlSafeBase64', () => { it('should parse url-safe base64', () => { expect(parseUrlSafeBase64('qu7d8aGTeuF6-g').toString('hex')).eq( 'aaeeddf1a1937ae17afa' ) }) it('should parse normal base64', () => { expect(parseUrlSafeBase64('qu7d8aGTeuF6+g==').toString('hex')).eq( 'aaeeddf1a1937ae17afa' ) }) }) describe('encodeUrlSafeBase64', () => { it('should encode to url-safe base64', () => { expect( encodeUrlSafeBase64(Buffer.from('aaeeddf1a1937ae17afa', 'hex')) ).eq('qu7d8aGTeuF6-g') }) }) describe('telegramRleEncode', () => { it('should not modify input if there are no \\x00', () => { expect( telegramRleEncode(Buffer.from('aaeeff', 'hex')).toString('hex') ).eq('aaeeff') }) it('should collapse consecutive \\x00', () => { expect( telegramRleEncode(Buffer.from('00000000aa', 'hex')).toString('hex') ).eq('0004aa') expect( telegramRleEncode( Buffer.from('00000000aa000000aa', 'hex') ).toString('hex') ).eq('0004aa0003aa') expect( telegramRleEncode(Buffer.from('00000000aa0000', 'hex')).toString( 'hex' ) ).eq('0004aa0002') expect( telegramRleEncode(Buffer.from('00aa00', 'hex')).toString('hex') ).eq('0001aa0001') }) }) describe('telegramRleDecode', () => { it('should not mofify input if there are no \\x00', () => { expect( telegramRleDecode(Buffer.from('aaeeff', 'hex')).toString('hex') ).eq('aaeeff') }) it('should expand two-byte sequences starting with \\x00', () => { expect( telegramRleDecode(Buffer.from('0004aa', 'hex')).toString('hex') ).eq('00000000aa') expect( telegramRleDecode(Buffer.from('0004aa0000', 'hex')).toString('hex') ).eq('00000000aa') expect( telegramRleDecode(Buffer.from('0004aa0003aa', 'hex')).toString( 'hex' ) ).eq('00000000aa000000aa') expect( telegramRleDecode(Buffer.from('0004aa0002', 'hex')).toString('hex') ).eq('00000000aa0000') expect( telegramRleDecode(Buffer.from('0001aa0001', 'hex')).toString('hex') ).eq('00aa00') }) })