<!DOCTYPE html>
<title>Badging: Supported values</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>

promise_test(async t => {
  const result = await navigator.setAppBadge();
  assert_equals(result, undefined);
}, "No parameter should show a flag with no numeric value.");

promise_test(async t => {
  const result = await navigator.setAppBadge(undefined);
  assert_equals(result, undefined);
}, "undefined should show a flag with no numeric value.");

promise_test(async t => {
  const result = await navigator.setAppBadge(1);
  assert_equals(result, undefined);
}, "An integer value of 3 should show the badge vale 3.");

promise_test(async t => {
  const result = await navigator.setAppBadge(10.6);
  assert_equals(result, undefined);
}, "Non-whole number should round down to nearest integer (10).");

promise_test(async t => {
  const result = await navigator.setAppBadge(Number.MAX_SAFE_INTEGER);
  assert_equals(result, undefined);
}, "Maximum allowed value (2^53 - 1) should display saturated value: '99+'.");

promise_test(async t => {
  const result = await navigator.setAppBadge(0);
  assert_equals(result, undefined);
}, "Set to zero should clear the badge.");

promise_test(async t => {
  const result = await navigator.clearAppBadge();
  assert_equals(result, undefined);
}, "Should clear the badge.");

promise_test(async t => {
  const result = await navigator.setAppBadge(null);
  assert_equals(result, undefined);
}, "Setting to null should clear the badge.");

promise_test(async t => {
  const result = await navigator.setAppBadge(false);
  assert_equals(result, undefined);
}, "Setting to false should clear the badge.");

promise_test(async t => {
  const result = await navigator.setAppBadge(true);
  assert_equals(result, undefined);
}, "Setting to true should display a value of 1.");

promise_test(async t => {
  const result = await navigator.setAppBadge("3");
  assert_equals(result, undefined);
}, "Setting to the string '3' should display a value of 3.");

</script>
