Cengage 2nd Round Ashot

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

var numberToCompare = 0;

var searchForValueClosestToZero = function(arr) {
    var diff = Number.MAX_VALUE, curI, result, tieI;
    if (arr.length === 1) {
      result = arr[0];
        return result;
    } else {
        for (var i = 0; i< arr.length; i++) {    
            var val = arr[i];
            curDiff = Math.abs(val - numberToCompare);
            if (curDiff < diff) {
              curI = i;
              diff = curDiff;
            } else if(curDiff === diff) {
                tieI = i;
                console.dir({
                    i:i,
                    curDiff: curDiff
                })
            }
        }
   
        if(arr[curI] < 0) {
            if(typeOf tieI !== 'undefined' && Math.abs(arr[tieI]) === Math.abs(arr[curI])){
               result = arr[tieI];
            }
        } else {
                 result = arr[curI];
        }
        return result;
    }
  return result;  
} 

//red
describe('Closest to zero exercise', function () {
    var list, result;
    it('testing function with array of one value',  function () {
        list = [1] ;
        result = searchForValueClosestToZero(list);
        expect(result).toBe(1);
    });
    it('testing function with array of several values not containing negatives',  function () {
        list = [3, 0, 3, 1, 5, 100] ;
        result = searchForValueClosestToZero(list);
        expect(result).toBe(0);
    });
    it('testing function with array of several values containing negatives',  function () {
        list = [30, -3, 10, 5, 100] ;
        result = searchForValueClosestToZero(list);
        expect(result).toBe(-3);
    });
     it('testing function with array with tie',  function () {
        list = [-3, 30, 3, 10, 5, 100] ;
        result = searchForValueClosestToZero(list);
        expect(result).toBe(3);
    });
    it('testing function with empty array',  function () {
        list = [] ;
        result = searchForValueClosestToZero(list);
       ...