From 0eb69a3064b6829341e1318dc462f38a93e9fa4b Mon Sep 17 00:00:00 2001 From: Manuel Friedli Date: Fri, 31 Aug 2018 23:35:14 +0200 Subject: [PATCH] Fixed BinToDecConverter file name and added more tests, also negative tests for the Base64 converters. --- src/app/converter-registry.service.ts | 2 +- src/app/converter/base64-decoder.spec.ts | 3 +++ src/app/converter/base64-encoder.spec.ts | 3 +++ src/app/converter/base64-encoder.ts | 2 +- src/app/converter/bin-to-dec-converter.spec.ts | 16 ++++++++++++++++ ...todecconverter.ts => bin-to-dec-converter.ts} | 0 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/app/converter/bin-to-dec-converter.spec.ts rename src/app/converter/{bintodecconverter.ts => bin-to-dec-converter.ts} (100%) diff --git a/src/app/converter-registry.service.ts b/src/app/converter-registry.service.ts index 16520e7..dc6699d 100644 --- a/src/app/converter-registry.service.ts +++ b/src/app/converter-registry.service.ts @@ -1,6 +1,6 @@ import {Base64Decoder} from './converter/base64-decoder'; import {Base64Encoder} from './converter/base64-encoder'; -import {BinToDecConverter} from './converter/bintodecconverter'; +import {BinToDecConverter} from './converter/bin-to-dec-converter'; import {Converter} from './converter/converter'; import {DecToBinConverter} from './converter/dectobinconverter'; import {DecToHexConverter} from './converter/dectohexconverter'; diff --git a/src/app/converter/base64-decoder.spec.ts b/src/app/converter/base64-decoder.spec.ts index 888d69d..0133e20 100644 --- a/src/app/converter/base64-decoder.spec.ts +++ b/src/app/converter/base64-decoder.spec.ts @@ -10,4 +10,7 @@ describe('Base64Decoder', () => { it('should decode "SGVsbG8sIFdvcmxkIQ==" to "Hello, World!"', () => { expect(new Base64Decoder().convert('SGVsbG8sIFdvcmxkIQ==')).toEqual('Hello, World!'); }); + it('should raise an exception on invalid input', () => { + expect(() => new Base64Decoder().convert('foo bar.')).toThrowError('Could not decode base64 string. Maybe corrupt input?'); + }); }); diff --git a/src/app/converter/base64-encoder.spec.ts b/src/app/converter/base64-encoder.spec.ts index 31c5b27..889912e 100644 --- a/src/app/converter/base64-encoder.spec.ts +++ b/src/app/converter/base64-encoder.spec.ts @@ -10,4 +10,7 @@ describe('Base64Encoder', () => { it('should encode "Oh, guete Tag!" to "T2gsIGd1ZXRlIFRhZyE="', () => { expect(new Base64Encoder().convert('Oh, guete Tag!')).toEqual('T2gsIGd1ZXRlIFRhZyE='); }); + it('should raise an exception on invalid input', () => { + expect(() => new Base64Encoder().convert('€')).toThrowError(/Looks like you've got a character outside of the Latin1 range there./); + }); }); diff --git a/src/app/converter/base64-encoder.ts b/src/app/converter/base64-encoder.ts index c9e3513..6853180 100644 --- a/src/app/converter/base64-encoder.ts +++ b/src/app/converter/base64-encoder.ts @@ -14,7 +14,7 @@ export class Base64Encoder implements Converter { return btoa(input); } catch (exception) { console.error(exception); - throw new Error('Ouch! Looks like you\'ve got a UTF-8 character there. Too bad, this is not supported yet. ' + throw new Error('Ouch! Looks like you\'ve got a character outside of the Latin1 range there. Too bad, this is not supported yet. ' + 'We\'re working on it and hope to be ready soon! Why don\'t you ' + 'enjoy some kittens meanwhile?'); } diff --git a/src/app/converter/bin-to-dec-converter.spec.ts b/src/app/converter/bin-to-dec-converter.spec.ts new file mode 100644 index 0000000..04dabd0 --- /dev/null +++ b/src/app/converter/bin-to-dec-converter.spec.ts @@ -0,0 +1,16 @@ +import {BinToDecConverter} from './bin-to-dec-converter'; + +describe('BinToDecConverter', () => { + it('should create an instance', () => { + expect(new BinToDecConverter()).toBeTruthy(); + }); + it('should have the id "base64encode"', () => { + expect(new BinToDecConverter().getId()).toEqual('bintodec'); + }); + it('should convert "11011" to "27"', () => { + expect(new BinToDecConverter().convert('11011')).toEqual('27'); + }); + it('should raise an exception on invalid input', () => { + expect(() => new BinToDecConverter().convert('foo bar')).toThrowError('The input seems not to be a valid binary number.'); + }); +}); diff --git a/src/app/converter/bintodecconverter.ts b/src/app/converter/bin-to-dec-converter.ts similarity index 100% rename from src/app/converter/bintodecconverter.ts rename to src/app/converter/bin-to-dec-converter.ts