From 1d2633f8131061f5bfe7d53e341e5dbfec140771 Mon Sep 17 00:00:00 2001 From: Kamila Lambert Date: Mon, 8 May 2017 16:58:09 -0700 Subject: [PATCH] all setComplement tests passing --- src/setComplement.js | 8 ++++++++ test/setComplement_test.js | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/setComplement.js create mode 100644 test/setComplement_test.js diff --git a/src/setComplement.js b/src/setComplement.js new file mode 100644 index 0000000..6ab1bc8 --- /dev/null +++ b/src/setComplement.js @@ -0,0 +1,8 @@ +export default function setComplement(firstSet, secondSet) { + + const intersection = new Set([...secondSet].filter(x => !firstSet.includes(x))) + + if (!firstSet || !secondSet) { + return undefined + } return Array.from(intersection) +} diff --git a/test/setComplement_test.js b/test/setComplement_test.js new file mode 100644 index 0000000..38f222a --- /dev/null +++ b/test/setComplement_test.js @@ -0,0 +1,24 @@ +import { expect } from 'chai'; +import setComplement from '../src/setComplement'; + +describe.only('setComplement()', () => { + it('should be a function', () => { + expect(setComplement).to.be.a('function'); + }); + + it('Return the symmetric difference of two sets.', () => { + const firstSet = [1, 2, 3, 4]; + const secondSet = [2, 4, 6, 8]; + expect(setComplement(firstSet, secondSet)).to.deep.equal([6, 8]); + }); + + it('Return the symmetric difference of two sets.', () => { + const firstSet = [3, 6, 9, 12]; + const secondSet = [6, 7, 8, 9]; + expect(setComplement(firstSet, secondSet)).to.deep.equal([7, 8]); + }); + + it('Will not try to evaluate empty things', () => { + expect(setComplement('', '')).to.equal(undefined); + }); +});