string-concatenation.js 1.0 KB

123456789101112131415161718192021222324252627282930
  1. test("adding strings", () => {
  2. expect("" + "").toBe("");
  3. expect("ab" + "").toBe("ab");
  4. expect("" + "cd").toBe("cd");
  5. expect("ab" + "cd").toBe("abcd");
  6. });
  7. test("adding strings with non-strings", () => {
  8. expect("a" + 1).toBe("a1");
  9. expect(1 + "a").toBe("1a");
  10. expect("a" + {}).toBe("a[object Object]");
  11. expect({} + "a").toBeNaN();
  12. expect("a" + []).toBe("a");
  13. expect([] + "a").toBe("a");
  14. expect("a" + NaN).toBe("aNaN");
  15. expect(NaN + "a").toBe("NaNa");
  16. expect(Array(16).join([[][[]] + []][+[]][++[+[]][+[]]] - 1) + " Batman!").toBe(
  17. "NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaN Batman!"
  18. );
  19. });
  20. test("adding strings with dangling surrogates", () => {
  21. expect("\ud834" + "").toBe("\ud834");
  22. expect("" + "\udf06").toBe("\udf06");
  23. expect("\ud834" + "\udf06").toBe("𝌆");
  24. expect("\ud834" + "\ud834").toBe("\ud834\ud834");
  25. expect("\udf06" + "\udf06").toBe("\udf06\udf06");
  26. expect("\ud834a" + "\udf06").toBe("\ud834a\udf06");
  27. expect("\ud834" + "a\udf06").toBe("\ud834a\udf06");
  28. });