| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { describe, expect, test } from "bun:test"
- import { createRoot } from "solid-js"
- import { createRefCountMap } from "./refcount"
- import { pathKey } from "./path-key"
- describe("createRefCountMap", () => {
- test("removes an item after its last owner is disposed", () => {
- const removed: string[] = []
- const map = createRefCountMap(
- (key) => key,
- (key) => removed.push(key),
- )
- const first = createRoot((dispose) => {
- map("/project")
- return dispose
- })
- const second = createRoot((dispose) => {
- map("/project")
- return dispose
- })
- first()
- expect(removed).toEqual([])
- second()
- expect(removed).toEqual(["/project"])
- })
- test("keeps equivalent path consumers until the last owner is disposed", () => {
- const removed: string[] = []
- const map = createRefCountMap(
- (key) => key,
- (key) => removed.push(key),
- pathKey,
- )
- const first = createRoot((dispose) => {
- map("C:\\repo")
- return dispose
- })
- const second = createRoot((dispose) => {
- map("C:/repo/")
- return dispose
- })
- first()
- expect(removed).toEqual([])
- second()
- expect(removed).toEqual(["C:/repo"])
- })
- })
|