GUI -- Added keyBindings() and gestureNotes() to Key Service.
- Cleaned up fn.js and added contains().
- Unit tests added too.

Change-Id: Id310675836e592af7a4a763f6624c0ee31adfbf5
diff --git a/web/gui/src/main/webapp/tests/fw/lib/fn-spec.js b/web/gui/src/main/webapp/tests/fw/lib/fn-spec.js
index 4bd1b4a..44c12b5 100644
--- a/web/gui/src/main/webapp/tests/fw/lib/fn-spec.js
+++ b/web/gui/src/main/webapp/tests/fw/lib/fn-spec.js
@@ -26,7 +26,8 @@
         someObject = { foo: 'bar'},
         someNumber = 42,
         someString = 'xyyzy',
-        someDate = new Date();
+        someDate = new Date(),
+        stringArray = ['foo', 'bar'];
 
     beforeEach(module('onosApp'));
 
@@ -149,4 +150,20 @@
     it('isO(): the reference for object', function () {
         expect(fs.isO(someObject)).toBe(someObject);
     });
+
+    // === Tests for contains()
+    it('contains(): false for improper args', function () {
+        expect(fs.contains()).toBeFalsy();
+    });
+    it('contains(): false for non-array', function () {
+        expect(fs.contains(null, 1)).toBeFalsy();
+    });
+    it ('contains(): true for contained item', function () {
+        expect(fs.contains(someArray, 1)).toBeTruthy();
+        expect(fs.contains(stringArray, 'bar')).toBeTruthy();
+    });
+    it ('contains(): false for non-contained item', function () {
+        expect(fs.contains(someArray, 109)).toBeFalsy();
+        expect(fs.contains(stringArray, 'zonko')).toBeFalsy();
+    });
 });