occurrences QUnit

Unit test

by Victor

HTML

<script src="https://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.12.0.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<script src="https://rawgit.com/victornpb/7736865/raw/a49ce04c7104651118c07a6542710908a4e1591a/occurrences.js"></script>
<a href="http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string/7924240#7924240">stackoverflow question</a>
<br>
<a href="https://gist.github.com/victornpb/7736865">gist.github.com/victornpb/7736865</a>

<hr>

<div id="qunit"></div>
<div id="qunit-fixture"></div>

JavaScript

/*
  https://gist.github.com/victornpb/7736865
  http://stackoverflow.com/questions/4009756/how-to-count-string-occurrence-in-string/7924240#7924240
*/

test("empty substring", function() {
  equal(occurrences("", ""), 1);
  equal(occurrences("abc", ""), 4);
});

test("single occurences", function() {
  equal(occurrences("foo", "foo"), 1);
  equal(occurrences("blahfooblah", "foo"), 1);
  equal(occurrences("foo", "f"), 1);
});

test("multiple occurrences", function() {
  equal(occurrences("foofoofoofoo", "foo"), 4);
  equal(occurrences("foofoofoofoo", "foofoo"), 2);
  equal(occurrences("blafooblahfooblah", "foo"), 2);
  equal(occurrences("foofoofooooofo", "foo"), 3);
});

test("no occurrences", function() {
  equal(occurrences("", "foo"), 0);
  equal(occurrences("abc", "foo"), 0);
  equal(occurrences("boo", "foo"), 0);
});

test("overlap", function() {
  equal(occurrences("", "", true), 1);
  equal(occurrences("abc", "", true), 4);
  equal(occurrences("foofoofoofoo", "foofoo", true), 3);
  equal(occurrences("blafooblahfooblah", "foo", true), 2);
  equal(occurrences("foofoofooooofo", "foo", true), 3);
});

test("overlap no occurrences", function() {
  equal(occurrences("", "foo", true), 0);
  equal(occurrences("abc", "foo", true), 0);
  equal(occurrences("boo", "foo", true), 0);
  equal(occurrences("fooofooofooofoo", "foofoo", true), 0);
  equal(occurrences("blafobooblahfoboblah", "foo", true), 0);
  equal(occurrences("fofofofaooooofo", "foo", true), 0);
});