StringCalculator_2016_12_19

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 {

	private COMMA_SEPARATOR:string = ",";
  private NEW_LINE:string = "\n";
  private CUSTOM_SEPARATOR:string = "//";
	
  add(input: string): number {
  	if(input === "") {
    	return 0;
    }
		
    var separator:string = this.COMMA_SEPARATOR;
    
    if(input.substring(0,2) === this.CUSTOM_SEPARATOR) {
    	separator = input.substring(2,3);
      input = input.substring(4, input.length);
    }
    
    var parsedInput = input.replace(this.NEW_LINE, separator);
    
    var errors[] = []; 
    var array[] = parsedInput.split(separator);
    var summ:int = 0;
    for(let numberStr of array) {
      var number:int = parseInt(numberStr);
      if(number < 0) {
      	errors.push(numberStr);
      }
    	summ += number;
    }
    
    if(errors.length > 0) {
    	var listOfNegatives:string = "";
      for(var i in errors) {
      	listOfNegatives += errors[i] + " ";
      }
      
    	throw new Error("negatives not allowed " + listOfNegatives);
    }
    
    return summ;
  }
  
}










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 one number string return the same number", function(done) {
    StringCalculator calculator = new StringCalculator();
    input = "1";
    result = 1;
    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,5,6";
    result = 21;
   ...