logical-nullish-coalescing.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. test("booleans", () => {
  2. expect(true ?? true).toBeTrue();
  3. expect(false ?? false).toBeFalse();
  4. expect(true ?? false).toBeTrue();
  5. expect(false ?? true).toBeFalse();
  6. });
  7. test("strings", () => {
  8. expect("" ?? "").toBe("");
  9. expect("" ?? false).toBe("");
  10. expect("" ?? true).toBe("");
  11. expect(false ?? "").toBeFalse();
  12. expect(true ?? "").toBeTrue();
  13. expect("foo" ?? "bar").toBe("foo");
  14. expect("foo" ?? false).toBe("foo");
  15. expect("foo" ?? true).toBe("foo");
  16. expect(false ?? "bar").toBeFalse();
  17. expect(true ?? "bar").toBeTrue();
  18. });
  19. test("numbers", () => {
  20. expect(false ?? 1 === 2).toBeFalse();
  21. expect(true ?? 1 === 2).toBeTrue();
  22. expect(0 ?? false).toBe(0);
  23. expect(0 ?? true).toBe(0);
  24. expect(42 ?? false).toBe(42);
  25. expect(42 ?? true).toBe(42);
  26. expect(false ?? 0).toBeFalse();
  27. expect(true ?? 0).toBeTrue();
  28. expect(false ?? 42).toBeFalse();
  29. expect(true ?? 42).toBeTrue();
  30. });
  31. test("objects", () => {
  32. expect([] ?? false).toHaveLength(0);
  33. expect([] ?? true).toHaveLength(0);
  34. expect(false ?? []).toBeFalse();
  35. expect(true ?? []).toBeTrue();
  36. });
  37. test("null & undefined", () => {
  38. expect(null ?? false).toBeFalse();
  39. expect(null ?? true).toBeTrue();
  40. expect(false ?? null).toBeFalse();
  41. expect(true ?? null).toBeTrue();
  42. expect(undefined ?? false).toBeFalse();
  43. expect(undefined ?? true).toBeTrue();
  44. expect(false ?? undefined).toBeFalse();
  45. expect(true ?? undefined).toBeTrue();
  46. });