DictionaryReplacer Kata
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>
TypeScript
//--- CODE --------------------------
class DictionaryReplacer {
constructor(private dictionary) {}
let parts = input.split('$');
parts = parts.map(part => this.dictionary[part] ? this.dictionary[part] : part);
return parts.join('');
};
//--- SPECS -------------------------
// Kata from http://codingdojo.org/kata/DictionaryReplacer/
describe('This kata is about making a simple string replacer.', () => {
it('input : "", dict empty, output:""', () => {
// Arrange
let input = '';
let dictionary = {};
let dictionaryReplacer = new DictionaryReplacer(dictionary);
// Act
let result = dictionaryReplacer.replace(input);
// Assert
expect(result).toBe('');
});
it('input : "$temp$", dict ["temp", "temporary"], output: "temporary"', () => {
let input = '$temp$';
let dictionary = {
temp: 'temporary'
};
let dictionaryReplacer = new DictionaryReplacer(dictionary);
let result = dictionaryReplacer.replace(input);
expect(result).toBe('temporary');
});
it(`input : "$temp$ here comes the name $name$",
dict ["temp", "temporary"] ["name", "John Doe"],
output : "temporary here comes the name John Doe"`, () => {
let input = '$temp$ here comes the name $name$';
let dictionary = {
temp: 'temporary',
name: 'John Doe'
};
let dictionaryReplacer = new DictionaryReplacer(dictionary);
let result = dictionaryReplacer.replace(input);
expect(result).toBe('temporary here comes the name John Doe');
});
});
// load jasmine htmlReporter
(function() {
var env = jasmine.getEnv();
env.addReporter(new jasmine.HtmlReporter());
env.execute();
}());