blob: f0a2ec5f81a47cba49cb5f368115d39743cbe4c4 [file] [log] [blame]
<html>
<head>
<base href="/inspector-debug/"></base>
<script src="/inspector-debug/Runtime.js"></script>
<script src="/inspector-unit/inspector-unit-test.js"></script>
<script>
function test() {
var trie;
UnitTest.runTests([
function testAddWord()
{
var trie = new WebInspector.Trie();
addWord(trie, "hello");
hasWord(trie, "he");
hasWord(trie, "hello");
hasWord(trie, "helloo");
},
function testAddWords()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
addWord(trie, "bar");
addWord(trie, "bazz");
hasWord(trie, "f");
hasWord(trie, "ba");
hasWord(trie, "baz");
hasWord(trie, "bar");
hasWord(trie, "bazz");
},
function testRemoveWord()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
removeWord(trie, "f");
removeWord(trie, "fo");
removeWord(trie, "fooo");
hasWord(trie, "foo");
removeWord(trie, "foo");
hasWord(trie, "foo");
},
function testAddAfterRemove()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
removeWord(trie, "foo");
addWord(trie, "bar");
hasWord(trie, "foo");
hasWord(trie, "bar");
},
function testWordOverwrite()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
addWord(trie, "foo");
removeWord(trie, "foo");
hasWord(trie, "foo");
},
function testRemoveNonExisting()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
removeWord(trie, "bar");
removeWord(trie, "baz");
hasWord(trie, "foo");
},
function testEmptyWord()
{
var trie = new WebInspector.Trie();
addWord(trie, "");
hasWord(trie, "");
removeWord(trie, "");
hasWord(trie, "");
},
function testAllWords()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
addWord(trie, "bar");
addWord(trie, "bazzz");
words(trie);
words(trie, "f");
words(trie, "g");
words(trie, "b");
words(trie, "ba");
words(trie, "bar");
words(trie, "barz");
words(trie, "baz");
},
function testOneCharWords()
{
var trie = new WebInspector.Trie();
addWord(trie, "a");
addWord(trie, "b");
addWord(trie, "c");
words(trie);
},
function testChainWords()
{
var trie = new WebInspector.Trie();
addWord(trie, "f");
addWord(trie, "fo");
addWord(trie, "foo");
addWord(trie, "foo");
words(trie);
},
function testClearTrie()
{
var trie = new WebInspector.Trie();
addWord(trie, "foo");
addWord(trie, "bar");
words(trie);
clear(trie);
words(trie);
},
function testLongestPrefix()
{
var trie = new WebInspector.Trie();
addWord(trie, "fo");
addWord(trie, "food");
longestPrefix(trie, "fear", false);
longestPrefix(trie, "fear", true);
longestPrefix(trie, "football", false);
longestPrefix(trie, "football", true);
longestPrefix(trie, "bar", false);
longestPrefix(trie, "bar", true);
longestPrefix(trie, "foo", false);
longestPrefix(trie, "foo", true);
},
]);
function hasWord(trie, word)
{
UnitTest.addResult(`trie.has("${word}") = ${trie.has(word)}`);
}
function addWord(trie, word)
{
UnitTest.addResult(`trie.add("${word}")`);
trie.add(word);
}
function removeWord(trie, word)
{
UnitTest.addResult(`trie.remove("${word}") = ${trie.remove(word)}`);
}
function words(trie, prefix)
{
var title = prefix ? `trie.words("${prefix}")` : `trie.words()`;
var words = trie.words(prefix);
var text = words.length ? `[\n ${words.join(",\n ")}\n]` : "[]";
UnitTest.addResult(title + " = " + text);
}
function clear(trie)
{
trie.clear();
UnitTest.addResult("trie.clear()");
}
function longestPrefix(trie, word, fullWordOnly)
{
UnitTest.addResult(`trie.longestPrefix("${word}", ${fullWordOnly}) = "${trie.longestPrefix(word, fullWordOnly)}"`);
}
}
</script>
</head>
<body>
Verify "trie" functionality.
</body>
</html>