# test.govlab/stats/core/selectors/source.selector.test.ts

> 12 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-stats-core-selectors-source-selector-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/stats/core/selectors/source.selector.test.ts.txt

Listed in [test.govlab/stats/core/selectors](https://banes-lab.com/api/source/testing/test.govlab/stats/core/selectors.md), after [test.govlab/stats/core/selectors/metric.selector.test.ts](https://banes-lab.com/source/testing/test.govlab/stats/core/selectors/metric.selector.test.ts.md).

## Contained in

- [test.govlab/stats/core/selectors](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-stats-core-selectors.md)

## Source

```typescript
import { EXTENSION_DOT, NO_EXTENSION } from "@govlab/stats/configuration/constants/source.constants.ts";
import { describe, expect, it } from "vitest";
import { extensionOf, posixOf } from "@govlab/stats/core/selectors/source.selector.ts";
import { join } from "node:path";

describe("extensionOf and posixOf", () => {
    it("lower-case the extension, name a file without one, and join a path with forward slashes", () => {
        expect(extensionOf("A.TS")).toBe(`${EXTENSION_DOT}ts`);
        expect(extensionOf(".profile")).toBe(NO_EXTENSION);
        expect(extensionOf("Makefile")).toBe(NO_EXTENSION);
        expect(posixOf(join("a", "b"))).toBe("a/b");
    });
});
```
