From cace49fc56926691da7578fe1999895bc6c8b53c Mon Sep 17 00:00:00 2001 From: blond Date: Fri, 12 Aug 2016 17:53:00 +0300 Subject: [PATCH] test(reverse): add tests for `reverse()` method --- test/reverse/error.test.js | 16 ++++++++++++++++ test/reverse/iterator.test.js | 36 +++++++++++++++++++++++++++++++++++ test/reverse/values.test.js | 27 ++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 test/reverse/error.test.js create mode 100644 test/reverse/iterator.test.js create mode 100644 test/reverse/values.test.js diff --git a/test/reverse/error.test.js b/test/reverse/error.test.js new file mode 100644 index 0000000..2d3a524 --- /dev/null +++ b/test/reverse/error.test.js @@ -0,0 +1,16 @@ +'use strict'; + +const test = require('ava'); + +const reverse = require('../../lib/reverse'); +const createIterator = require('../../lib/create-iterator'); + +test('should throw error if specified two arguments', t => { + const iter1 = createIterator([1, 2, 3]); + const iter2 = createIterator([4, 5, 6]); + + t.throws( + () => reverse(iter1, iter2), + 'The `resolve()` method not support more than one argument. Use `series() or `evenly()` to combine iterators.' + ); +}); diff --git a/test/reverse/iterator.test.js b/test/reverse/iterator.test.js new file mode 100644 index 0000000..fe8ea1b --- /dev/null +++ b/test/reverse/iterator.test.js @@ -0,0 +1,36 @@ +'use strict'; + +const test = require('ava'); + +const reverse = require('../../lib/reverse'); +const createIterator = require('../../lib/create-iterator'); + +test('should return empty iterator', t => { + const iter = reverse(); + + t.deepEqual(iter.next(), { done: true }); +}); + +test('should support empty iterator', t => { + const emptyIter = createIterator(); + + const iter = reverse(emptyIter); + + t.deepEqual(iter.next(), { done: true }); +}); + +test('should reverse iterator', t => { + const iter = createIterator([1, 2]); + + const reverseIter = reverse(iter); + + t.deepEqual(Array.from(reverseIter), [2, 1]); +}); + +test('should support iterable', t => { + const iterable = [1, 2]; + + const reverseIter = reverse(iterable); + + t.deepEqual(Array.from(reverseIter), [2, 1]); +}); diff --git a/test/reverse/values.test.js b/test/reverse/values.test.js new file mode 100644 index 0000000..a0f9ae7 --- /dev/null +++ b/test/reverse/values.test.js @@ -0,0 +1,27 @@ +'use strict'; + +const test = require('ava'); + +const reverse = require('../../lib/reverse'); + +test('should throw error if value is `null`', t => { + t.throws(() => reverse(null)); +}); + +test('should throw error if value is `undefined`', t => { + t.throws(() => reverse(undefined)); +}); + +test('should throw error if value is number', t => { + t.throws(() => reverse(123)); +}); + +test('should throw error if value is boolean', t => { + t.throws(() => reverse(true)); +}); + +test('should reverse string characters', t => { + const iter = reverse('str'); + + t.deepEqual(Array.from(iter), ['r', 't', 's']); +});