<html>

<head>
<!-- Change Me -->
<script language="JavaScript" src="jsUnitCore.js"></script>
<script language="JavaScript" src="luceneQueryEscaper.js"></script>
</head>
<body>
<script>
function testGetQueryValue()
{
  var str = "The quick brown fox jumped over the lazy dog";
  document.test.foobar.value = str;
  assertEquals("Not getting field value correctly", str, getQueryValue(document.test.foobar));
  assertEquals("Not getting string value correctly", str, getQueryValue(str));
}

function testNormalString()
{
  var str = "The quick brown fox jumped over the lazy dog";
  assertEquals("Should not be escaping", str, escapeAsterisk(str));
  assertEquals("Should not be escaping", str, escapeQuotes(str));
  assertEquals("Should not be escaping", str, escapeColon(str));
  assertEquals("Should not be escaping", str, escapeQuestionMark(str));
  assertEquals("Should not be escaping", str, escapeExclamationMark(str));
}

function testEscapeAsterisk()
{
  var str = "foo*";
  assertEquals("Not escaping " + str, "foo\\*", escapeAsterisk(str));
  
  str = " foo bar *";
  assertEquals("Not escaping " + str, " foo bar \\*", escapeAsterisk(str));
  
  str = "foo* bar*";
  assertEquals("Not escaping " + str, "foo\\* bar\\*", escapeAsterisk(str));  
}

function testEscapeQuotes()
{
  var str = "\"foo\"";
  assertEquals("Not escaping " + str, "\\\"foo\\\"", escapeQuotes(str));
}

function testEscapeColon()
{
  var str = "foo:bar zoo:zaa";
  assertEquals("Not escaping " + str, "foo\\:bar zoo\\:zaa", escapeColon(str));
}

function testEscapeQuestionMark()
{
  var str = "foo? bar?";
  assertEquals("Not escaping " + str, "foo\\? bar\\?", escapeQuestionMark(str));
}

function testEscapeExclamationMark()
{
  var str = "foo! bar!";
  assertEquals("Not escaping " + str, "foo\\! bar\\!", escapeExclamationMark(str));
}

function testEscapeParentheses()
{
  var str = "foo (bar) (me)";
  assertEquals("Not escaping " + str, "foo \\(bar\\) \\(me\\)", escapeParentheses(str));
}

function testEscapeSquareBrackets()
{
  var str = "foo [bar] [me]";
  assertEquals("Not escaping " + str, "foo \\[bar\\] \\[me\\]", escapeSquareBrackets(str));
}

function testEscapeBraces()
{
  var str = "foo {bar} {me}";
  assertEquals("Not escaping " + str, "foo \\{bar\\} \\{me\\}", escapeBraces(str));
}

function testEscapeCaret()
{
  var str = "f^oo bar^ me";
  assertEquals("Not escaping " + str, "f\\^oo bar\\^ me", escapeCaret(str));
}

function testEscapeSquiggle()
{
  var str = "f~oo bar~ me";
  assertEquals("Not escaping " + str, "f\\~oo bar\\~ me", escapeSquiggle(str));
}

function testEscapeDoubleAmpersands()
{
  var str = "foo && bar me";
  assertEquals("Not escaping " + str, "foo \\&\\& bar me", escapeDoubleAmpersands(str));

  str = "foo && bar& m&e";
  assertEquals("Not escaping " + str, "foo \\&\\& bar& m&e", escapeDoubleAmpersands(str));
}

function testEscapeDoubleBars()
{
  var str = "foo || bar me";
  assertEquals("Not escaping " + str, "foo \\|\\| bar me", escapeDoubleBars(str));
}

function testDoEscapeQuery()
{
  var str = "The: quick*} {~brown? ^fox! (jumped:[over] || me) \"the && lazy: dog\"";
  assertEquals("Not escaping " + str, "The\\: quick\\*\\} \\{\\~brown\\? \\^fox\\! \\(jumped\\:\\[over\\] \\|\\| me\\) \\\"the \\&\\& lazy\\: dog\\\"", doEscapeQuery(str));
}


</script>
<form name="test">
<input type="text" name="foobar">
</form>
</body>
</html>