JSFiddle - React, Tailwind, and code Playground
by levrun
HTML
<script src="https://cdn.jsdelivr.net/jasmine/2.5.2/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/2.5.2/jasmine-html.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/2.5.2/boot.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/2.5.2/jasmine.css">
TypeScript
class StringCalculator {
public EMPTY_STRING:string = "";
public COMMA_SEPARATOR:string = ",";
public NEW_LINE = "\n";
public NEW_DELIMETER_MARKER = "//";
add(input: string):int {
if(input === this.EMPTY_STRING) {
return 0;
}
let separator:string = this.COMMA_SEPARATOR;
if(input.substring(0,2) === this.NEW_DELIMETER_MARKER) {
separator = input.substring(2,3);
input = input.substring(4, input.length);
}
let parsedInput:string = input.replace(this.NEW_LINE, separator);
let array[] = parsedInput.split(separator);
let errors[] = [];
let sum:int = 0;
for(let i of array) {
let num:int = parseInt(i);
if(num < 0) {
errors.push(i);
}
sum = sum + num;
}
if(errors.length > 0) {
let negatives:string = this.EMPTY_STRING;
for(let i in errors) {
negatives = negatives + errors[i] + " ";
}
throw new Error("negatives not allowed " + negatives);
}
return sum;
}
}
describe("String calculator suite", function() {
it("Test that empty string return zero", function(done) {
StringCalculator calculator = new StringCalculator();
input = "";
result = 0;
expect(calculator.add(input)).toBe(result);
setTimeout(done, 1000);
});
it("Test that two numbers return their summ", function(done) {
StringCalculator calculator = new StringCalculator();
input = "1,2";
result = 3;
expect(calculator.add(input)).toBe(result);
setTimeout(done, 1000);
});
it("Test that many numbers return their summ", function(done) {
StringCalculator calculator = new StringCalculator();
input = "1,2,3,4";
result = 10;
expect(calculator.add(input)).toBe(result);
setTimeout(done, 1000);
});
it("Test that we support new line as delimeter", function(done) {
StringCalculator calculator = new StringCalculator();
input = "1\n2,3";
result = 6;
...