Deo zbornika Učimo Javascript

Vežba: testiranje sum funkcije

Pomoću Jasmine biblioteke napisali smo specifikaciju za jednostavnu sum funkciju koja sabira dva broja:

describe("Testing sum funcion", function () {

    it("should add two integers", function () {
        expect(sum(2, 2)).toBe(4);
    });

    it("should add two negative numbers", function () {
        expect(sum(-2, -2)).toBe(-4);
    });

    it("should add two floating point numbers", function () {
        expect(sum(0.2, 0.4)).toBe(0.6);
    });

    it("should not add two strings", function () {
        expect(sum("zdravo", "svete")).toBeNaN();
    });

    it("should not add undefined and object", function () {
        expect(sum(undefined, {})).toBeNaN();
    });

    it("should not add string and number", function () {
        expect(sum("4", 4)).toBeNaN();
    });

});

Naivna implementacija sum funkcije bila bi sledeća, ali to neće zadovoljiti specifikaciju:

function sum(x, y) {
  return x + y;
}

Zadatak je popraviti funkciju tako da zadovolji specifikaciju.

function sum(x, y) {
    if (typeof x !== "number" || typeof y !== "number")
        return NaN;
    return Number((x + y).toFixed(10));
}