js/src/jsapi-tests/testIntString.cpp
author Mozilla Releng Treescript <release+treescript@mozilla.org>
Sat, 25 Jun 2022 19:02:59 +0000
changeset 622090 c9b65d44600ac04887d0dcf6242c5d98fe7bd242
parent 592886 ba3814055b373a2a5d1b1a191837dbacaf739c6b
permissions -rw-r--r--
no bug - Bumping Firefox l10n changesets r=release a=l10n-bump DONTBUILD el -> 58cf40fbc7269bbf9fada1253ec8f011507a992f it -> 31a83f189f50d61cf1cf21a2215cd158c27cdc9c ro -> de1113d8613b112c14d8e75a3e1e0ce7b1a6236e ru -> ebb41fc34812cd2b60b9d71d4131620e5be1cbd3 sl -> f13ec224df213c09e026461144f137d231bd6fd0 tg -> 8584c83ca1fe45406ba32353ae7e76c98d026363 zh-CN -> 09b635a976c6192dccb652bb137867db8b16f722

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 * vim: set ts=8 sts=2 et sw=2 tw=80:
 */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "jsapi-tests/tests.h"

BEGIN_TEST(testIntString_bug515273) {
  JS::RootedValue v(cx);

  EVAL("'1';", &v);
  JSString* str = v.toString();
  CHECK(JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str), "1"));

  EVAL("'42';", &v);
  str = v.toString();
  CHECK(JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str), "42"));

  // Short string literal should use atom.
  EVAL("'111';", &v);
  str = v.toString();
  CHECK(JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str), "111"));

  // Long string literal shouldn't use atom, but just linear string.
  EVAL("'111222333';", &v);
  str = v.toString();
  CHECK(!JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str),
                                     "111222333"));

  /* Test other types of static strings. */
  EVAL("'a';", &v);
  str = v.toString();
  CHECK(JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str), "a"));

  EVAL("'bc';", &v);
  str = v.toString();
  CHECK(JS_StringHasBeenPinned(cx, str));
  CHECK(JS_LinearStringEqualsLiteral(JS_ASSERT_STRING_IS_LINEAR(str), "bc"));

  return true;
}
END_TEST(testIntString_bug515273)