diff --git a/spec/param.spec.ts b/spec/param.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..2f54abc7fe29e21cbf1747983dfa94b2b093e496 --- /dev/null +++ b/spec/param.spec.ts @@ -0,0 +1,140 @@ +/// <reference path="../node_modules/@types/jasmine/index.d.ts" /> + +import { ParamDefinition, ParamDomain, ParamDomainValue } from "../src/param"; +import { MessageCode, Message } from "../src/util/message"; + +describe('Class ParamDomain : ', () => { + function shouldFail(f: () => void, min: number = undefined, max: number = undefined) { + try { + f(); + fail(); + } + catch (e) { + expect(e instanceof Message).toBeTruthy(); + expect(e.code).toEqual(MessageCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS); + expect(e.extraVar["minValue"] == min).toBeTruthy(); + expect(e.extraVar["maxValue"] == max).toBeTruthy(); + } + } + + it('test 1', () => { + let d = new ParamDomain(ParamDomainValue.ANY); + d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 1); + d = new ParamDomain(ParamDomainValue.NOT_NULL); + d = new ParamDomain(ParamDomainValue.POS); + d = new ParamDomain(ParamDomainValue.POS_NULL); + }); + + it('test 2', () => { + shouldFail(() => { + const d = new ParamDomain(ParamDomainValue.ANY, 0, 1); + }, 0, 1); + }); + + it('test 3', () => { + shouldFail(() => { + const d = new ParamDomain(ParamDomainValue.ANY, 0, undefined); + }, 0); + }); + + it('test 4', () => { + shouldFail(() => { + const d = new ParamDomain(ParamDomainValue.INTERVAL); + }); + }); + + it('test 5', () => { + shouldFail(() => { + const d = new ParamDomain(ParamDomainValue.INTERVAL, 1, 0); + }, 1, 0); + }); +}); + +describe('Class ParamDefinition : ', () => { + function shouldFail(f: () => void, code: MessageCode) { + try { + f(); + fail(); + } + catch (e) { + expect(e instanceof Message).toBeTruthy(); + expect(e.code).toEqual(code); + } + } + + describe('Domaine de définition : POS : ', () => { + it('test 1', () => { + let p = new ParamDefinition(undefined, "a", ParamDomainValue.POS, 1e-8); + p = new ParamDefinition(undefined, "a", ParamDomainValue.POS, 10); + }); + + it('test 2', () => { + shouldFail(() => { + const p = new ParamDefinition(undefined, "a", ParamDomainValue.POS, 0); + }, MessageCode.ERROR_PARAMDEF_VALUE_POS); + }); + + it('test 3', () => { + shouldFail(() => { + const p = new ParamDefinition(undefined, "a", ParamDomainValue.POS, -1); + }, MessageCode.ERROR_PARAMDEF_VALUE_POS); + }); + }); + + describe('Domaine de définition : POS_NULL : ', () => { + it('test 1', () => { + let p = new ParamDefinition(undefined, "a", ParamDomainValue.POS_NULL, 0); + p = new ParamDefinition(undefined, "a", ParamDomainValue.POS_NULL, 10); + }); + + it('test 2', () => { + shouldFail(() => { + const p = new ParamDefinition(undefined, "a", ParamDomainValue.POS_NULL, -1); + }, MessageCode.ERROR_PARAMDEF_VALUE_POSNULL); + }); + }); + + describe('Domaine de définition : NOT_NULL : ', () => { + it('test 1', () => { + let p = new ParamDefinition(undefined, "a", ParamDomainValue.NOT_NULL, -1); + p = new ParamDefinition(undefined, "a", ParamDomainValue.NOT_NULL, 1); + }); + + it('test 2', () => { + shouldFail(() => { + const p = new ParamDefinition(undefined, "a", ParamDomainValue.NOT_NULL, 0); + }, MessageCode.ERROR_PARAMDEF_VALUE_NULL); + }); + }); + + describe('Domaine de définition : ANY : ', () => { + it('test 1', () => { + let p = new ParamDefinition(undefined, "a", ParamDomainValue.ANY, -1); + p = new ParamDefinition(undefined, "a", ParamDomainValue.ANY, 0); + p = new ParamDefinition(undefined, "a", ParamDomainValue.ANY, 1); + }); + }); + + describe('Domaine de définition : INTERVAL : ', () => { + it('test 1', () => { + let d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10) + let p = new ParamDefinition(undefined, "a", d, 0); + p = new ParamDefinition(undefined, "a", d, 1); + p = new ParamDefinition(undefined, "a", d, 10); + }); + + it('test 2', () => { + shouldFail(() => { + let d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10) + let p = new ParamDefinition(undefined, "a", d, -1e-8); + }, MessageCode.ERROR_PARAMDEF_VALUE_INTERVAL); + }); + + it('test 3', () => { + shouldFail(() => { + let d = new ParamDomain(ParamDomainValue.INTERVAL, 0, 10) + let p = new ParamDefinition(undefined, "a", d, 10 + 1e-8); + }, MessageCode.ERROR_PARAMDEF_VALUE_INTERVAL); + }); + }); +});