<!DOCTYPE html>
<meta charset="utf-8">

<link href="../src/nv.d3.css" rel="stylesheet" type="text/css">
<link href="teststyle.css" rel="stylesheet" type='text/css'>

<body>
  <h3>Unit tests for nv.interactiveBisect - this function is important for rendering tooltips and the guideline on charts.</h3>
  <div class='navigation'>
      Tests:
      <a href="lineChartTest.html">Line Chart</a>
      <a href="stackedAreaChartTest.html">Stacked Area</a>
      <a href="../examples/cumulativeLineChart.html">Cumulative Line</a>
  </div>

<script src="../lib/d3.v3.js"></script>
<script src="../nv.d3.js"></script>
<script src="../src/interactiveLayer.js"></script>

<script>
function runTest(description, dataArray, searchVal, expectedResult, xAccessor) {
    var result = nv.interactiveBisect(dataArray, searchVal, xAccessor);
    var content = "";
    if (result === expectedResult) {
        content = "PASSED: " + description;
    }
    else {
        content = "FAILED: " + description;
    }

    var node = document.createElement("div");
    node.innerHTML = content;
    document.getElementsByTagName("body")[0].appendChild(node);
}

var x = function(d) {return d;};

runTest("Basic test",
      [0,1,2,3,4,5],
      3,
      3,
      x
  );

runTest("Basic test - zero bound",
      [0,1,2,3,4,5],
      0,
      0,
      x
  );

runTest("Basic test - length bound",
      [0,1,2,3,4,5],
      5,
      5,
      x
  );

runTest("Basic test - negative number",
      [0,1,2,3,4,5],
      -4,
      0,
      x
  );

runTest("Basic test - past the end",
      [0,1,2,3,4,5],
      10,
      5,
      x
  );

runTest("Floating point number",
      [0,1,2,3,4,5],
      0.34,
      0,
      x
  );

runTest("Floating point number part 2",
      [0,1,2,3,4,5],
      1.50001,
      2,
      x
  );

runTest("Fibonacci - existing item search",
      [0,1,1,2,3,5,8,13,21,34],
      8,
      6,
      x
  );

runTest("Fibonacci - inbetween item (left)",
      [0,1,1,2,3,5,8,13,21,34],
      15,
      7,
      x
  );

runTest("Fibonacci - inbetween item (right)",
      [0,1,1,2,3,5,8,13,21,34],
      20,
      8,
      x
  );

x = function(d,i) { return i};

runTest("xAccessor is index mode - existing item",
      [0,1,1,2,3,5,8,13,21,34],
      7,
      7,
      x
  );

runTest("xAccessor is index mode - inbetween item",
      [0,1,1,2,3,5,8,13,21,34],
      7.3,
      7,
      x
  );

runTest("xAccessor is index mode - inbetween item part 2",
      [0,1,1,2,3,5,8,13,21,34],
      7.500001,
      8,
      x
  );

runTest("Empty array",
      [],
      4,
      0,
      x
  );

runTest("Single element array",
      [0],
      0,
      0,
      x
  );

runTest("Single element array - negative bound",
      [0],
      -10,
      0,
      x
  );

runTest("Single element array - past the end",
      [0],
      1,
      0,
      x
  );
</script>
