| const { getValueKey, getMultiplier, defaultRate } = require('./tx'); | |
| describe('getValueKey', () => { | |
| it('should return "16k" for model name containing "gpt-3.5-turbo-16k"', () => { | |
| expect(getValueKey('gpt-3.5-turbo-16k-some-other-info')).toBe('16k'); | |
| }); | |
| it('should return "4k" for model name containing "gpt-3.5"', () => { | |
| expect(getValueKey('gpt-3.5-some-other-info')).toBe('4k'); | |
| }); | |
| it('should return "32k" for model name containing "gpt-4-32k"', () => { | |
| expect(getValueKey('gpt-4-32k-some-other-info')).toBe('32k'); | |
| }); | |
| it('should return "8k" for model name containing "gpt-4"', () => { | |
| expect(getValueKey('gpt-4-some-other-info')).toBe('8k'); | |
| }); | |
| it('should return undefined for model names that do not match any known patterns', () => { | |
| expect(getValueKey('gpt-5-some-other-info')).toBeUndefined(); | |
| }); | |
| }); | |
| describe('getMultiplier', () => { | |
| it('should return the correct multiplier for a given valueKey and tokenType', () => { | |
| expect(getMultiplier({ valueKey: '8k', tokenType: 'prompt' })).toBe(30); | |
| expect(getMultiplier({ valueKey: '8k', tokenType: 'completion' })).toBe(60); | |
| }); | |
| it('should return defaultRate if tokenType is provided but not found in tokenValues', () => { | |
| expect(getMultiplier({ valueKey: '8k', tokenType: 'unknownType' })).toBe(defaultRate); | |
| }); | |
| it('should derive the valueKey from the model if not provided', () => { | |
| expect(getMultiplier({ tokenType: 'prompt', model: 'gpt-4-some-other-info' })).toBe(30); | |
| }); | |
| it('should return 1 if only model or tokenType is missing', () => { | |
| expect(getMultiplier({ tokenType: 'prompt' })).toBe(1); | |
| expect(getMultiplier({ model: 'gpt-4-some-other-info' })).toBe(1); | |
| }); | |
| it('should return defaultRate if derived valueKey does not match any known patterns', () => { | |
| expect(getMultiplier({ tokenType: 'prompt', model: 'gpt-5-some-other-info' })).toBe( | |
| defaultRate, | |
| ); | |
| }); | |
| }); | |