const expect = require('expect');
const words = require('./words.js');

test('words is a Function', () => {
  expect(words).toBeInstanceOf(Function);
});
test("words('I love javaScript!!') returns [I, love, javaScript]", () => {
  expect(words('I love javaScript!!')).toEqual(['I', 'love', 'javaScript']);
});
test("words('python, javaScript & coffee') returns [python, javaScript, coffee]", () => {
  expect(words('python, javaScript & coffee')).toEqual(['python', 'javaScript', 'coffee']);
});
test('words(I love javaScript!!) returns an array', () => {
  expect(Array.isArray(words('I love javaScript!!'))).toBeTruthy();
});
test('words() throws an error', () => {
  expect(() => {
    words();
  }).toThrow();
});
test('words(null) throws an error', () => {
  expect(() => {
    words(null);
  }).toThrow();
});
test('words(undefined) throws an error', () => {
  expect(() => {
    words(undefined);
  }).toThrow();
});
test('words({}) throws an error', () => {
  expect(() => {
    words({});
  }).toThrow();
});
test('words([]) throws an error', () => {
  expect(() => {
    words([]);
  }).toThrow();
});
test('words(1234) throws an error', () => {
  expect(() => {
    words(1234);
  }).toThrow();
});
