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;
   ...