diff --git a/src/app/converter-registry.service.ts b/src/app/converter-registry.service.ts
index d6f6714..56e488d 100644
--- a/src/app/converter-registry.service.ts
+++ b/src/app/converter-registry.service.ts
@@ -14,8 +14,8 @@ import {PunycodeEncoder} from './converter/punycode-encoder';
 import {QuotedPrintableDecoder} from './converter/quoted-printable-decoder';
 import {QuotedPrintableEncoder} from './converter/quoted-printable-encoder';
 import {ROT13Converter} from './converter/rot13-converter';
-import {URIComponentDecoder} from './converter/uricomponentdecoder';
-import {URIComponentEncoder} from './converter/uricomponentencoder';
+import {URIComponentDecoder} from './converter/uricomponent-decoder';
+import {URIComponentEncoder} from './converter/uricomponent-encoder';
 import {URIDecoder} from './converter/uridecoder';
 import {URIEncoder} from './converter/uriencoder';
 import {UTF8Decoder} from './converter/utf8decoder';
diff --git a/src/app/converter/uricomponent-decoder.spec.ts b/src/app/converter/uricomponent-decoder.spec.ts
new file mode 100644
index 0000000..b24ee94
--- /dev/null
+++ b/src/app/converter/uricomponent-decoder.spec.ts
@@ -0,0 +1,21 @@
+import {URIComponentDecoder} from './uricomponent-decoder';
+
+describe('URIComponentDecoder', () => {
+  let sut: URIComponentDecoder;
+
+  beforeEach(() => sut = new URIComponentDecoder());
+
+  it('should create an instance', () => {
+    expect(sut).toBeTruthy();
+  });
+
+  it('should have the id "uricomponentdecode"', () => {
+    expect(sut.getId()).toEqual('uricomponentdecode');
+  });
+
+  it('should decode "http%3A%2F%2Fm%C3%A4nu%3Agh%C3%ABim%40host%3Aport%2Fhi.there%3Foh%3Dwell%23ya" ' +
+    'to "http://mänu:ghëim@host:port/hi.there?oh=well#ya"', () => {
+    expect(sut.convert('http%3A%2F%2Fm%C3%A4nu%3Agh%C3%ABim%40host%3Aport%2Fhi.there%3Foh%3Dwell%23ya'))
+      .toEqual('http://mänu:ghëim@host:port/hi.there?oh=well#ya');
+  });
+});
diff --git a/src/app/converter/uricomponentdecoder.ts b/src/app/converter/uricomponent-decoder.ts
similarity index 100%
rename from src/app/converter/uricomponentdecoder.ts
rename to src/app/converter/uricomponent-decoder.ts
diff --git a/src/app/converter/uricomponent-encoder.spec.ts b/src/app/converter/uricomponent-encoder.spec.ts
new file mode 100644
index 0000000..8aa582d
--- /dev/null
+++ b/src/app/converter/uricomponent-encoder.spec.ts
@@ -0,0 +1,21 @@
+import {URIComponentEncoder} from './uricomponent-encoder';
+
+describe('URIComponentEncoder', () => {
+  let sut: URIComponentEncoder;
+
+  beforeEach(() => sut = new URIComponentEncoder());
+
+  it('should create an instance', () => {
+    expect(sut).toBeTruthy();
+  });
+
+  it('should have the id "uricomponentencode"', () => {
+    expect(sut.getId()).toEqual('uricomponentencode');
+  });
+
+  it('should encode "http://mänu:ghëim@host:port/hi.there?oh=well#ya" ' +
+    'to "http%3A%2F%2Fm%C3%A4nu%3Agh%C3%ABim%40host%3Aport%2Fhi.there%3Foh%3Dwell%23ya"', () => {
+    expect(sut.convert('http://mänu:ghëim@host:port/hi.there?oh=well#ya'))
+      .toEqual('http%3A%2F%2Fm%C3%A4nu%3Agh%C3%ABim%40host%3Aport%2Fhi.there%3Foh%3Dwell%23ya');
+  });
+});
diff --git a/src/app/converter/uricomponentencoder.ts b/src/app/converter/uricomponent-encoder.ts
similarity index 100%
rename from src/app/converter/uricomponentencoder.ts
rename to src/app/converter/uricomponent-encoder.ts