From 99ed290e18265b5c1ad6672545d175faffea474a Mon Sep 17 00:00:00 2001 From: Kamila Lambert Date: Mon, 8 May 2017 17:07:57 -0700 Subject: [PATCH] all symmetricDif tests passing --- src/setSymmetricDifference.js | 14 ++++++++++++++ test/setSymmetricDifference_test.js | 24 ++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 src/setSymmetricDifference.js create mode 100644 test/setSymmetricDifference_test.js diff --git a/src/setSymmetricDifference.js b/src/setSymmetricDifference.js new file mode 100644 index 0000000..db58f15 --- /dev/null +++ b/src/setSymmetricDifference.js @@ -0,0 +1,14 @@ +export default function setSymmetricDifference(firstSet, secondSet) { + + const intersection = new Set([...firstSet].filter(x => !secondSet.includes(x))) + const intersection2 = new Set([...secondSet].filter(x => !firstSet.includes(x))) + + const intersectionArray = Array.from(intersection) + const intersectionArray2 = Array.from(intersection2) + + const setArray = intersectionArray.concat(intersectionArray2) + + if (!firstSet || !secondSet) { + return undefined + } return setArray +} diff --git a/test/setSymmetricDifference_test.js b/test/setSymmetricDifference_test.js new file mode 100644 index 0000000..780c9fc --- /dev/null +++ b/test/setSymmetricDifference_test.js @@ -0,0 +1,24 @@ +import { expect } from 'chai'; +import setSymmetricDifference from '../src/setSymmetricDifference'; + +describe('setSymmetricDifference()', () => { + it('should be a function', () => { + expect(setSymmetricDifference).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(setSymmetricDifference(firstSet, secondSet)).to.deep.equal([1, 3, 6, 8]); + }); + + it('Return the symmetric difference of two sets.', () => { + const firstSet = [3, 6, 9, 12]; + const secondSet = [6, 7, 8, 9]; + expect(setSymmetricDifference(firstSet, secondSet)).to.deep.equal([3, 12, 7, 8]); + }); + + it('Will not try to evaluate empty things', () => { + expect(setSymmetricDifference('', '')).to.equal(undefined); + }); +});