Cengage Learning 2nd Round

by Matthew Vasallo

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jasmine/1.3.1/jasmine-html.js"></script>
<title>Jasmine Spec Runner</title>

JavaScript

//find the number closest to zero from a list of integers

//var arr = [2,-1, 6, 9, 3, 1]
//Math.abs();
var closeToZero = function(arr){
        if(arr.length > 1){
            
            var currDiff = 0-arr[0];
            var currentClose = arr[0];
            for(var i=1; i < arr.length; i++){
                 var varDiff = 0-arr[i];
                if(Math.abs(varDiff) <= Math.abs(currDiff)) {
                    currDiff = Math.abs(varDiff);
                    currentClose= arr[i];
                }
            }
        }else return arr[0];
    return currentClose;
}

describe('Closest to zero exercise', function () {

    it('function should return the number in an array with one element ', function () {
        expect(closeToZero([1])).toBe(1);
    });
    it('functione should return the number closer to zero with an arrar of any lenght ', function(){
    expect(closeToZero([2,1])).toBe(1);
    expect(closeToZero([1,2])).toBe(1);
    expect(closeToZero([5,6,2,4])).toBe(2);
        
    });
    it("function returns o if the array contains o", function(){
    expect(closeToZero([5,6,0,4])).toBe(0);
    expect(closeToZero([0,6,6,9,4])).toBe(0);
        
    });
    it("function also returns closesest even if the array contains negative but not a tie", function(){
    expect(closeToZero([5,-6,0,4])).toBe(0);
    expect(closeToZero([-5,-6,-3,-4])).toBe(-3);
    expect(closeToZero([-5,-6,4,-4])).toBe(4);
    expect(closeToZero([-5,-6,-4,4])).toBe(4);
        
    });
   
});


// load jasmine htmlReporter
$(function() {
  var env = jasmine.getEnv();
  env.addReporter(new jasmine.HtmlReporter());
  env.execute();
});