/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Test that messages are properly updated when the log limit is reached.

const TEST_URI =
  "data:text/html;charset=utf-8,Web Console test for " +
  "Old messages are removed after passing devtools.hud.loglimit";

add_task(async function() {
  await pushPref("devtools.hud.loglimit", 140);
  const hud = await openNewTabAndConsole(TEST_URI);
  await clearOutput(hud);

  let onMessage = waitForMessage(hud, "test message [149]");
  SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function() {
    for (let i = 0; i < 150; i++) {
      content.console.log(`test message [${i}]`);
    }
  });
  await onMessage;

  ok(!findMessage(hud, "test message [0]"), "Message 0 has been pruned");
  ok(!findMessage(hud, "test message [9]"), "Message 9 has been pruned");
  ok(findMessage(hud, "test message [10]"), "Message 10 is still displayed");
  is(
    findMessages(hud, "").length,
    140,
    "Number of displayed messages is correct"
  );

  onMessage = waitForMessage(hud, "hello world");
  SpecialPowers.spawn(gBrowser.selectedBrowser, [], async function() {
    content.console.log("hello world");
  });
  await onMessage;

  ok(!findMessage(hud, "test message [10]"), "Message 10 has been pruned");
  ok(findMessage(hud, "test message [11]"), "Message 11 is still displayed");
  is(
    findMessages(hud, "").length,
    140,
    "Number of displayed messages is still correct"
  );
});
