OMENSAH
2/24/2018 - 6:58 PM

testing.js

const {sum, subtract} = require('./math')
let result, expected

result = sum(3, 7)
expected = 10
expect(result).toBe(expected)

result = subtract(7, 8)
expect(result).positive();

function expect(actual) {
    return {
      toBe : function(expected) {
        if (actual !== expected) {
          throw new Error(`${actual} is not equal to ${expected}`)
        }
      },
      positive: function(){
          if(actual < 0 ){
            throw new Error(`${actual} is not positive `)
          }
      },
      negative: function(){
          if(actual > 0 ){
            throw new Error(`${actual} is not negative`)
          }
      }
    }
  }




//better 
const sum = (a, b) => a+b;
const substract = (a,b) => a- b;

result = sum(3, 7)
expected = 10
expect(result).toBe(expected)

result = subtract(7, 8)
expect(result).positive();

function expect(actual) {
    return {
      toBe : function(expected) {
        if (actual !== expected) {
          throw new Error(`${actual} is not equal to ${expected}`)
        }
      },
      positive: function(){
          if(actual < 0 ){
            throw new Error(`${actual} is not positive `)
          }
      },
      negative: function(){
          if(actual > 0 ){
            throw new Error(`${actual} is not negative`)
          }
      }
    }
  }

function test(title, callback) {
  try {
    callback()
    console.log(`✓ ${title}`)
  } catch (error) {
    console.error(`✕ ${title}`)
    console.error(error)
  }
}

test('sum adds numbers', () => {
  const result = sum(3, 7)
  const expected = 10
  expect(result).toBe(expected)
})

test('subtract subtracts numbers', () => {
  const result = subtract(7, 3)
  const expected = 4
  expect(result).toBe(expected)
})