diff --git a/src/common/services/OptionsService.test.ts b/src/common/services/OptionsService.test.ts index 59c17faf..a42220fe 100644 --- a/src/common/services/OptionsService.test.ts +++ b/src/common/services/OptionsService.test.ts @@ -3,7 +3,7 @@ * @license MIT */ -import { assert } from 'chai'; +import { assert, expect } from 'chai'; import { OptionsService, DEFAULT_OPTIONS } from 'common/services/OptionsService'; describe('OptionsService', () => { @@ -19,4 +19,42 @@ describe('OptionsService', () => { assert.equal(new OptionsService({tabStopWidth: 0}).getOption('tabStopWidth'), DEFAULT_OPTIONS.tabStopWidth); }); }); + describe('setOption', () => { + let service: OptionsService; + beforeEach(() => { + service = new OptionsService({}); + }); + it('applies valid fontWeight option values', () => { + service.setOption('fontWeight', 'bold'); + assert.equal(service.getOption('fontWeight'), 'bold', '"bold" keyword value should be applied'); + + service.setOption('fontWeight', 'normal'); + assert.equal(service.getOption('fontWeight'), 'normal', '"normal" keyword value should be applied'); + + service.setOption('fontWeight', '600'); + assert.equal(service.getOption('fontWeight'), '600', 'String numeric values should be applied'); + + service.setOption('fontWeight', 350); + assert.equal(service.getOption('fontWeight'), 350, 'Values between 1 and 1000 should be applied as is'); + + service.setOption('fontWeight', 1); + assert.equal(service.getOption('fontWeight'), 1, 'Range should include minimum value: 1'); + + service.setOption('fontWeight', 1000); + assert.equal(service.getOption('fontWeight'), 1000, 'Range should include maximum value: 1000'); + }); + it('normalizes invalid fontWeight option values', () => { + service.setOption('fontWeight', 350); + expect(() => service.setOption('fontWeight', 10000)).to.not.throw('', 'fontWeight should be normalized instead of throwing'); + assert.equal(service.getOption('fontWeight'), DEFAULT_OPTIONS.fontWeight, 'Values greater than 1000 should be reset to default'); + + service.setOption('fontWeight', 350); + service.setOption('fontWeight', -10); + assert.equal(service.getOption('fontWeight'), DEFAULT_OPTIONS.fontWeight, 'Values less than 1 should be reset to default'); + + service.setOption('fontWeight', 350); + service.setOption('fontWeight', 'bold700'); + assert.equal(service.getOption('fontWeight'), DEFAULT_OPTIONS.fontWeight, 'Wrong string literals should be reset to default'); + }); + }); });