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

"use strict";

add_task(function test_constructor() {
  Assert.throws(
    () => new UrlbarQueryContext(),
    /Missing or empty allowAutofill provided to UrlbarQueryContext/,
    "Should throw with no arguments"
  );

  Assert.throws(
    () =>
      new UrlbarQueryContext({
        allowAutofill: true,
        isPrivate: false,
        searchString: "foo",
      }),
    /Missing or empty maxResults provided to UrlbarQueryContext/,
    "Should throw with a missing maxResults parameter"
  );

  Assert.throws(
    () =>
      new UrlbarQueryContext({
        allowAutofill: true,
        maxResults: 1,
        searchString: "foo",
      }),
    /Missing or empty isPrivate provided to UrlbarQueryContext/,
    "Should throw with a missing isPrivate parameter"
  );

  Assert.throws(
    () =>
      new UrlbarQueryContext({
        isPrivate: false,
        maxResults: 1,
        searchString: "foo",
      }),
    /Missing or empty allowAutofill provided to UrlbarQueryContext/,
    "Should throw with a missing allowAutofill parameter"
  );

  let qc = new UrlbarQueryContext({
    allowAutofill: false,
    isPrivate: true,
    maxResults: 1,
    searchString: "foo",
  });

  Assert.strictEqual(
    qc.allowAutofill,
    false,
    "Should have saved the correct value for allowAutofill"
  );
  Assert.strictEqual(
    qc.isPrivate,
    true,
    "Should have saved the correct value for isPrivate"
  );
  Assert.equal(
    qc.maxResults,
    1,
    "Should have saved the correct value for maxResults"
  );
  Assert.equal(
    qc.searchString,
    "foo",
    "Should have saved the correct value for searchString"
  );
});
