Source code

Revision control

Copy as Markdown

Other Tools

/* Any copyright is dedicated to the Public Domain.
/**
* Tests the pageFrecencyThreshold() API invariants.
* As the algorithm will evolve in time, it is not checking absolute values,
* but rather their relative size.
*/
"use strict";
add_task(async function test_basic_invariants() {
let noVisitsNoBookmark = PlacesUtils.history.pageFrecencyThreshold(
0,
0,
false
);
Assert.equal(
noVisitsNoBookmark,
0,
"Pages with no visits and no bookmark should have zero frecency threshold."
);
let unvisitedBookmark = PlacesUtils.history.pageFrecencyThreshold(0, 0, true);
Assert.greater(
unvisitedBookmark,
0,
"Unvisited bookmark should have a non-zero frecency threshold."
);
let visitedBookmark = PlacesUtils.history.pageFrecencyThreshold(1, 1, true);
Assert.greater(
visitedBookmark,
unvisitedBookmark,
"Visited bookmark should have higher frecency threshold than unvisited bookmark."
);
let visitedNonBookmark = PlacesUtils.history.pageFrecencyThreshold(
1,
1,
false
);
Assert.greater(
visitedBookmark,
visitedNonBookmark,
"Visited bookmark should have higher frecency threshold than visited non bookmark."
);
let manyVisits = PlacesUtils.history.pageFrecencyThreshold(1, 10, false);
Assert.greater(
manyVisits,
visitedNonBookmark,
"Page with many visits should have higher frecency threshold than a page with a single visit."
);
let pastVisits = PlacesUtils.history.pageFrecencyThreshold(60, 10, false);
Assert.greater(
manyVisits,
pastVisits,
"Recent visits should have a higher frecency threshold than older visits."
);
let result1 = PlacesUtils.history.pageFrecencyThreshold(1, 10, false);
let result2 = PlacesUtils.history.pageFrecencyThreshold(1, 10, false);
Assert.equal(
result1,
result2,
"Same parameters should return a consistent frecency threshold."
);
let massiveVisits = PlacesUtils.history.pageFrecencyThreshold(1, 5000, false);
Assert.greater(
massiveVisits,
manyVisits,
"Very large number of visits should continue to increase frecency threshold."
);
});
add_task(async function test_invalid_parameters() {
Assert.throws(
() => {
PlacesUtils.history.pageFrecencyThreshold(-1, 0, false);
},
/NS_ERROR_ILLEGAL_VALUE/,
"Should throw when visit date is negative."
);
Assert.throws(
() => {
PlacesUtils.history.pageFrecencyThreshold(0, -1, false);
},
/NS_ERROR_ILLEGAL_VALUE/,
"Should throw when number of visits is negative."
);
});