DictionaryReplacer Kata

by Gregor Biswanger

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) {}

    replace(input: string): string {
        throw new Error('Not implemented exception');
    }
};

//--- 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();
}());