GUI: trie utility operations, and test code.
Change-Id: I7f41d84b880a8e2075cf1c983be9a4a2def01856
diff --git a/web/gui/src/main/webapp/_sdh/trie-test.html b/web/gui/src/main/webapp/_sdh/trie-test.html
new file mode 100644
index 0000000..2d6517a
--- /dev/null
+++ b/web/gui/src/main/webapp/_sdh/trie-test.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<!--
+ ~ Copyright 2016 Open Networking Laboratory
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!--
+ ONOS -- Sample use of trie functions in fn.js
+ -->
+
+<html>
+<head lang="en">
+ <meta charset="UTF-8">
+ <title>Test Trie Functions</title>
+
+ <script type="text/javascript" src="../tp/angular.js"></script>
+ <script type="text/javascript" src="../tp/angular-route.js"></script>
+
+ <script type="text/javascript" src="../tp/d3.js"></script>
+
+ <script type="text/javascript" src="../app/fw/util/util.js"></script>
+ <script type="text/javascript" src="../app/fw/util/fn.js"></script>
+
+ <script type="text/javascript" src="trie-test.js"></script>
+
+ <link rel="stylesheet" href="../app/common.css">
+
+ <style>
+ html,
+ body {
+ background-color: #ddf;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 9pt;
+ }
+
+ h2 {
+ color: darkred;
+ }
+
+ #output div {
+ font-family: monospace;
+ white-space: pre;
+ }
+ </style>
+
+</head>
+
+<!-- outline for using a controller in Angular -->
+<body class="light" ng-app="trie" ng-controller="OvTrieTest as ctrl">
+ <h2>Testing the Trie Functions</h2>
+ <div id="output"></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/web/gui/src/main/webapp/_sdh/trie-test.js b/web/gui/src/main/webapp/_sdh/trie-test.js
new file mode 100644
index 0000000..2c8716c
--- /dev/null
+++ b/web/gui/src/main/webapp/_sdh/trie-test.js
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ ONOS GUI -- Test code illustrating use of trie functions
+ */
+
+(function () {
+ 'use strict';
+
+ // injected refs
+ var $log, fs;
+
+ // internal state
+ var out,
+ trie = {},
+ counter = 5000;
+
+ function write(string) {
+ out.append('div').text(string);
+ }
+
+ function lookup(word) {
+ var result = fs.trieLookup(trie, word),
+ f = fs.isF(result),
+ show = f ? '{function}' : result;
+
+
+ write('------> ' + word + ' ==> ' + show);
+
+ f && f();
+ }
+
+ function add(word, data) {
+ var result = fs.addToTrie(trie, word, data);
+ write(' ADD> ' + word + ' [' + data + '] ==> ' + result);
+ }
+
+ function remove(word) {
+ var result = fs.removeFromTrie(trie, word);
+ write('REMOVE> ' + word + ' ==> ' + result);
+ }
+
+ function func1() {
+ counter++;
+ write('** function call ** ' + counter);
+ }
+
+ function func2() {
+ counter += 11;
+ write('** alternate call ** ' + counter);
+ }
+
+ function runTests() {
+ lookup('cat');
+
+ add('cat', 101);
+
+ lookup('ca');
+ lookup('cat');
+ lookup('cats');
+
+ add('cab', 103);
+ add('cog', 105);
+
+ lookup('cut');
+ lookup('cab');
+
+ remove('cab');
+
+ lookup('cab');
+ lookup('cat');
+
+ add('fun', func1);
+
+ lookup('fun');
+ lookup('fun');
+ lookup('fun');
+ lookup('cat');
+ lookup('fun');
+
+ add('fun', func2);
+
+ lookup('fun');
+ lookup('fun');
+ lookup('fun');
+
+ remove('fun');
+
+ lookup('fun');
+ }
+
+ angular.module('trie', ['onosUtil'])
+ .controller('OvTrieTest', ['$log', 'FnService',
+
+ function (_$log_, _fs_) {
+ $log = _$log_;
+ fs = _fs_;
+ out = d3.select('#output');
+
+ runTests();
+ }]);
+}());